我正在尝试为物理学中的一个应用程序编写内核。并行化是在方向的正交上进行的,每个方向导致2D笛卡尔区域的扫描。这是内核。它实际上工作得很好,产生了很好的结果。i-1)],shared[tid]*kappaij);
// End of horizontal sweep // End of vertical sweep我如何优化这段代码的执行根据Visual profiler,这个内核的占用率非常低,受到寄存器的限制。谢谢!
我在内核中使用大量无符号字符,我使用clCreateBuffer创建内存对象。然后我通过clEnqueueWriteBuffer将一大块无符号字符复制到这个内存对象中。然后我循环调用从这个内存对象中读取的内核,执行一些逻辑并将新数据写到相同的位置(在这个循环中我不调用clEnqueueWriteBuffer或clEnqueueReadBuffer )。以下是内核代码: int grId = ge