/ usr / bin / ld: cannot find -lcudart

When I try to compile a CUDA program, I get the following message:

/ usr / bin / ld: cannot find -lcudart

This kind of error has never occurred before. Is this a problem with my PATH?

Here's the compilation command:

gfortran -g -O2 -ffree-line-length-none -I ../ shared / -o .. /../bin/xspecfem3D../../obj/spec/program_specfem3D.o../../ obj / spec / specfem3D_par.o ../../ obj / spec / PML_init.o .. /../obj/spec/compute_boundary_kernel.o../../obj/spec/compute_kernels.o .. /. ./obj/spec/compute_forces_acoustic.o../../obj/spec/compute_forces_acoustic_pot.o .. /../obj/spec/compute_forces_acoustic_PML.o../../obj/spec/compute_forces_elastic.o .. /../obj/spec/compute_forces_elastic_Dev.o../../obj/spec/compute_forces_elastic_noDev.o .. /../obj/spec/compute_forces_elastic_Dev_openmp.o../../obj/spec/compute_add_sources_acoustic .. /../obj/spec/compute_add_sources_elastic.o../../obj/spec/compute_coupling_acoustic_el.o .. /../obj/spec/compute_coupling_elastic_ac.o../../obj/spec/compute_stacey_acoustic .o .. /../obj/spec/compute_stacey_elastic.o../../obj/spec/compute_gradient.o .. /../obj/spec/compute_interpolated_dva.o../../obj/spec /initialize_simulation.o .. /../obj/spec/read_mesh_databases.o../../obj/spec/setup_GLL_points.o../../obj/s pec / write_movie_output.o .. /../obj/spec/create_color_image.o../../obj/spec/write_seismograms.o../../obj/spec/write_output_ASCII.o .. /../ obj / spec / detect_mesh_surfaces.o ../../ obj / spec / setup_movie_meshes.o .. /../obj/spec/read_topography_bathymetry.o../../obj/spec/setup_sources_receivers.o .. /. ./obj/spec/prepare_timerun.o../../obj/spec/iterate_time.o../../obj/spec/finalize_simulation.o .. /../obj/spec/save_adjoint_kernels.o .. /../obj/spec/specfem3D.o../../obj/spec/assemble_MPI_vector.o../../obj/spec/make_gravity.o .. /../obj/spec/noise_tomography.o ../../lib/libspecfem.a../../obj/spec/check_fields_cuda.cuda.o .. /../obj/spec/compute_add_sources_acoustic_cuda.cuda.o../../obj/spec /compute_add_sources_elastic_cuda.cuda.o .. /../obj/spec/compute_coupling_cuda.cuda.o../../obj/spec/compute_forces_acoustic_cuda.cuda.o .. /../obj/spec/compute_forces_elces o ../../ obj / spec / compute_kernels_cuda.cuda.o .. /../obj/spec/compute_stacey_acoustic_cuda.cuda.o../../obj/spec/compute_stacey_elastic_cuda.cu da.o .. /../obj/spec/it_update_displacement_cuda.cuda.o../../obj/spec/noise_tomography_cuda.cuda.o .. /../obj/spec/prepare_mesh_constants_cuda.cuda.o .. /../obj/spec/transfer_fields_cuda.cuda.o .. /../obj/spec/write_seismograms_cuda.cuda.o../../obj/spec/save_and_compare_cpu_vs_gpu.cudacc.o .. /../obj /spec/serial.o -lcuda -lcudart -lcublas

/ usr / bin / ld: cannot find -lcudart

collect2: ld returned 1 exit status

Edit:

I changed the linkage command to

gfortran -g -O2 -ffree-line-length-none -I ../ shared / -L $ CUDA_HOME / lib [remainder follows]

And all my PATH seems to be fine, but I still have the same error.

Edit2:

The error was that the code that I was trying to compile was 64 bits, so I needed to specify the path to another set of .so, which are located on

/ usr / local / cuda / lib64

Now the compilation went fine and without problems.

+4
source share
2 answers

You do not specify the location of the CUDA libraries for the linker, so the link does not work. nvcc "automatically" configured to find the components of the CUDA runtime library, but if you are directly communicating with the host compiler, you need to explicitly specify their location for the compiler. Try changing the communication command:

 gfortran -g -O2 -ffree-line-length-none -I../shared/ -L$CUDA_HOME/lib [rest follows] 

where CUDA_HOME indicates the path where the CUDA toolkit is installed. This is usually /usr/local/cuda on linux and OS X systems. Then you need to make sure LD_LIBRARY_PATH contains an entry for $CUDA_HOME/lib so that the executable dynamically loads the required CUDA libraries at run time.

EDIT:

Also see this

+8
source

I fixed it! Go to your makefile and change / usr / local / cuda / to / usr / local / cuda-7.0 (if that's what you have) This worked for me

0
source

Source: https://habr.com/ru/post/1400575/


All Articles