- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi everyone,
I'm writing an OpenCL image segmentation code. The algorithm I chose is mostly parallel, meaning that distances between pixels and cluster centers are calculated in parallel. However, there are three kernels: first and third are pipeline kernels, and second is NDRange. The question is: can NDRange kernel forward data to kernels via channels and how, and how to preserve ordering of the pixels? Thanks in advance!Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
You can find the answers to your questions in "Intel FPGA SDK for OpenCL Programming Guide, Section 5.4".
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thank you for your comment. I already read all Altera manuals, however I still do not understand how to maintain ordering of the channels (writing from NDRange to other kernels) since NDRange kernel executes work-items out-of-order. I'm also concerned about the length of the channel. If I have an image of size 300x400, do I need to create 300x400 channel, or I should design shorter channel and execute loop several times?
--- Quote Start --- You can find the answers to your questions in "Intel FPGA SDK for OpenCL Programming Guide, Section 5.4". --- Quote End ---- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
As mentioned in 5.4.3, if certain requirements are met, work-item ordering will be deterministic (i.e. no out-of-order execution); if these conditions are not met, the compiler will warn you about non-deterministic ordering. Furthermore, using channels in NDRange kernels limits number of parallel work-groups per compute unit to one.
Regarding depth of channels, it depends on how fast data is produced and consumed. You are not supposed to make the channel big enough to be able to keep all the data inside of it at once; as long as you make sure data is produced and consumed at a similar rate, you can keep the channel depth small.- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page