Problem compiling ProjectChrono on Linux with CUDA 12.5

98 views
Skip to first unread message

MDP

unread,
Jun 12, 2024, 6:46:57 AMJun 12
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 AMJun 12
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 AMJun 13
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 AMJun 14
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 AMJun 14
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 AMJun 14
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 AMJun 14
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 AMJun 18
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 AMJun 18
to ProjectChrono

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

MDP

unread,
Jun 18, 2024, 8:52:53 AMJun 18
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 AM (14 days ago) Jun 19
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 AM (6 days ago) Jun 27
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