2016-04-27 9 views
0

私はOpenCLがCPU実装といくつかのGPU実装で広くサポートされていることを見てきました。OpenGLでOpenCLを実装する

GPUがありますが、GPUの実装が利用できない場合、OpenGLを使用してOpenCLを実装することは可能でしょうか?

多分、ほとんどの操作は、GLSLフラグメントシェーダや、シェーダを計算することさえ可能です。

これが実現可能であれば、どこから始めるのですか?そこには、最小限のCPU OpenCL実装があります。

+3

OpenCLに必要な機能を備えたGPUはほとんど見つかりませんが、OpenCLを実装していないドライバはほとんどありません。これは問題ではありません。 – datenwolf

+0

これらのgpuにはパイプラインがほとんどないため、2つのコア上のMMX/SSEはパフォーマンス/労力比で優れています。 –

+0

OpenCL言語には、シェーダ言語(例えば、車線変更命令、ワープ投票)から利用できない機能がありますので、厳密に言えません。しかし、おそらくサブセット。 –

答えて

1

GPUがありますが、GPUの実装が利用できない場合は、OpenGLを使用してOpenCLを実装するのが有効でしょうか?

可能:はい、もちろんです。すべてのチューリング完了マシンは、他のすべてのチューリング完了マシンをエミュレートできます。

実行可能:OpenGL実装のGLSLコンパイラは既にプリミアドナナであり、各実装のコンパイラは少し動いています。 OpenGL自体には、コードパスを選択するためのヒューリスティックがたくさんあります。 OpenGL + GLSLをベースにした、控えめなOpenCLをShoehorningすることは、非常に苦労するでしょう。

必須:絶対にそうではありません:OpenCLを実際にサポートするために必要な機能を備えているすべてのGPUについて、ドライバはOpenCLをサポートしていますので、これは問題ではありません。

+0

要するに、GPUで利用可能なOpenCLドライバがない場合、OpenCLタスク用にそれを使用することは非常に有用ではないでしょうか? – dronus

+0

@ドロヌス:確かに。しかし、実際にこれを行うことを妨げているのは、それが大きな悪夢になることです。おそらくJITとして実装されたトランスパイライザ、OpenGLホストコードジェネレータを実装する必要があります。コンテキストの状態管理などを処理しなければならないなどです。 – datenwolf

1

OpenCLには、浮動小数点演算の精度に関する特定の非常に明示的な要件があります。 GLSLの要件ははるかに緩慢です。 OpenGLの上にOpenCL APIを実装しても、同じの動作を得ることは決してできません。

あなたは別の方法で考え始める場合には、この点ではVulkanは良くありません。

関連する問題