Issues compiling thermal examples with GPU
OpenLB – Open Source Lattice Boltzmann Code › Forums › on OpenLB › General Topics › Issues compiling thermal examples with GPU
- This topic has 1 reply, 2 voices, and was last updated 2 years, 4 months ago by Adrian.
-
AuthorPosts
-
May 9, 2022 at 12:46 pm #6554jflorezgiParticipant
Hi OpenLB team, I’ve been running the examples listed in the OpenLB guide without compilation problems, but now I’m trying to compile thermal examples (e.g. rayleighBenard3d) and I’m getting several compilation errors mostly related to setBoundaries3D.h, setAdvectionDiffusionTemperatureBoundary3D.hh headers, among others. I appreciate the help to solve these issues, my work is focused on simulating thermal processes and I hope to take advantage of the benefits of the new release. Some errors are shown here,
make -C ../../../external
make[1]: Entering directory ‘/home/jflorez/proyecto/olb-1.5r0/external’
make -C zlib
make[2]: Entering directory ‘/home/jflorez/proyecto/olb-1.5r0/external/zlib’
make[2]: Nothing to be done for ‘all’.
make[2]: Leaving directory ‘/home/jflorez/proyecto/olb-1.5r0/external/zlib’
cp zlib/build/libz.a lib/
make -C tinyxml
make[2]: Entering directory ‘/home/jflorez/proyecto/olb-1.5r0/external/tinyxml’
make[2]: Nothing to be done for ‘all’.
make[2]: Leaving directory ‘/home/jflorez/proyecto/olb-1.5r0/external/tinyxml’
cp tinyxml/build/libtinyxml.a lib/
make[1]: Leaving directory ‘/home/jflorez/proyecto/olb-1.5r0/external’
nvcc -O3 -std=c++17 –generate-code=arch=compute_75,code=[compute_75,sm_75] –extended-lambda –expt-relaxed-constexpr -x cu -Xcudafe “–diag_suppress=implicit_return_from_non_void_function –display_error_number –diag_suppress=20014 –diag_suppress=20011” -DPLATFORM_CPU_SISD -DPLATFORM_GPU_CUDA -I../../../src -I../../../external/zlib -I../../../external/tinyxml -c -o rayleighBenard3d.o rayleighBenard3d.cpp
../../../src/core/thermalUnitConverter.h(54): warning #611-D: overloaded virtual function “olb::UnitConverterBase::print” is only partially overridden in class “olb::ThermalUnitConverter<T, NSDESCRIPTOR, TDESCRIPTOR>”
detected during instantiation of class “olb::ThermalUnitConverter<T, DESCRIPTOR, ThermalLattice> [with T=T, DESCRIPTOR=NSDESCRIPTOR, ThermalLattice=TDESCRIPTOR]”
rayleighBenard3d.cpp(71): here../../../src/boundary/advectionDiffusionBoundaries.h(272): error: execution space mismatch: overridden entity (function “olb::Dynamics<T, DESCRIPTOR>::computeEquilibrium [with T=T, DESCRIPTOR=TDESCRIPTOR]”) is a __host__ __device__ function, but overriding entity (function “olb::AdvectionDiffusionCornerDynamics3D<T, DESCRIPTOR, DYNAMICS, MOMENTA, xNormal, yNormal, zNormal>::computeEquilibrium [with T=T, DESCRIPTOR=TDESCRIPTOR, DYNAMICS=olb::dynamics::Tuple<T, TDESCRIPTOR, olb::momenta::Tuple<olb::momenta::BulkDensity, olb::momenta::BulkMomentum, olb::momenta::NoStress, olb::momenta::DefineToEq>, olb::equilibria::FirstOrder, olb::collision::AdvectionDiffusionRLB, olb::AdvectionDiffusionExternalVelocityCollision>, MOMENTA=olb::momenta::EquilibriumBoundaryTuple, xNormal=1, yNormal=1, zNormal=1]”) is a __host__ function
detected during:
instantiation of class “olb::AdvectionDiffusionCornerDynamics3D<T, DESCRIPTOR, DYNAMICS, MOMENTA, xNormal, yNormal, zNormal> [with T=T, DESCRIPTOR=TDESCRIPTOR, DYNAMICS=olb::dynamics::Tuple<T, TDESCRIPTOR, olb::momenta::Tuple<olb::momenta::BulkDensity, olb::momenta::BulkMomentum, olb::momenta::NoStress, olb::momenta::DefineToEq>, olb::equilibria::FirstOrder, olb::collision::AdvectionDiffusionRLB, olb::AdvectionDiffusionExternalVelocityCollision>, MOMENTA=olb::momenta::EquilibriumBoundaryTuple, xNormal=1, yNormal=1, zNormal=1]”
../../../src/boundary/setBoundary3D.h(123): here
instantiation of “olb::DynamicsPromise<T, DESCRIPTOR> olb::boundaryhelper::constructConcreteDynamicsForNormal<T,DESCRIPTOR,DYNAMICS>(olb::Vector<int, 3U>) [with T=T, DESCRIPTOR=TDESCRIPTOR, DYNAMICS=olb::boundaryhelper::NormalMixinDynamicsForPlainMomenta<T, TDESCRIPTOR, olb::AdvectionDiffusionCornerDynamics3D, olb::dynamics::Tuple<T, TDESCRIPTOR, olb::momenta::Tuple<olb::momenta::BulkDensity, olb::momenta::BulkMomentum, olb::momenta::NoStress, olb::momenta::DefineToEq>, olb::equilibria::FirstOrder, olb::collision::AdvectionDiffusionRLB, olb::AdvectionDiffusionExternalVelocityCollision>, olb::momenta::EquilibriumBoundaryTuple>::ConcreteDynamics]”
../../../src/boundary/setAdvectionDiffusionTemperatureBoundary3D.hh(99): here
instantiation of “void olb::setAdvectionDiffusionTemperatureBoundary<T,DESCRIPTOR,MixinDynamics>(olb::BlockLattice<T, DESCRIPTOR> &, olb::BlockIndicatorF3D<T> &, T, __nv_bool) [with T=T, DESCRIPTOR=TDESCRIPTOR, MixinDynamics=olb::dynamics::Tuple<T, TDESCRIPTOR, olb::momenta::Tuple<olb::momenta::BulkDensity, olb::momenta::BulkMomentum, olb::momenta::NoStress, olb::momenta::DefineToEq>, olb::equilibria::FirstOrder, olb::collision::AdvectionDiffusionRLB, olb::AdvectionDiffusionExternalVelocityCollision>]”
../../../src/boundary/setAdvectionDiffusionTemperatureBoundary3D.hh(54): here
instantiation of “void olb::setAdvectionDiffusionTemperatureBoundary(olb::SuperLattice<T, DESCRIPTOR> &, T, olb::FunctorPtr<olb::SuperIndicatorF3D<T>> &&) [with T=T, DESCRIPTOR=TDESCRIPTOR, MixinDynamics=olb::dynamics::Tuple<T, TDESCRIPTOR, olb::momenta::Tuple<olb::momenta::BulkDensity, olb::momenta::BulkMomentum, olb::momenta::NoStress, olb::momenta::DefineToEq>, olb::equilibria::FirstOrder, olb::collision::AdvectionDiffusionRLB, olb::AdvectionDiffusionExternalVelocityCollision>]”
../../../src/boundary/setAdvectionDiffusionTemperatureBoundary3D.hh(37): here
instantiation of “void olb::setAdvectionDiffusionTemperatureBoundary(olb::SuperLattice<T, DESCRIPTOR> &, T, olb::SuperGeometry<T, 3U> &, int) [with T=T, DESCRIPTOR=TDESCRIPTOR, MixinDynamics=olb::dynamics::Tuple<T, TDESCRIPTOR, olb::momenta::Tuple<olb::momenta::BulkDensity, olb::momenta::BulkMomentum, olb::momenta::NoStress, olb::momenta::DefineToEq>, olb::equilibria::FirstOrder, olb::collision::AdvectionDiffusionRLB, olb::AdvectionDiffusionExternalVelocityCollision>]”
rayleighBenard3d.cpp(127): here../../../src/core/platform/gpu/cuda/dynamics.h(111): error: calling a __host__ function(“computeEquilibrium”) from a __device__ function(“computeEquilibrium”) is not allowed
detected during:
instantiation of “T olb::gpu::cuda::ConcreteDynamics<T, DESCRIPTOR, DYNAMICS>::computeEquilibrium(int, T, T *) [with T=T, DESCRIPTOR=TDESCRIPTOR, DYNAMICS=olb::AdvectionDiffusionCornerDynamics3D<T, TDESCRIPTOR, olb::dynamics::Tuple<T, TDESCRIPTOR, olb::momenta::Tuple<olb::momenta::BulkDensity, olb::momenta::BulkMomentum, olb::momenta::NoStress, olb::momenta::DefineToEq>, olb::equilibria::FirstOrder, olb::collision::AdvectionDiffusionRLB, olb::AdvectionDiffusionExternalVelocityCollision>, olb::momenta::EquilibriumBoundaryTuple, 1, 1, 1>]”…….May 9, 2022 at 3:12 pm #6555AdrianKeymasterThis is unfortunately expected as coupling support on GPUs did not make it into the release (Some further details in the release notes).
We are currently working on this and the first coupling examples (e.g. rayleighTaylor) are supported on GPUs in our development branch. The approach for coupling post processors is very similar to normal post processors so work is moving quickly and will definitely be included in the next release.
We’ll probably be able to provide you earlier access for joint development, feel free to contact me personally (via adrian.kummerlaender@kit.edu) for further discussions.
-
AuthorPosts
- You must be logged in to reply to this topic.