2

マルチバースから python-pyopencl を取得し、amd app sdk をインストールして、ラップトップに pyopencl をセットアップしました。Nvidia ICD を入手するために、ドライバー マネージャーから最新の Nvidia ドライバーを再インストールしました。

私のシステムは、Thinkpad t540p、i7 4700hq、Nvidia gt 730m、64 ビット Ubuntu 14.04 です。

opencl のインストールをテストするために、次の pyopencl の例を実行しました: http://wiki.tiker.net/PyOpenCL/Examples/MatrixMultiply

残念ながら、パフォーマンスは非常に悪く、わずか 2 GFlop/s です。確かにラップトップはもっとうまくいくことができます。だから私はベンダー情報を印刷しました。それは「GenuineIntel」であり、どうやらカーネルは GPU ではなく CPU 上で実行されます。どうすればそれを変更できますか?

pyopencl が GPU を見つけられないようです。

for dev in ctx.devices:
    print dev.vendor

これは「GenuineIntel」のみを返します

コンテキストは次のように作成されます。

import pyopencl as cl
ctx=cl.create_some_context()

アップデート:

これは次の重複のようです:エラー: pyopencl: 特定のデバイスのコンテキストを作成しています

4

1 に答える 1

3

ここには 2 つの問題があります。

まず、カーネルを実行するデバイスとして GPU を指定する必要があります。交換:

ctx = cl.create_some_context()

と:

platform = cl.get_platforms()
gpus = platform[0].get_devices(device_type=cl.device_type.GPU)
ctx = cl.Context(devices=gpus)

次に、Optimus 切り替え可能なグラフィックスを使用しているように見えるため、NVIDIA カードは実際にはスタンバイ状態のままで、省電力のためにすべてのグラフィック タスクが CPU によって処理されます。Bumblebee を使用してプログラムを起動し、プログラムのディスクリート GPU を有効にする必要があります。

optirun python yourscript.py
于 2014-07-26T11:08:52.780 に答える