4

私のマシンには 2 枚の NVidia カードがあり、どちらも CUDA に対応しています。サンプル スクリプトを実行して PyCUDA の使用を開始すると、次の場所に表示されます: http://documen.tician.de/pycuda/エラーが発生します。

nvcc fatal   : Value 'sm_30' is not defined for option 'gpu-architecture'

私のコンピューティング GPU はコンピューティング機能 3.0 であるため、sm_30 は nvcc コンパイラの適切なオプションである必要があります。私のグラフィックス GPU は CC 1.2 しかないので、それが問題なのかもしれないと思いました。Linux用のCUDA 5.0リリースをエラーなしでインストールし、すべてのコンパイラコンポーネントとpythonコンポーネントをインストールしました。

どの GPU を使用するかを PyCUDA に明示的に伝える方法はありますか?

4

2 に答える 2

2

nvccインストールした特定の GPU に基づいて文句を言うつもりはありません。コンパイルするように指示した GPU タイプに合わせてコンパイルされます。問題は、オプションも指定されている場合sm_30に有効なオプションではないものを指定していることです。--gpu-architecture--gpu-code

あなたは通過する必要compute_30があり--gpu-architectureますsm_30--gpu-code

nvccまた、CUDA ツールキットの古いバージョンを誤って使用していないことを確認してください。

コンパイルの問題を解決したら、CUDA_DEVICEインストールされている特定の GPU を選択するために pycuda が監視する環境変数があります。

ここから:

CUDA_DEVICE=2 python my-script.py

ところで、他の誰かがあなたの問題を抱えていました。PyCUDA が使用している古いバージョンの CUDA ツールキットを持っていませんか?

于 2013-07-30T14:09:36.467 に答える
0

Pythonラッパー(またはPython全般)については知りませんが、C++には、特定のGPUをターゲットにできるWGL_NV_gpu_affinity NVidia拡張機能があります。おそらくPythonでラッパーを書くことができます。

編集:

実際に Linux を実行していることがわかったので、解決策はより単純です (C++)。コンテキスト init の前に XDisplay を列挙するだけです。

したがって、基本的にデフォルトの GPU は通常、表示文字列「0.0」をターゲットにしています。

2 番目の GPU でディスプレイを開くには、次のようにします。

    const char* gpuNum = "0:1";

    if (!(_display = XOpenDisplay(gpuNum ))) {

        printf("error: %s\n", "failed to open display");

    } else {
        printf("message: %s\n", "display created");

    }

       ////here comes the rest of context setup....
于 2013-07-30T14:06:22.443 に答える