2

CUDA4.2からCUDA5.0にアップグレードしました。当然のことながら、以前は名前が付けられていたライブラリlibcudart.so.4は、現在はと呼ばれてlibcudart.so.5.0います。nvcc 5.0を使用してコードを再コンパイルし、コードを実行しようとすると、次のメッセージが表示されます。

./main: error while loading shared libraries: libcudart.so.4: cannot open shared object file: No such file or directory

ええ、あなたは愚かなシステムです、私はないことを知っていlibcudart.so.4ます。これは、現在はと呼ばれているためlibcudart.so.5.0です。の代わりにを探しているのはなぜですか?どうすれば修正できますか?libcudart.so.4libcudart.so.5.0


私がこれまでに試したこと:

すべてのパスが正常であることを確認しました。これらの環境変数が設定されます。

export PATH=$PATH:/usr/local/cuda/bin:/usr/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib:/usr/local/cuda/lib64:/lib
#note: /usr/local/cuda is symlinked to /usr/local/cuda-5.0

ディレクトリlibcudart.so.5.0の1つにあることを確認しました。LD_LIBRARY_PATH

CUDAアプリケーションをCUDA5.0バージョンので再コンパイルしましたnvcc。CUDA 4.2を搭載した他のマシンと、CUDA 4.0を搭載した他のマシンで、アプリケーションを正常にコンパイルして実行しました。

nvcc私はそれが本当にバージョン5.0にあることを確認しました:

user@host$ nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2012 NVIDIA Corporation
Built on Fri_Sep_21_17:28:58_PDT_2012
Cuda compilation tools, release 5.0, V0.2.122
4

1 に答える 1

1

この質問を未回答のリストから外したいのですが、@ Jared Hoberockは気にしないと思うので、彼のコメントを回答として投稿します。懸念があり、JaredまたはsolvingPuzzlesが回答を投稿した場合、私は私のものを削除します(受け入れられないと仮定して、受け入れられた回答者を削除することはできません)。

nvcclibcudart.aバージョン4に対して静的にリンクしているようです。

libパスのどこかで、削除する必要nvccのある古いを見つけているようです。libcudart.a

他の読者の場合はlibcudart.*、システム上のすべてのインスタンスを見つけて、目的のCUDAバージョンと一致しないインスタンスを削除するだけで十分です(複数のCUDAバージョンが使用可能なマシンを実行しようとしていない場合は、その場合は、コンパイルと実行の両方のライブラリパスを適切に管理する必要があります)

于 2013-10-20T21:56:51.630 に答える