Problem compiling ProjectChrono on Linux with CUDA 12.5

253 views
Skip to first unread message

MDP

unread,
Jun 12, 2024, 6:46:57 AM6/12/24
to ProjectChrono

Dear all,

I'm writing here to ask your help with my installation of ProjectChrono, that fails independently of the version.

Here the system: a Dell workstation with two NVIDIA RTX A4000, Ubuntu 22.04 LTS x64 (server) with CUDA 12.5 (installed with .deb method).
I want to run ProjectChrono 9.0.0 with lot of modules and, after installing CUDA (please see the attached file "dpkg_CUDA12.5_ProjectChrono9.0.0.txt"), I followed this procedure:

# Installing common required packages
sudo
apt install git cmake make automake g++ gcc mpich libeigen3-dev libirrlicht-dev swig python3-dev occt-misc libocct-data-exchange-dev libocct-draw-dev libocct-foundation-dev libocct-modeling-data-dev libocct-ocaf-dev libocct-visualization-dev libgl-dev libglew-dev libglfw3-dev libglm-dev

# Compiling Blaze for the MULTICORE module
sudo apt install libblas-dev liblapack-dev libboost-all-dev
wget https://bitbucket.org/blaze-lib/blaze/downloads/blaze-3.8.2.tar.gz tar
xvf blaze-3.8.2.tar.gz
mkdir blaze-3.8.2-build && cd blaze-3.8.2-build
cmake
../blaze-3.8.2 -DCMAKE_INSTALL_PREFIX=/usr/local/blaze-3.8.2
make && sudo make install

# Compiling DEM-Engine
git clone https://github.com/projectchrono/DEM-Engine.git
git submodule init
git submodule update
mkdir build && cd build
# Append in "/etc/profile"
#
# export CPATH=/usr/local/cuda/targets/x86_64-linux/include${CPATH:+:${CPATH}}
# export PATH=/usr/local/cuda/bin${PATH:+:${PATH}}
# export PATH=/usr/local/cuda/lib64/cmake${PATH:+:${PATH}}
# export LD_LIBRARY_PATH=/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
# export CUDA_HOME=/usr/local/cuda
cmake -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr/local/DEM-Engine \
..
make && sudo make install

# ProjectChrono itself
wget https://github.com/projectchrono/chrono/archive/refs/tags/9.0.0.tar.gz
tar xvf 9.0.0.tar.gz
mkdir chrono-9.0.0-build && cd chrono-9.0.0-build

cmake -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr/local/chrono-9.0.0 \
-DENABLE_MODULE_FSI=1 \
-DENABLE_MODULE_IRRLICHT=1 \
-DENABLE_MODULE_MATLAB=1 \
-DMATLAB_SDK_ROOT=/usr/local/MATLAB/R2023b/extern \
-DENABLE_MODULE_CASCADE=1 \
-DENABLE_MODULE_OPENGL=1 \
-DENABLE_MODULE_POSTPROCESS=1 \
-DENABLE_MODULE_PYTHON=1 \
-DPYTHON_INCLUDE_DIR=$(python3 -c "import sysconfig; print(sysconfig.get_path('include'))")  \
-DPYTHON_LIBRARY=$(python3 -c "import sysconfig; print(sysconfig.get_config_var('LIBDIR'))") \
-DENABLE_MODULE_VEHICLE=1 \
-DENABLE_MODULE_MULTICORE=1 \
-DBLAZE_INSTALL_DIR=/usr/local/blaze-3.8.2/include/ \
../chrono-9.0.0

Attached you can find the output of the last "cmake" command, in file "cmake_command_output.txt", and also "CPackConfig.cmake", "Makefile" and "CMakeCache.txt".
I get an error with some include of CUDA .cuh files, as you can see in file "make_command_output.txt".
Same error with versions 8.0.0 and upstream (just a git clone), and I cannot understand if I miss some cmake/make options or if is related to some CUDA missing package.

Many thanks in advance for your help!
Have a nice day.

