Vengineerの妄想(準備期間)

人生は短いけど、長いです。人生を楽しみましょう!

Intel Host Pipes




Intel Host Pipesは、"Small extension to OpenCL 2.x pipe API: cl_intel_fpga_host_pipe" と。

あー、OpenCL 2.x APIPipes を拡張しているのね。。。

Pipesのために、
 ・cl_int clWritePipeIntelFPGA( cl_mem pipe, const void *ptr );

 ・cl_int clReadPipeIntelFPGA( cl_mem pipe, void *ptr );

なるAPIを使って、PIOにて、Pipes へのデータの書き込みとデータの読み込みができる模様。

 ・void * clMapHostPipeIntelFPGA(
           cl_mem pipe, cl_map_flags map_flags, size_t requested_size, size_t * mapped_size, cl_int * errcode_ret );

 ・cl_int clUnmapHostPipeIntelFPGA(
           cl_mem pipe, void * mapped_ptr, size_t requested_size, size_t * unmapped_size );
にて、DMAっぽいこともできそう。

OpenCL 1.x のカーネルは、ローカルなメモリに対し、リード&ライトを行い、
複数のカーネルの場合は、これを繰り返すだけ

OpenCL 2.xの Pipesカーネルは、データのパイプラインができるので、
カーネル毎にローカルなメモリにアクセスすることなしに、パイプライン処理ができるのが特徴。

Intel FPGAでは、これを より使い安く & 性能向上 を実現するために API を追加したんでしょうね。。。