Skip to content

Issues compiling thermal examples with GPU

OpenLB – Open Source Lattice Boltzmann Code Forums on OpenLB General Topics Issues compiling thermal examples with GPU

Viewing 2 posts - 1 through 2 (of 2 total)
  • Author
    Posts
  • #6554
    jflorezgi
    Participant

    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>]”…….

    #6555
    Adrian
    Keymaster

    This 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.

Viewing 2 posts - 1 through 2 (of 2 total)
  • You must be logged in to reply to this topic.