MDP

cmake_command_output.txt
CPackConfig.cmake
Makefile
dpkg_CUDA12.5_ProjectChrono9.0.0.txt
make_command_output.txt
CMakeCache.txt

Dario Mangoni

unread,
Jun 12, 2024, 8:54:24 AM6/12/24
to ProjectChrono
Hi MDP,
Chrono is not currently compatible with CUDA 12.5.
We recommend sticking with 12.3 until the fix will come!

Dario

MDP

unread,
Jun 13, 2024, 11:18:58 AM6/13/24
to ProjectChrono
Hi Dario,

Thanks for your help, got it.
I tried then with version 12.3.x of CUDA but it seems there's a bug with Ubuntu 22.04 related to the DKMS build of the driver (https://bugs.launchpad.net/ubuntu/+source/nvidia-graphics-drivers-545/+bug/2065139) so I finally used version 12.4.0 and the compilation goes on but now it stops with this error:

[ 35%] Building NVCC (Device) object src/chrono_fsi/CMakeFiles/ChronoEngine_fsi.dir/utils/ChronoEngine_fsi_generated_ChUtilsPrintSph.cu.o
In file included from /home/operator1/chrono-9.0.0/src/chrono_fsi/utils/ChUtilsPrintSph.cu:23:
/home/operator1/chrono-9.0.0/src/chrono_fsi/utils/ChUtilsPrintSph.cuh:26:10: fatal error: chrono_thirdparty/chpf/particle_writer.hpp: No such file or directory
   26 | #include "chrono_thirdparty/chpf/particle_writer.hpp"
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
CMake Error at ChronoEngine_fsi_generated_ChUtilsPrintSph.cu.o.Release.cmake:216 (message):
  Error generating
  /home/operator1/chrono-9.0.0-build/src/chrono_fsi/CMakeFiles/ChronoEngine_fsi.dir/utils/./ChronoEngine_fsi_generated_ChUtilsPrintSph.cu.o

make[2]: *** [src/chrono_fsi/CMakeFiles/ChronoEngine_fsi.dir/build.make:140: src/chrono_fsi/CMakeFiles/ChronoEngine_fsi.dir/utils/ChronoEngine_fsi_generated_ChUtilsPrintSph.cu.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:1582: src/chrono_fsi/CMakeFiles/ChronoEngine_fsi.dir/all] Error 2

make: *** [Makefile:156: all] Error 2

This seems related to Chrono to me, this time. That file is not in the source dir. Any ideas?
I used the same configuration options of the previous tries, with a clean directory.

Thanks again.

Have a nice day.

MDP

Radu Serban

unread,
Jun 14, 2024, 10:38:25 AM6/14/24
to ProjectChrono

The ‘chpf’ package is used as a git submodule.  You need to initialize and update the git submodules in your clone of the Chrono repository.

--Radu

--
You received this message because you are subscribed to the Google Groups "ProjectChrono" group.
To unsubscribe from this group and stop receiving emails from it, send an email to projectchron...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/projectchrono/abf7b55d-4e3f-4f39-bff1-2e409aa90f65n%40googlegroups.com.

Marco De Pardi

unread,
Jun 14, 2024, 10:40:05 AM6/14/24
to Dario Mangoni, ProjectChrono
Hi Dario,

Thanks for your help, got it.
I tried then with version 12.3.x of CUDA but it seems there's a bug with Ubuntu 22.04 related to the DKMS build of the driver (https://bugs.launchpad.net/ubuntu/+source/nvidia-graphics-drivers-545/+bug/2065139) so I finally used version 12.4.0 and the compilation goes on but now it stops with this error:

