XilinxのSDAccelでは、OpenCLをサポートしています。
FPGAで処理する部分をOpenCLのカーネルと記述します。
一般的なGPGPUでのOpenCLでは、GPU内のコアで並列処理するようにカーネルコードを書きます。
FPGAで処理する部分をOpenCLのカーネルと記述します。
一般的なGPGPUでのOpenCLでは、GPU内のコアで並列処理するようにカーネルコードを書きます。
引用 //call once to guarentee that all buffers are migrated to device memory err = clEnqueueTask(m_world.command_queue, kernel, 0, NULL, &events[evtKernelExec]); if (err != CL_SUCCESS) { LogError("[EX1] Failed to execute kernel %d", err); LogError("Test failed"); return false; } clFinish(m_world.command_queue);
clEnqueueTask関数にて、FPGA部を呼び出しています。
GPGPUでは、clEnqueueTask関数ではなく、clEnqueueNDRangeKernel関数を呼び出します。
FPGA部の関数opencl_sw_maxscoreです。
ホスト側のコードはOpenCL APIを使っていますが、
FPGA側ではOpenCLのカーネルコード記述ではなく、Vivado HLS Cコードになっています。
ホスト側のコードはOpenCL APIを使っていますが、
FPGA側ではOpenCLのカーネルコード記述ではなく、Vivado HLS Cコードになっています。
この点が、XilinxのSDAccelのポイントです。