私はOpenCLボイラープレートコードの一部でcl_memを使用していますが、コンテキストを通じて使用しており、正確に何であるかを明確に理解していません。これまでフロートだったボードを押したり外したりするメモリのタイプとして使っています。OpenCLドキュメントを見てみましたが、cl_memが表示されません(表示されますか?)。それに関するドキュメントはありますか、それとも単純で誰かが説明できますか?
11925 次
2 に答える
11
cl_memタイプは、「メモリオブジェクト」へのハンドルです(OpenCL 1.1仕様のセクション3.5で説明されています)。これらは基本的にOpenCLカーネルの入力と出力であり、clCreateBufferなどのホストコードでOpenCLAPI呼び出しから返されます。
cl_mem clCreateBuffer (cl_context context, cl_mem_flags flags,
size_t size, void *host_ptr, cl_int *errcode_ret)
表示されるメモリ領域は、create buffer呼び出しで設定されたフラグに応じて、読み取り専用などのさまざまなアクセスパターンを許可するか、さまざまなメモリ領域に割り当てることができます。
ハンドルは通常、後で呼び出してメモリを解放できるように保存されます。例:
cl_int clReleaseMemObject (cl_mem memobj)
つまり、メモリが実際にどこにあるかを抽象化できます。データを関連するメモリにコピーしたり、OpenCL API clEnqueueWriteBufferおよびclEnqueueReadBufferを介してバックアウトしたりできますが、OpenCL実装は必要な場所にスペースを割り当てることができます。
于 2010-10-12T22:29:59.337 に答える
6
コンピューターの場合、cl_memは「メモリ識別子」(API /ドライバーが保持するもの/方法を知っているこの番号の下にメモリに関する情報を格納するもの)として使用するために予約されている番号(Linuxのファイルハンドラーなど)です。大きいですそしてそのようなもの)
于 2010-10-11T17:07:09.637 に答える