今回はOpenCLを使ってみる一連の流れで気付いたことを書いてみます。おまけです。
AMD,NVIDIAの両環境でOpenCL Device extensions を表示させたときに、思った以上の違いがありました。
PlatformName: AMD Accelerated Parallel Processing DeviceName: Barts > DeviceExtensions: cl_khr_global_int32_base_atomics cl_khr_global_int32_exten ded_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_3d_image_writes cl_khr_byte_addressable_store cl_khr_gl_sharing cl_ext_at omic_counters_32 cl_amd_device_attribute_query cl_amd_vec3 cl_amd_printf cl_amd_ media_ops cl_amd_media_ops2 cl_amd_popcnt cl_khr_d3d10_sharing PlatformName: NVIDIA CUDA DeviceName: GeForce GTX 650 Ti > DeviceExtensions: cl_khr_byte_addressable_store cl_khr_icd cl_khr_gl_sharing cl_nv_d3d9_sharing cl_nv_d3d10_sharing cl_khr_d3d10_sharing cl_nv_d3d11_sharing cl_nv_compiler_options cl_nv_device_attribute_query cl_nv_pragma_unroll cl_khr _global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int 32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_fp64
AMDのほうには cl_nv_d3d11_sharing や cl_nv_d3d9_sharing がありません。これはすなわちDirectX9, DirectX11とOpenCLの連係動作が拡張機能でスムーズにできないことを示しています(パフォーマンスを犠牲にすれば連携の手はあるだろうけれども)。AMDのほうは 6850で実行しており、これはDirectX11対応ボードです。これらの結果から、OpenGLとの連携はやはり考慮にあるのだろうと感じました。
この結果から KhronosのOpenCL Registry を確認してみたところ、なんとDirectX9, DirectX11の拡張に関してはkhrカテゴリではなくnvのみの拡張となっていました。標準的に使えるのは DirectX10とやりとりまでいう状況のようです。