clCreateContext

提供: Tommy6
移動: 案内検索
OpenCL > OpenCLマニュアル > OpenCLランタイム > OpenCLコンテキスト > clCreateContext

cl_context clCreateContext (const cl_context_properties *properties, cl_uint num_devices, const cl_device_id *devices,                   void (CL_CALLBACK *pfn_notify)(const char *errinfo, const void *private_info, size_t cb, void *user_data),                   void *user_data, cl_int *errcode_ret)

OpenCLコンテキストを作成します。OpenCLコンテキストは、1つ以上のデバイスと関連付けられて作成されます。コンテキストは、コマンドキューメモリプログラムカーネルなどといったオブジェクトを扱うために、また、コンテキスト内の指定された1つ以上のデバイス上でカーネルを実行するために用いられます。

-1.1() : OpenCL 1.1で削除

+1.1() : OpenCL 1.1で追加

パラメータ

properties
コンテキストのプロパティ名とそれに対応する値のリストを指定します。それぞれのプロパティ名には、対応する値が続きます。リストは0を終端とします。サポートされているプロパティは以下の表のとおりです。properties には NULL を指定することができ、このとき、どのプラットフォームが選択されるかは実装に依存します。
cl_context_properties enum プロパティ値 解説
CL_CONTEXT_PLATFORM cl_platform_id 利用するプラットフォームを指定します。
num_devices
devices 引数に渡したデバイスの数を指定します。
devices
あるOpenCLプラットフォームについて clGetDeviceIDs で取得したユニークなデバイス[1]のリストへのポインタを指定します。
pfn_notify
コールバック関数を登録します。このコールバック関数は、コンテキスト内で発生したエラーについての情報を通知するために OpenCL 実装によって利用されます。このコールバック関数は、非同期的に呼び出されます。コールバック関数がスレッドセーフであることを確実にするのは、アプリケーションの責任です。このコールバック関数に対するパラメータは以下のとおりです。
errinfo
エラー文字列に対するポインタです。
private_info, cb
エラーをデバッグする際に有用となる付加的情報を記録するのに用いることのできる、OpenCL実装によって返されるバイナリデータへのポインタです。
user_data
ユーザが与えたデータへのポインタです。
pfn_notify が NULL のとき、コールバック関数は登録されません。
+1.1(注: コンテキストの外で発生したエラーについての通知が必要な場合がいくつかあります。このような通知は、pfn_notify コールバック経由によっては行われません。このような通知がどこへ行くかは実装依存です。)
user_data
pfn_notify が呼び出されたときに、user_data 引数として渡されます。NULL を指定することもできます。
errcode_ret
適切なエラーコードを返します。errcode_ret が NULL のとき、エラーコードは返されません。

エラー

コンテキストの作成が成功すると、clCreateContext は有効な非ゼロのコンテキストを返し errcode_ret に CL_SUCCESS を設定します。そうでない場合は NULL を返して errcode_ret に以下のエラーのうちのひとつを設定します。

  • CL_INVALID_PLATFORM - properties が NULL でかつプラットフォームがひとつも選択されなかったとき。または、properties 内で指定したプラットフォームが有効なプラットフォームでないとき。
  • -1.1(CL_INVALID_VALUE)+1.1(CL_INVALID_PROPERTY) - properties 内で指定したコンテキストプロパティ名がサポートされているプロパティ名でないとき。または、サポートされているプロパティ名に対して指定した値が有効でないとき。または、同じプロパティ名が重複して指定されているとき。
  • CL_INVALID_VALUE - devices が NULL のとき。
  • CL_INVALID_VALUE - num_devices が0のとき。
  • CL_INVALID_VALUE - pfn_notify が NULL で user_data が NULL でないとき。
  • CL_INVALID_DEVICE - devices に有効でないデバイスが含まれているとき。-1.1(または、指定したプラットフォームと関連付けられたものでないとき。)
  • CL_DEVICE_NOT_AVAILABLE - devices 内のデバイスが、clGetDeviceIDs で返されたデバイスであるものの現在利用可能でないとき。
  • +1.1(CL_OUT_OF_RESOURCES - デバイス上でのリソース確保に失敗したとき。)
  • CL_OUT_OF_HOST_MEMORY - ホスト上でのリソース確保に失敗したとき。

変更記録

脚注

  1. 重複して指定されたデバイスは無視されます


―――― Version 1.1, The OpenCL Specification より翻訳