まず、OpenCL は CPU と GPU で動作するように構築されています。どちらのタイプのデバイスでも、同じソース コードをコンパイルして実行できます。ただし、CPU コードが GPU に対して最適ではない可能性が非常に高く、その逆も同様です。
AMD H/W は、x86/x64 CPU の合計の 7% - 14% です。そのため、AMD は AMD と Intel の両方のチップに対応するコンパイラを開発する必要があります。AMD には、両方のチップ セット用のコンパイラを開発してきた歴史があります。逆に、Intel は、AMD チップで動作しない、またはそれほどうまく動作しないコンパイラを開発しました。それは驚くべきことではありません。
OpenCL を使用すると、AMD APP SDK が最も柔軟になり、AMD および Intel CPU と AMD GPU でうまく動作します。Intel の OpenCL SDK は、AMD x86 H/W にもインストールできません。
OpenCL プログラムをバイナリにコンパイルすると、それを作成した OpenCL プラットフォームおよびデバイスと一致する限り、保存して再利用できます。そのため、あるデバイス用にコンパイルして別のデバイスで使用すると、エラーが発生する可能性が非常に高くなります。