Intel® High Level Design
Support for Intel® High Level Synthesis Compiler, DSP Builder, OneAPI for Intel® FPGAs, Intel® FPGA SDK for OpenCL™
Announcements
The Intel sign-in experience has changed to support enhanced security controls. If you sign in, click here for more information.
606 Discussions

Host Pipes not working as documented in Programming Guide

okramer
New Contributor I
607 Views

Section 5.5.6.4 of the OpenCL FPGA Programming Guide has in the host code example a direct call to clReadPipeIntelFPGA() and clWritePipeIntelFPGA(), while the only downloadable code example (that I know of) that shows host pipes, "loopback_hostpipe", does the following:

map_pipe_fn = (void * (*) (cl_mem, cl_map_flags, size_t, size_t *, cl_int *)) clGetExtensionFunctionAddress("clMapHostPipeIntelFPGA"); unmap_pipe_fn = (cl_int (*) (cl_mem, void *, size_t, size_t *)) clGetExtensionFunctionAddress("clUnmapHostPipeIntelFPGA");

So I tried modifying my host pipe code to use the same clGetExtensionFunctionAddress to access the clReadPipeIntelFPGA and clWritePipeIntelFPGA and that worked -- well, sort of -- at least it didn't hang like when I was calling clWritePipeIntelFPGA directly.

 

Is it a requirement to use clGetExtensionFunctionAddress to fetch those functions? Or should I be able to call clWritePipeIntelFPGA directly? Also, clGetExtensionFunctionAddress is marked as deprecated in cl.h, so obviously there's a better way to do it.

 

 

0 Kudos
2 Replies
MEIYAN_L_Intel
Employee
389 Views

Hi,

 

I am checking it internally.

 

Thanks

MEIYAN_L_Intel
Employee
389 Views

Hi,

I had reviewed the problem stated.

According to https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/hb/opencl-sdk/aocl_programming_guide.pdf in chapter 6.4 stated: " when you link your host application to the FPGA Client Driver (FCD), you cannot directly reference these Custom Platformspecific functions. To reference Custom Platform-specific user-accessible functions while linking to the FCD, include the clGetBoardExtensionFunctionAddressIntelFPGA extension in your host application".

 

It seems like the function " clGetBoardExtensionFunctionAddressIntelFPGA" is used to point the function which is not specified in OpenCL Specification 2.0: https://www.khronos.org/registry/OpenCL/specs/opencl-2.0.pdf in chapter 5.4. Since the function eg:  clReadPipeIntelFPGA, clWritePipeIntelFPGA, clMapHostPipeIntelFPGA, and clUnmapHostPipeIntelFPGA is not specified in OpenCL Specification, thus it need the function " clGetBoardExtensionFunctionAddressIntelFPGA" to point out the function.

 

Also, I had reviewed the cl.h file. Since clGetBoardExtensionFunctionAddress is deprecated, it should be replace by another function with different name. I am not sure whether it is replaced "clGetBoardExtensionFunctionAddressIntelFPGA". But there is no " clGetBoardExtensionFunctionAddressIntelFPGA" is stated in the file. I have to check internally with the developer again. I will reply here once the developer reply to me.

 

Thanks.

Reply