是否可以在用户在SoC原型开发板上设计的系统上运行OpenCL?更具体地说,我有一个ZedBoard(Xilinx Zynq),它具有双ARM内核和可编程逻辑(PL)区域。如果我设计一个我自己的简单系统,在逻辑区域,ARM内核和AXI互连中实现视频处理加速器,我需要做些什么才能为这个简单的系统提供OpenCL支持? (在这个简单的系统中,ARM内核可能是" Host"视频处理加速器可能是"设备")。
我是学生,我对OpenCL只有一些基本知识。我已经研究过我的问题,但最终只是让自己感到困惑。为SoC提供OpenCL支持需要做些什么?我知道这可能是一个很大的项目,但我需要一个指导从哪里开始以及如何继续。
答案 0 :(得分:1)
我需要做些什么才能为这个简单的系统提供OpenCL支持?
实施一个OpenCL平台,可以使用ARM CPU或FPGA(或两者)。我说这对你来说几乎是不可能的; ARM肯定会为CPU提供一个(如果它很容易(并且他们肯定有财务手段雇用有能力的工程师/计算机科学家),并且在FPGA上实现加速器需要深入的FPGA开发知识,以及编译器理论和系统设计经验。我不想听起来很卑鄙,但你似乎没有这三个。
你问从哪里开始;我建议只写一个第一个加速器,例如加上一个数字向量;只要你有这个,你就会更清楚地了解你的任务。
如果您想查看引用:Ettus USRP E310是基于zynq的SDR设备。 Ettus有一项名为RFNoC的技术,allows users to write their own blocks to push data through。请注意,这需要相当多的工程师并且需要一段时间才能开始。进一步注意,它比实现将OpenCL转换为FPGA实现的东西要容易得多。
答案 1 :(得分:1)
如果您可以访问Xilinx工具:Vivado HLS 15.1 System Edition应该编译OpenCL内核。这也将包含在SDAccel工具套件中。
来源:UG973: Vivado Design Suite User Guide Release Notes, Installation,and Licensing
另一种选择可能是切换到Altera。它们为Altera Cyclone V SoC提供了一些很好的示例,与Xilinx Zynq器件(还包括ARM Cortex-A9)相当: AlteraSDK for OpenCL
答案 2 :(得分:1)
我也是一名学生,我目前的项目也在朝着类似的方向发展,我已经在zedboard上成功安装了一个名为POCL的opencl版本,它成功检测到了zedboard的arm cpu。要安装pocl,你需要llvm和其他一些东西。但是在zedboard上获得pocl的基本步骤如下: -
http://www.hosseinabady.com/install-pocl-opencl
很多依赖:可以轻松解决
但LLVM确保为pocl 0.9安装3.4版本
POCL 0.9对我来说是成功的,因为你进行安装时你会遇到许多其他缺失的依赖项,如hwloc,mesa库,open gl / cl header icd loaders我希望你能解决它们作为一个非常大的列表堆栈溢出。
为了检测你的fpga是一个开放的cl设备,这不会是一件微不足道的事情,你可以参考我在github上发布的这个链接问题
https://github.com/pocl/pocl/issues/285
以及hosseinbady发表的研究论文在pocl网站上的出版物链接中找到
http://pocl.sourceforge.net/publications.html
希望这可以帮助你
答案 3 :(得分:0)
尝试使用ARM OpenCL SDK。 Zedboard有一个ARM A9 CPU,它应该有一个可以运行OpenCL的NEON SIMD向量单元http://www.arm.com/products/processors/technologies/neon.php。请参阅http://www.arm.com/products/multimedia/mali-technologies/opencl-for-neon.php。
Zedboard未列为符合OpenCL标准的平台https://www.khronos.org/conformance/adopters/conformant-products#opencl。 所以ARM驱动程序有可能不起作用。
祝你好运!答案 4 :(得分:-1)
如果仍然相关,请尝试使用此论文OpenCL on ZYNQ [PDF]
另请注意,Zynq-7000列在https://www.khronos.org/conformance/adopters/conformant-products#opencl(OpenCL_1_0)上,因此兼容性。