
Linux Mint マシンで PyOpenCL と PyCUDA を実行しようとしています。インストールは完了しましたが、デモ スクリプトがエラーで失敗します。
pyopencl.cffi_cl.LogicError: clgetplatformids failed: PLATFORM_NOT_FOUND_KHR
構成
$ uname -a && cat /etc/lsb-release && lspci | grep NV
Linux 3.13.0-24-generic #47-Ubuntu SMP Fri May 2 23:30:00 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
DISTRIB_DESCRIPTION="Linux Mint 17.3 Rosa"
01:00.0 VGA compatible controller: NVIDIA Corporation GK208 [GeForce GT 730] (rev a1)
関連するインストール済みパッケージ:
libcuda1-352-updates
libcudart5.5:amd64
nvidia-352-updates
nvidia-352-updates-dev
nvidia-cuda-dev
nvidia-cuda-toolkit
nvidia-opencl-icd-352-updates
nvidia-profiler
nvidia-settings
ocl-icd-libopencl1:amd64
ocl-icd-opencl-dev:amd64
opencl-headers
python-pycuda
python-pyopencl
python3-pycuda
python3-pyopencl
研究
ここに適切なリンクを全て掲載することはできないので、この問題を解決するための私の以前の試みを反映したリンクについては、関連する Stack Overflow の投稿を参照してください。
ある投稿では、パッケージ マネージャーがインストールした opencl/cuda 実装が一部のシンボリック リンクを正しく設定しないというシナリオについて説明されていました。その問題は私のシステムでは発生していないようです。
グラフィック ドライバー (nvidia-340) と nvidia-opencl パッケージ (352) の間にバージョン番号の不一致がありました。グラフィック ドライバーを更新しましたが、nvidia-352-updates-dev
問題は解決しません。
Arch Linux には、必要なデバイス ファイルが作成されないことに関係するバグがあるようです。ただし、およびが存在し、権限が付与されていることを確認したので/dev/nvidia0
、/dev/nvidiactl
アクセス666
できるはずです。
Stackoverflow の別の投稿では、デモを root として実行することが提案されています。これを試してみましたが、動作は変わりませんでした。
cuda/opencl の古いインストール手順では、NVidia の Web サイトから直接ドライバーをダウンロードするように書かれています。この結果に関する更新は、投稿の最後をご覧ください (非常に混乱しました)
別の Linux システム上の ATI カードでも同じエラーが報告されており、 に適切なファイルを配置することで解決しました。そのパスは私のシステムでは使用されていませんが、という行を含む/usr/lib/OpenCL/vendors
があるため、私の問題はこれとは異なると考えられます。/etc/OpenCL/vendors/nvidia.icd
libnvidia-opencl.so.1
このエラーは OSX でも発生していますが、理由は関係ありません。OSX 上の PyCUDA の同様のエラー メッセージも無関係のようです。
このエラーは、X がロードされていない場合はデバイス ファイルが初期化されないため、リモート アクセスで発生する可能性があります。ただし、私はデスクトップ環境でこれをテストしています。さらに、念のため、そのスレッドで提案されている手動コマンドを実行しましたが、関連するエントリが/dev
すでに存在するため、それらは冗長です。
物事を開始するために、例を数回実行するか、sudo として実行することを提案する人もいます。これは役に立たないようです。
cuInit failed: no device
ある投稿では、グループにユーザーがいないために同様の CUDA エラーが発生したと説明されていましたvideo
。確認するために を実行しましたusermod -a -G video $USER
が、問題は解決しませんでした。
過去には、定期的な更新によって CUDA サポートが壊れることがありました。パッケージのバージョン番号のすべての組み合わせを調べる時間を取ったわけではないので、一部のパッケージをダウングレードすると状況が変わる可能性があります。ただし、問題の原因についてさらに詳しくわからないため、それが機能するかどうかわからないため、それに時間を費やすつもりはありません。
このエラーに関する最も一般的な Google 検索の結果は、検索結果の最初のページに異なるサイトから 4 回表示され、PyOpenCL リストの短い未解決の電子メール スレッドです。 および の権限ビットを確認すること/dev/nvidia0
を/dev/nvidiactl
お勧めします。私のマシンでは、user/group/other
これらのデバイスへの読み取りおよび書き込みアクセス権がすべてあるため、これが問題の原因ではないと思います。
また、リポジトリのバージョンを使用するのではなく、最新のソースから PyOpenCL をビルドしてインストールしようとしました。これは、以前の段階で失敗しており、正しくビルドされていないことを示唆しています。
まとめ
問題は、PyCUDA/PyOpenCL がグラフィック カードを見つけられないことにあるようです。この問題を引き起こす可能性のある既知の問題はいくつかありますが、いずれもここでは当てはまらないようです。何かが足りないようですが、他に何をすればよいかわかりません。
さらなるアップデート
NVidia から直接ダウンロードしたdeb から再インストールしようとしましたcuda-repo-ubuntu1404-7-5-local_7.5-18_amd64.deb
が、インストールされていないようです。deviceQuery コマンドすら見つかりません。runfile から再インストールしようとしましたcuda_7.5.18_linux.run
。インストーラーは、マシンの構成がサポートされていないことを指摘しました。最後の手段としてとにかく続行しました。実際、X 構成は完全に壊れており、マシンはログイン画面で起動できません。これを修復できませんでした。