clGetDeviceIDs で原因不明のエラーが発生するとき
エラーの症状
OpenCL を C# から実行し、VisualStudio によってデバッグをするとき、clGetDeviceIDs 関数(メソッド)などで原因不明のエラーが発生することがあります。エラーが発生するとデバッグは停止され、clGetDeviceIDs 以降に処理が移行しません。他のプロジェクトで同様のソースコードを実行してもエラーは発生せず、さらに try/catch による例外捕捉もすり抜けてしまいます。
ここで VisualStudio のバージョンは 2012 で確認しています。
解決方法
.NET Framework のバージョンが原因となっているようですが、詳細については追求して確認していません。".NET Framework 4.5" を対象とするプロジェクトで特に発生している不具合のようであり、一度対象のフレームワークを変更してから再度ビルドした所、不具合は解消され、その後も継続して不具合は確認されませんでした。
- プロジェクトのプロパティから[対象のフレームワーク]を[.Net Framework 4 Client Profile]より前の値に変更してビルドする。
- プロジェクトのプロパティから[対象のフレームワーク]を元に戻してビルドする。
- このエラーが発生した時の値は[.Net Framework 4.5]でした。一度4.5より前のバージョンでビルドして実行した所、正常に動作しました。その後、再度4.5に戻してビルドした所、正常に動作するようになりました。原因は不明です。