OpenCL for user systems on SoC prototypes

Is it possible to run OpenCL on a system developed by the user on SoC prototypes? To be more specific, I have a ZedBoard (Xilinx Zynq) with two ARM cores and a programmable logic (PL) area. If I create a simple proprietary system that implements a video processing accelerator in the logical area, the ARM core, and the AXI interconnect, what do I need to do to provide OpenCL support for this simple system? (In this simple system, the ARM core may be “Host”, and the video processing accelerator may be “device”).

I am a student and I have only some basic knowledge of OpenCL. I researched my question and just finished confusing myself. What needs to be done to provide OpenCL support for SoC? I understand that this can be a big project, but I need guidance on where to start and how to proceed.

+5
source share
5 answers

What do I need to do to provide OpenCL support for this simple system?

Deploy an OpenCL platform that uses either your ARM processor or FPGA (or both). I would say that it is almost impossible for you; ARM will probably offer one for the CPU if it were easy (and they definitely have the financial ability to use capable engineers / computer scientists), and the implementation of FPGA accelerators requires in-depth knowledge of FPGA development, as well as compiler theory and system design experience. I don't want to sound mean, but you don't seem to have any of these three.

You asked where to start? I recommend just writing the first accelerator, for example, adding a vector of numbers; as soon as you succeed, you will have a clearer picture of your task.

If you want to take a look at the link: Ettus USRP E310 is a zynq -based SDR device. Ettus has RFNoC technology that allows users to write their own blocks for transferring data through . Please note that it took a lot of engineers and quite a lot of time to start. Note that this is much simpler than implementing something that transforms OpenCL into an FPGA implementation.

+1
source

If you have access to Xilinx tools: Vivado HLS 15.1 System Edition should compile OpenCL kernels. It will also be included in the SDAccel toolkit.

Source: UG973: Vivado Design Suite User Guide Release Notes, Installation, and Licensing

An alternative could be a switch to Altera. They provide some good examples for the Altera Cyclone V SoC, which is comparable to Xilinx Zynq devices (also includes ARM Cortex-A9): AlteraSDK for OpenCL

+1
source

I am also a student, and my current project is also going in the same direction, I have successfully installed the opencl version called POCL on zedboard, it successfully detects the cpu zedboard processor. To install pocl, you need llvm and a horde of other things. but the basic steps for getting pocl on zedboard are below: -

  • Pocl installation:

http://www.hosseinabady.com/install-pocl-opencl

  1. Execution example
  2. : http://www.hosseinabady.com/embedded-system-by-examples/opencl_embedded_system/opencl-vector-addition

  3. Many dependencies: easy to resolve

but LLVM make sure you install version 3.4 for pocl 0.9

  1. Llvm installation steps

https://github.com/pacs-course/pacs/wiki/Instructions-to-install-clang-3.1-on-ubuntu-12.04.1-and-12.10

POCL 0.9 works successfully for me, since you are installing, you will encounter many other missing dependencies, such as hwloc, mesa libraries, open gl / cl headers icd loaders. Hope you can solve them as a very large list in a stack overflow.

To detect your fpga as an open cl device, this will not be a trivial task, you can refer to this link question which I posted on github

https://github.com/pocl/pocl/issues/285

as well as a research document published by hosseinbady found in the publication link on the pocl website

http://pocl.sourceforge.net/publications.html

hope this helps you

+1
source

Try the ARM OpenCL SDK. Zedboard has an ARM A9 processor, it must have a NEON SIMD vector block http://www.arm.com/products/processors/technologies/neon.php that can run OpenCL. See http://www.arm.com/products/multimedia/mali-technologies/opencl-for-neon.php .

Zedboard is not listed as an OpenCL platform https://www.khronos.org/conformance/adopters/conformant-products#opencl . Thus, there is a chance that the ARM driver will not work.

Good luck

0
source

If still relevant, try this OpenCL article on ZYNQ [PDF]

Also note that the Zynq-7000 is listed at https://www.khronos.org/conformance/adopters/conformant-products#opencl (OpenCL_1_0), hence compatibility.

-1
source

All Articles