[ 35%] Building NVCC (Device) object src/chrono_fsi/CMakeFiles/ChronoEngine_fsi.dir/utils/ChronoEngine_fsi_generated_ChUtilsPrintSph.cu.o
In file included from /home/operator1/chrono-9.0.0/src/chrono_fsi/utils/ChUtilsPrintSph.cu:23:
/home/operator1/chrono-9.0.0/src/chrono_fsi/utils/ChUtilsPrintSph.cuh:26:10: fatal error: chrono_thirdparty/chpf/particle_writer.hpp: No such file or directory
   26 | #include "chrono_thirdparty/chpf/particle_writer.hpp"
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
CMake Error at ChronoEngine_fsi_generated_ChUtilsPrintSph.cu.o.Release.cmake:216 (message):
  Error generating
  /home/operator1/chrono-9.0.0-build/src/chrono_fsi/CMakeFiles/ChronoEngine_fsi.dir/utils/./ChronoEngine_fsi_generated_ChUtilsPrintSph.cu.o

make[2]: *** [src/chrono_fsi/CMakeFiles/ChronoEngine_fsi.dir/build.make:140: src/chrono_fsi/CMakeFiles/ChronoEngine_fsi.dir/utils/ChronoEngine_fsi_generated_ChUtilsPrintSph.cu.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:1582: src/chrono_fsi/CMakeFiles/ChronoEngine_fsi.dir/all] Error 2

make: *** [Makefile:156: all] Error 2

This seems related to Chrono to me, this time. That file is not in the source dir. Any ideas?
I used the same configuration options of the previous tries, with a clean directory.

Thanks again.

Have a nice day.

Marco

Il 12/06/24 14:54, Dario Mangoni ha scritto:

Marco De Pardi

unread,
Jun 14, 2024, 10:40:11 AM6/14/24
to projec...@googlegroups.com
Hi Dario,

Thanks for your help, got it.
I tried then with version 12.3.x of CUDA but it seems there's a bug with Ubuntu 22.04 related to the DKMS build of the driver (https://bugs.launchpad.net/ubuntu/+source/nvidia-graphics-drivers-545/+bug/2065139) so I finally used version 12.4.0 and the compilation goes on but now it stops with this error:

[ 35%] Building NVCC (Device) object src/chrono_fsi/CMakeFiles/ChronoEngine_fsi.dir/utils/ChronoEngine_fsi_generated_ChUtilsPrintSph.cu.o
In file included from /home/operator1/chrono-9.0.0/src/chrono_fsi/utils/ChUtilsPrintSph.cu:23:
/home/operator1/chrono-9.0.0/src/chrono_fsi/utils/ChUtilsPrintSph.cuh:26:10: fatal error: chrono_thirdparty/chpf/particle_writer.hpp: No such file or directory
   26 | #include "chrono_thirdparty/chpf/particle_writer.hpp"
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
CMake Error at ChronoEngine_fsi_generated_ChUtilsPrintSph.cu.o.Release.cmake:216 (message):
  Error generating
  /home/operator1/chrono-9.0.0-build/src/chrono_fsi/CMakeFiles/ChronoEngine_fsi.dir/utils/./ChronoEngine_fsi_generated_ChUtilsPrintSph.cu.o

make[2]: *** [src/chrono_fsi/CMakeFiles/ChronoEngine_fsi.dir/build.make:140: src/chrono_fsi/CMakeFiles/ChronoEngine_fsi.dir/utils/ChronoEngine_fsi_generated_ChUtilsPrintSph.cu.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:1582: src/chrono_fsi/CMakeFiles/ChronoEngine_fsi.dir/all] Error 2

make: *** [Makefile:156: all] Error 2

This seems related to Chrono to me, this time. That file is not in the source dir. Any ideas?
I used the same configuration options of the previous tries, with a clean directory.

Thanks again.

Have a nice day.

MDP

Il 12/06/24 14:54, Dario Mangoni ha scritto:
Hi MDP,

MDP

unread,
Jun 14, 2024, 10:59:10 AM6/14/24
to ProjectChrono
Hi Radu,

Thanks for your reply.
I need to use version 9.0.0, so I took the tar.gz release from GitHub. Do you know how I can enable the submodule in a release src directory?

Thanks in advance,

MDP

