UMLクラス図(図2.1「図:OpenCL API UMLクラス図」)を見て頂くとContextオブジェクトは"has-a"の関連(集約)を以下のオブジェクトと持ちます。
つまりContextオブジェクトは、オブジェクトライフサイクルの依存関係として、例えばContextが削除されても、他のオブジェクトが消えるとは限らないという緩い制約を持った依存関係をもちます。いわばContextはOpenCLアプリケーションのオブジェクトの中心的なものです。
コンポジション関連の定義のとおり、Contextオブジェクトと他のオブジェクトの間にはライフサイクルの依存関係があります。
ではランタイムAPIとは何なのか、何をするのでしょうか?
ランタイムAPIが行なうのは、Contextを使ってアプリケーションの実行に必要な様々なリソースの設定や制御を行なうことです。
ランタイムAPIが始めに着手するのは、コマンドキュー(CommandQueue)の設定です。一つ以上のコマンドキューをデバイスにアタッチさせます。
次にメモリーオブジェクトやサンプラオブジェクトを生成、カーネルプログラムのソースコードをロードしてコンパイルとリンク等をします。
最後に実行可能カーネルプログラムをコマンドキューに挿入します。
Copyright 2018-2019, by Masaki Komatsu