web-dev-qa-db-ja.com

インテルアイリスでCudaまたはopenclを実行できますか?

私はMacbook proを2014年半ばにIntel irisとIntel Core i5プロセッサの16GBのRAMを搭載しています。私はいくつかのレイトレース3Dを学習する予定です。しかし、私のラップトップがnvidiaのハードウェアなしで高速にレンダリングできるかどうかはわかりません。

ですから、もし誰かが私にCudaを使用できるかどうか教えてもらえれば、後の影響でOpenCLを有効にする方法を非常に簡単な方法で教えていただけませんか。初心者がOpenCLを作成または構築する方法を学ぶためのチュートリアルを探していますか?

10
Fudoli

Cudaはnvidiaハードウェアでのみ動作しますが、それをCPUコア(igpuではなく)で実行するように変換するライブラリがいくつかある場合があります。

AMDは、古いcudaカーネルを「ヒップ化」してopenclまたは同様のコードに変換し、より一般的になるように取り組んでいます。

Openclは、ハードウェアとOSの両方がサポートしている限り、どこでも動作します。 AMD、Nvidia、Intel、Xilinx、Altera、Qualcomm、MediaTek、Marvell、Texas Instrumentsはこれをサポートしています。おそらく、Raspberry Pi-xも将来サポートできるでしょう。

Stackoverflow.comのopenclのドキュメントは開発中です。しかし、いくつかのサイトがあります:

Iris Graphics 6100である場合

統合されたgpuには48の実行ユニットがあり、それぞれに8つのALUユニットがあり、加算、乗算、さらに多くの演算を実行できます。そのクロック周波数は1GHzまで上昇する可能性があります。つまり、最大48 * 8 * 2(1 add + 1multiply)* 1G = 768ギガ浮動小数点演算/秒ですが、各ALUが1つの加算と1の乗算を同時に実行できる場合に限ります。 768 Gフロップは、AMDのR7-240などのローエンドディスクリートGPUよりも優れています(2017年10月19日現在、AMDのローエンドはRXGFで1200 GFlopsで、IntelのIris Plus 650(900 GFlopsに近い)より高速です)。レイトレーシングでは、CPUが動作できるように、デバイスに独自のメモリ(NvidiaやAMDなど)が必要なため、ジオメトリデータに再アクセスする必要があります。

コンピューターにopenclをインストールする方法は、OSとハードウェアの種類によって異なる場合がありますが、openclがインストールされたコンピューターでソフトウェアを構築する方法は似ています。

  • クエリプラットフォーム。この結果は、AMD、Intel、Nvidia、誤ったドライバーのインストールの重複、新しいopenclバージョンがサポートする前の実験的プラットフォームのため、これらの重複である可能性があります。
  • プラットフォーム(またはすべてのプラットフォーム)のデバイスをクエリします。これにより、個々のデバイス(およびドライバーエラーやその他の修正すべきものがあれば、それらの複製)が提供されます。
  • プラットフォームを使用してコンテキスト(または複数)を作成する
  • コンテキストを使用する(したがって、すべてに暗黙的な同期が含まれます):

    • カーネル文字列を使用してプログラムをビルドします。通常、CPUはGPUよりもプログラムの構築にかかる時間を短縮できます(これを削減するためのバイナリロードオプションがあります)。
    • プログラムからカーネルを(オブジェクトとして)ビルドします。
    • ホスト側のバッファーまたはopencl管理のバッファーからバッファーを作成します。
    • コマンドキュー(または複数)を作成する

計算の直前(または計算の配列):

  • 引数としてカーネルのバッファを選択します。
  • 「入力」バッファーに対するエンキューバッファー書き込み(またはマップ/マップ解除)操作

計算:

  • エンキューnd範囲カーネル(実行するカーネルとスレッド数を指定)
  • 「出力」バッファーでのバッファー読み取り(またはマップ/マップ解除)操作のエンキュー
  • ブロッキングタイプenqueueBufferReadを使用していない場合は、clFinish()を使用してホストと同期することを忘れないでください。
  • 加速データを使用します。

Openclが不要になった後:

  • すべてのコマンドキューが空であるか、カーネルの作業が完了していることを確認してください。
  • 作成とは逆の順序ですべて解放する

オープンソースソフトウェアを高速化する必要がある場合、ホットスポットの並列化可能なループを単純なopenclカーネルに切り替えることができます(別の高速化サポートがまだない場合)。たとえば、powdertoyサンドボックスシミュレータの空気圧と熱移流の部分を加速できます。

はい、できます 、なぜなら OpenCLはMacOSでサポートされている ネイティブだからです。

あなたの質問から、あなたはスタックオーバーフローの適切な主題であったであろう プログラミングのアドバイス を求めていないようです。 Googleでの最初の検索ヒットは After EffectsでOpenCL加速効果をオンにする方法 (プロジェクト設定ダイアログ->ビデオレンダリングと効果)について説明していますが、私自身はその経験がありません。

4
tera