P.S. Sorry for the multiple replies, I was confused about using my email client or the web interface because the one sent with the client didn't show up here.

MDP

unread,
Jun 18, 2024, 4:30:26 AM6/18/24
to ProjectChrono
Hi.

I tried with the upstream version, with "git submodule init" and "git submodule update" command, and the build process goes on but it stopped with an "ld" error:

/usr/bin/ld: ../../../lib/libChronoEngine_fsi.so: undefined reference to `chrono::fsi::ChSystemFsi_impl::GetParticleVelocities(thrust::THRUST_200301___CUDA_ARCH_LIST___NS::device_vector<int, thrust::THRUST_200301___CUDA_ARCH_LIST___NS::device_allocator<int> > const&)'
/usr/bin/ld: ../../../lib/libChronoEngine_fsi.so: undefined reference to `chrono::fsi::ChUtilsDevice::FillVector(thrust::THRUST_200301___CUDA_ARCH_LIST___NS::device_vector<chrono::fsi::Real4, thrust::THRUST_200301___CUDA_ARCH_LIST___NS::device_allocator<chrono::fsi::Real4> >&, chrono::fsi::Real4 const&)'
/usr/bin/ld: ../../../lib/libChronoEngine_fsi.so: undefined reference to `chrono::fsi::ChSystemFsi_impl::GetParticleAccelerations(thrust::THRUST_200301___CUDA_ARCH_LIST___NS::device_vector<int, thrust::THRUST_200301___CUDA_ARCH_LIST___NS::device_allocator<int> > const&)'
/usr/bin/ld: ../../../lib/libChronoEngine_fsi.so: undefined reference to `thrust::THRUST_200301___CUDA_ARCH_LIST___NS::detail::normal_iterator<thrust::THRUST_200301___CUDA_ARCH_LIST___NS::device_ptr<chrono::fsi::Real3> > thrust::THRUST_200301___CUDA_ARCH_LIST___NS::cuda_cub::copy<thrust::THRUST_200301___CUDA_ARCH_LIST___NS::cuda_cub::tag, thrust::THRUST_200301___CUDA_ARCH_LIST___NS::detail::normal_iterator<thrust::THRUST_200301___CUDA_ARCH_LIST___NS::device_ptr<chrono::fsi::Real3> >, thrust::THRUST_200301___CUDA_ARCH_LIST___NS::detail::normal_iterator<thrust::THRUST_200301___CUDA_ARCH_LIST___NS::device_ptr<chrono::fsi::Real3> > >(thrust::THRUST_200301___CUDA_ARCH_LIST___NS::cuda_cub::execution_policy<thrust::THRUST_200301___CUDA_ARCH_LIST___NS::cuda_cub::tag>&, thrust::THRUST_200301___CUDA_ARCH_LIST___NS::detail::normal_iterator<thrust::THRUST_200301___CUDA_ARCH_LIST___NS::device_ptr<chrono::fsi::Real3> >, thrust::THRUST_200301___CUDA_ARCH_LIST___NS::detail::normal_iterator<thrust::THRUST_200301___CUDA_ARCH_LIST___NS::device_ptr<chrono::fsi::Real3> >, thrust::THRUST_200301___CUDA_ARCH_LIST___NS::detail::normal_iterator<thrust::THRUST_200301___CUDA_ARCH_LIST___NS::device_ptr<chrono::fsi::Real3> >)'
/usr/bin/ld: ../../../lib/libChronoEngine_fsi.so: undefined reference to `chrono::fsi::utils::PrintParticleToFile(thrust::THRUST_200301___CUDA_ARCH_LIST___NS::device_vector<chrono::fsi::Real4, thrust::THRUST_200301___CUDA_ARCH_LIST___NS::device_allocator<chrono::fsi::Real4> > const&, thrust::THRUST_200301___CUDA_ARCH_LIST___NS::device_vector<chrono::fsi::Real3, thrust::THRUST_200301___CUDA_ARCH_LIST___NS::device_allocator<chrono::fsi::Real3> > const&, thrust::THRUST_200301___CUDA_ARCH_LIST___NS::device_vector<chrono::fsi::Real4, thrust::THRUST_200301___CUDA_ARCH_LIST___NS::device_allocator<chrono::fsi::Real4> > const&, thrust::THRUST_200301___CUDA_ARCH_LIST___NS::device_vector<chrono::fsi::Real4, thrust::THRUST_200301___CUDA_ARCH_LIST___NS::device_allocator<chrono::fsi::Real4> > const&, thrust::THRUST_200301___CUDA_ARCH_LIST___NS::device_vector<chrono::fsi::Real4, thrust::THRUST_200301___CUDA_ARCH_LIST___NS::device_allocator<chrono::fsi::Real4> > const&, thrust::THRUST_200301___CUDA_ARCH_LIST___NS::host_vector<int4, std::allocator<int4> > const&, thrust::THRUST_200301___CUDA_ARCH_LIST___NS::host_vector<int4, std::allocator<int4> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::shared_ptr<chrono::fsi::SimParams> const&)'
/usr/bin/ld: ../../../lib/libChronoEngine_fsi.so: undefined reference to `chrono::fsi::utils::WriteCsvParticlesToFile(thrust::THRUST_200301___CUDA_ARCH_LIST___NS::device_vector<chrono::fsi::Real4, thrust::THRUST_200301___CUDA_ARCH_LIST___NS::device_allocator<chrono::fsi::Real4> >&, thrust::THRUST_200301___CUDA_ARCH_LIST___NS::device_vector<chrono::fsi::Real3, thrust::THRUST_200301___CUDA_ARCH_LIST___NS::device_allocator<chrono::fsi::Real3> >&, thrust::THRUST_200301___CUDA_ARCH_LIST___NS::device_vector<chrono::fsi::Real4, thrust::THRUST_200301___CUDA_ARCH_LIST___NS::device_allocator<chrono::fsi::Real4> >&, thrust::THRUST_200301___CUDA_ARCH_LIST___NS::host_vector<int4, std::allocator<int4> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/usr/bin/ld: ../../../lib/libChronoEngine_fsi.so: undefined reference to `chrono::fsi::utils::WriteChPFParticlesToFile(thrust::THRUST_200301___CUDA_ARCH_LIST___NS::device_vector<chrono::fsi::Real4, thrust::THRUST_200301___CUDA_ARCH_LIST___NS::device_allocator<chrono::fsi::Real4> >&, thrust::THRUST_200301___CUDA_ARCH_LIST___NS::host_vector<int4, std::allocator<int4> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/usr/bin/ld: ../../../lib/libChronoEngine_fsi.so: undefined reference to `chrono::fsi::utils::PrintFsiInfoToFile(thrust::THRUST_200301___CUDA_ARCH_LIST___NS::device_vector<chrono::fsi::Real3, thrust::THRUST_200301___CUDA_ARCH_LIST___NS::device_allocator<chrono::fsi::Real3> > const&, thrust::THRUST_200301___CUDA_ARCH_LIST___NS::device_vector<chrono::fsi::Real4, thrust::THRUST_200301___CUDA_ARCH_LIST___NS::device_allocator<chrono::fsi::Real4> > const&, thrust::THRUST_200301___CUDA_ARCH_LIST___NS::device_vector<chrono::fsi::Real4, thrust::THRUST_200301___CUDA_ARCH_LIST___NS::device_allocator<chrono::fsi::Real4> > const&, thrust::THRUST_200301___CUDA_ARCH_LIST___NS::device_vector<chrono::fsi::Real3, thrust::THRUST_200301___CUDA_ARCH_LIST___NS::device_allocator<chrono::fsi::Real3> > const&, thrust::THRUST_200301___CUDA_ARCH_LIST___NS::device_vector<chrono::fsi::Real3, thrust::THRUST_200301___CUDA_ARCH_LIST___NS::device_allocator<chrono::fsi::Real3> > const&, thrust::THRUST_200301___CUDA_ARCH_LIST___NS::host_vector<chrono::fsi::Real3, std::allocator<chrono::fsi::Real3> > const&, thrust::THRUST_200301___CUDA_ARCH_LIST___NS::host_vector<chrono::fsi::Real3, std::allocator<chrono::fsi::Real3> > const&, thrust::THRUST_200301___CUDA_ARCH_LIST___NS::host_vector<chrono::fsi::Real3, std::allocator<chrono::fsi::Real3> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, double)'
/usr/bin/ld: ../../../lib/libChronoEngine_fsi.so: undefined reference to `thrust::THRUST_200301___CUDA_ARCH_LIST___NS::detail::normal_iterator<thrust::THRUST_200301___CUDA_ARCH_LIST___NS::device_ptr<chrono::fsi::Real4> > thrust::THRUST_200301___CUDA_ARCH_LIST___NS::cuda_cub::copy<thrust::THRUST_200301___CUDA_ARCH_LIST___NS::cuda_cub::tag, thrust::THRUST_200301___CUDA_ARCH_LIST___NS::detail::normal_iterator<thrust::THRUST_200301___CUDA_ARCH_LIST___NS::device_ptr<chrono::fsi::Real4> >, thrust::THRUST_200301___CUDA_ARCH_LIST___NS::detail::normal_iterator<thrust::THRUST_200301___CUDA_ARCH_LIST___NS::device_ptr<chrono::fsi::Real4> > >(thrust::THRUST_200301___CUDA_ARCH_LIST___NS::cuda_cub::execution_policy<thrust::THRUST_200301___CUDA_ARCH_LIST___NS::cuda_cub::tag>&, thrust::THRUST_200301___CUDA_ARCH_LIST___NS::detail::normal_iterator<thrust::THRUST_200301___CUDA_ARCH_LIST___NS::device_ptr<chrono::fsi::Real4> >, thrust::THRUST_200301___CUDA_ARCH_LIST___NS::detail::normal_iterator<thrust::THRUST_200301___CUDA_ARCH_LIST___NS::device_ptr<chrono::fsi::Real4> >, thrust::THRUST_200301___CUDA_ARCH_LIST___NS::detail::normal_iterator<thrust::THRUST_200301___CUDA_ARCH_LIST___NS::device_ptr<chrono::fsi::Real4> >)'
/usr/bin/ld: ../../../lib/libChronoEngine_fsi.so: undefined reference to `chrono::fsi::ChSystemFsi_impl::GetParticlePositions(thrust::THRUST_200301___CUDA_ARCH_LIST___NS::device_vector<int, thrust::THRUST_200301___CUDA_ARCH_LIST___NS::device_allocator<int> > const&)'
/usr/bin/ld: ../../../lib/libChronoEngine_fsi.so: undefined reference to `chrono::fsi::ChSystemFsi_impl::GetParticleForces(thrust::THRUST_200301___CUDA_ARCH_LIST___NS::device_vector<int, thrust::THRUST_200301___CUDA_ARCH_LIST___NS::device_allocator<int> > const&)'
collect2: error: ld returned 1 exit status

With make debug enabled, this is the command that fails:
/usr/bin/c++   -fopenmp   -fopenmp -march=native -O3 -DNDEBUG   -fopenmp -march=native -DNDEBUG CMakeFiles/demo_ROBOT_Curiosity_SCM.dir/demo_ROBOT_Curiosity_SCM.cpp.o -o ../../../bin/demo_ROBOT_Curiosity_SCM  -Wl,-rpath,/home/operator1/chrono-build/lib:/usr/local/cuda/lib64: ../../../lib/libChronoModels_robot.so ../../../lib/libChronoEngine_vehicle_irrlicht.so ../../../lib/libChronoEngine_vehicle.so ../../../lib/libChronoEngine_irrlicht.so /usr/lib/x86_64-linux-gnu/libIrrlicht.so -lXxf86vm -lglut -lX11 -lGL ../../../lib/libChronoEngine_postprocess.so ../../../lib/libChronoEngine_fsi.so ../../../lib/libChronoEngine_opengl.so ../../../lib/libChronoEngine_multicore.so ../../../lib/libChronoEngine.so -lpthread /usr/lib/gcc/x86_64-linux-gnu/11/libgomp.so /usr/lib/x86_64-linux-gnu/libpthread.a /usr/lib/x86_64-linux-gnu/libOpenGL.so /usr/lib/x86_64-linux-gnu/libGLX.so /usr/lib/x86_64-linux-gnu/libGLU.so /usr/lib/x86_64-linux-gnu/libGLEW.so /usr/lib/x86_64-linux-gnu/libglfw.so.3.3 /usr/local/cuda/lib64/libcudart_static.a -ldl /usr/lib/x86_64-linux-gnu/librt.a /usr/local/cuda/lib64/libcudadevrt.a /usr/local/cuda/lib64/libcudart.so /usr/local/cuda/lib64/libcusparse.so /usr/local/cuda/lib64/libcublas.so

Looking inside "libChronoEngine_fsi.so" file (with "strings" command) I found those symbols.
What is wrong with my steps?

Thanks again for your help.

MDP

Radu Serban

unread,
Jun 18, 2024, 7:20:57 AM6/18/24
to ProjectChrono

Please try using CUDA 12.3 (as Dario indicated). Does that resolve the issue?

MDP

unread,
Jun 18, 2024, 8:52:53 AM6/18/24
to ProjectChrono
Hi Radu.

Thanks for your reply.
As I said in my previous message to Dario, I tried with version 12.3.x of CUDA but it seems there's a bug with Ubuntu 22.04 related to the DKMS build of the driver (https://bugs.launchpad.net/ubuntu/+source/nvidia-graphics-drivers-545/+bug/2065139).
So I switched out to CUDA 12.4, and here in the forum (https://groups.google.com/g/projectchrono/c/Vf-N42pZh-0/m/dw2uBNvYEwAJ) I saw that without modules this could work.
Any ideas on the error I got?

Thanks for your help.
MDP

Radu Serban

unread,
Jun 19, 2024, 10:21:37 AM6/19/24
to ProjectChrono

MDP – the issues *is* the CUDA version.  The only version with which all GPU-based Chrono modules work is 12.3 (including 12.3.2).

Until we update these modules to work with newer CUDA versions, you will need to figure out a different way of getting the appropriate CUDA driver working on your Ubuntu system (not DKMS from what you describe).  Note that I have pushed a change to the top-level Chrono CMakeLists that will disable CUDA support in Chrono if using a version newer than 12.3 (and disable Thrust support if using a version newer than 2.2.0).

 

In Chrono, CUDA is used in the FSI (for the SPH solver for fluid-solid interaction) and GPU (for granular dynamics). 

In addition, Thrust (which is easiest installed as part of a CUDA distribution), with its OpenMP backend, is used for the multicore collision detection algorithm (alternative to the Bullet-based one) and in the Chrono::Multicore module.

 

The multicore collision detection algorithm and Chrono::Multicore do work with Thrust v. 2.3.1 included in CUDA 12.4.  This is why you were able to build Chrono with only the core module enabled.

But Chrono::FSI will *not* work with CUDA 12.4 or 12.5.  This is what you are seeing now.

 

To make a long story short: if you want to use any of the GPU-based modules in Chrono, you need to switch to using CUDA 12.3.  We are doing this without any issues as part of our CI builds (obviously, with a CUDA driver installed differently than what you do).

MDP

unread,
Jun 27, 2024, 6:19:28 AM6/27/24
to ProjectChrono
Hi Radu,

Thanks for your detaild reply, now it's all understood.
I've installed in a separate way the NVIDIA Driver (.run method) and the CUDA version 12.3.2 and now it builds.

I'll test everything in the next days.

Thanks again for your help.
Have a nice day.

MDP
Reply all
Reply to author
Forward
0 new messages