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.
source share