OpenCLではまった

OpenCL勉強中。

やっとHelloWorldを改造したプログラムが動いた。
とりあえずclBuildProgramでビルドエラー(エラーコード-11)になる。なるが原因がわからない。clGetProgramBuildInfoでエラーログを取得すれば詳細がわかるはずと思って試してもエラーログが取れない。

ここで思いっきり思い違いをしていた。エラーログを取得するの意味を自分はエラーログファイルのパス名を取得できると思い込んでいた。そのためchar型の256バイトぐらいの配列を渡していた。これだとエラーになって取得できない。

いろいろググりながら試したところstackoverflowのサンプルが気になる。

http://stackoverflow.com/questions/9464190/error-code-11-what-are-all-possible-reasons-of-getting-error-cl-build-prog

真面目にサイズを取得してその分のサイズをアロケートして再度呼び出している。試しにバッファのサイズを1024にして呼び出すとエラーにならず、ログそのものが得られた。

思い込みと手抜きはイカンなー。

で、ビルドできない原因はわかった。エラーを見るとcl_ucharなんて型は知らんと言うている。いやいやホスト側のコードはこの型でビルドは通るし(CL.hに定義があるんやろうけど)。KhronosのspecificationのPDFを確認する。

https://www.khronos.org/registry/cl/sdk/1.0/docs/man/xhtml/scalarDataTypes.html

確かにType in OpenCL language側は単にunsigned charになっている。C言語的には正しい気もするので、ここも自分の思い込みか。

思い込みはいかん。

コメント

このブログの人気の投稿

ST-M310 シフトレバーのカバー開け

Ride with GPSで作成したルートのgpxファイルとOruxMapsの関係

UbuntuのpostfixでGmailにメールを転送する