奇妙に聞こえるかもしれませんが、CUDA4をCUDA5にアップグレードした後、自分のカーネルの実行速度は速くなりますが、cublas関数(cublasDgemmなど)の速度は遅くなります。また、cublasDgemmはバージョン5でいくつかのマグマのものを呼んでいるようです。
それで、「cublas」のバージョン4をインポートできるのに対し、「cudart」ライブラリのバージョン5をインポートできるかどうか疑問に思います。簡単な試用版として、私はコード(mycode.cc)を持っています:
#include <iostream>
#include <stdio.h>
#include <cublas.h>
#include <cublas_v2.h>
using namespace std;
int main()
{
int ver;
cudaRuntimeGetVersion(&ver);
cout<<"cudart version: "<<ver<<endl;
cublasHandle_t hdl;
cublasCreate(&hdl);
cublasGetVersion(hdl, &ver);
cout<<"cublas version: "<<ver<<endl;
}
試してみました:
g++ -I /opt/cuda/include/ -L /opt/cuda/lib64/ -lcudart -I /opt/cuda-5.0/include/ -L /opt/cuda-5.0/lib64/ -lcublas mycode.cc
私のシステムには「モジュール」セットアップがあり、「モジュールロードcuda4」と「モジュールロードcuda5」の両方を試しました。興味深いことに、「module load cuda4」のときにコンパイルされ、次のように報告されました。
cudart version: 4010
cublas version: 4010
それは私がcudartに望んでいたものではありません。さらに、「module load cuda5」を実行すると、コンパイルは完了しましたが、excutableの実行は次のように失敗しました。
./a.out: error while loading shared libraries: libcudart.so.4: cannot open shared object file: No such file or directory
提案をありがとう。