0

現在、CUDA_VISIBLE_DEVICES 環境変数を使用して、Linux 上の NVIDIA GPU への OpenCL アクセスを制限することができます。Intel CPUデバイスへのOpenCLアクセスを制限する同様の方法を知っている人はいますか? (動機: 私は、計算サーバーのユーザーに、SLURM だけで OpenCL プログラムを実行させようとしています。)

4

2 に答える 2

1

libintelocl.so1 つの可能性は、OpenCL ICD ローダーを経由する代わりに、Intel OpenCL ライブラリ (私のシステム上) に直接リンクすることです。

于 2014-08-29T18:28:46.497 に答える
1

純粋な OpenCL では、CPU へのタスクの割り当てを回避する方法は、CPU を (プラットフォームまたはデバイスとして) 選択しないことです。clGetDeviceIDs は device_type 引数を使用してこれを行うことができます (CL_DEVICE_TYPE_CPU ビットを設定しないでください)。

ICD レベルでは、Intel の実装であれば CPU ドライバーを除外できると思います。AMDの場合、両方のプラットフォームに1つのドライバーがあるため、少し複雑になります(CPU_MAX_COMPUTE_UNITS環境変数は1つのコアに制限できますが、無効にすることはできないようです).

OpenCL プログラムを slurm などの特定のランチャーで実行するように制限することが目的の場合、そのランチャー用のグループを追加し、OpenCL ICD ベンダー ファイルを /etc/OpenCL (および場合によってはドライバー デバイス ノード) に作成することが 1 つの方法かもしれません。そのグループだけが使用できます。

これは、ユーザーが独自の OpenCL 実装を CPU で実行するのを妨げるものではありませんが、誤ってそこで実行しないように導くには十分です。

于 2014-09-08T09:57:47.850 に答える