NPAPI で WebCL を実装してみた

今のところ、WebCL については、仕様書のドラフトすらないまっさらな状態なので、API の仕様などは勝手に決めて実装しました。APIリファレンス(整備中)に簡単なサンプルコードを載せていますが、基本的には OpenCL のネイティブ API の仕様をできるだけ保持しつつ、各 GetFoobarInfo 関数などのように引数に結果を返していた関数は全て戻り値で返すようにし、さらに、エラーが発生したときはエラーコードを例外メッセージに設定して例外を投げるようにしています。

プラグインは、ダウンロードページからダウンロードできます。2011年6月29日時点では Windows のみで利用可能で、Firefox, Google Chrome, Opera, Safari での動作を確認しています。NPAPI に対応していない IE では利用できません。また、既知の問題として、Firefox では投げた例外が一切キャッチされずに素通りしてしまう現象を確認しています。

WebCL コードの実行には OpenCL 実行環境が別途必要です。

デバイス情報取得ページで、WebCL で利用可能なデバイスそれぞれについての情報を取得できますので、動作確認用にどうぞ。

詳しいお話はまた別エントリで。

ベンダ・デバイスごとの OpenCL の倍精度浮動小数点数への対応状況

現行の OpenCL (OpenCL 1.1) は、標準では倍精度浮動小数点数 (double) の取り扱いをサポートしていません。標準で利用可能なのは単精度浮動小数点数 (float) のみであり、倍精度の利用には cl_khr_fp64 あるいは各ベンダ固有の拡張機能の導入が必要です。

CPU はまあ置いておくとして、GPU はベンダ・デバイスごとに倍精度浮動小数点への対応がまちまちで、同じベンダでも倍精度が利用できるデバイスとそうでないデバイスにわかれていたりと、わりと面倒な状態です。

CPU だけの端末やら Radeon 積んだ端末やら GeForce 積んだ端末やら、いろいろな環境でプラグインのテストをしているうちにわけがわからなくなってきたので、ベンダ・デバイスごとの倍精度浮動小数点数への現時点(2011年6月22日現在)での対応状況をコンシューマ向けGPUを対象にしてまとめてみました。

以下の資料をもとにまとめました。必要そうなところだけを抜き出して読んだので、おもいっきり間違っているかもしれません。参考程度にどうぞ。

(more…)