- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Luis Cabellos 的 System.GPU.OpenCL
模块来控制 OpenCL 内核。一切运行良好,但为了加快速度,我尝试将一些全局内存缓存到本地缓冲区中。我刚刚注意到,使用 clSetKernelArg 的当前定义似乎不可能传递本地缓冲区,但也许有人可以启发我?
定义是,
clSetKernelArg :: Storable a => CLKernel -> CLuint -> a -> IO ()
clSetKernelArg krn idx val = with val $ \pval -> do
whenSuccess (raw_clSetKernelArg krn idx (fromIntegral . sizeOf $ val) (castPtr pval))
$ return ()
原始函数定义为,
foreign import CALLCONV "clSetKernelArg" raw_clSetKernelArg ::
CLKernel -> CLuint -> CSize -> Ptr () -> IO CLint
因此,高层clSetKernelArg
可以方便地计算出内存的大小,并提取指向它的指针。这对于全局内存来说是完美的,但是当请求本地内存时使用 clSetKernelArg 的方式似乎是在 CSize 中指定所需内存的大小,并设置Ptr
为零。当然,在这里放置 nullPtr
是行不通的,那么我该如何规避这个问题呢?我会直接调用raw_clSetKernelArg
,但似乎它不是由模块导出的。
谢谢。
最佳答案
我认为没有任何方法可以进行黑客攻击,使 pval
最终成为 nullPtr
。
这似乎是包装 API 中相当简单的遗漏;我建议简单地 reporting it而不是试图绕过它:)
关于haskell - 如何使用 clSetKernelArg 在 OpenCL Haskell 程序中设置本地内存大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8813201/
我正在研究 OpenCl 编程指南中的 HelloWorld 示例,当我尝试运行此函数 (clSetKernelArg) 时,我不断收到 EXC_BAD_ACCESS。我的函数的外观基本上是... c
我是 OpenCL 的新手。我试图将 5 个参数传递给内核:一个输入缓冲区、一个输出缓冲区、一个整数和 2 个输入缓冲区大小的局部数组。 //Create input/output cl_mem ob
我即将完成将一些 CUDA 代码重写为 OpenCL 的工作。但是我遇到了这个可怕的运行时错误。 我调用的内核接受这样的参数: __kernel void kernel_forwardProject(
来自 Khronos 网站关于 clSetKernelArg 的线程安全: All OpenCL API calls are thread-safe except clSetKernelArg, wh
我正在使用 Luis Cabellos 的 System.GPU.OpenCL 模块来控制 OpenCL 内核。一切运行良好,但为了加快速度,我尝试将一些全局内存缓存到本地缓冲区中。我刚刚注意到,使用
我正在通过实现 Matrix 点积来深入研究 OpenCL。我在让我的内核返回与我的主机相同的值时遇到了问题。 我做了一个封装函数,分配设备内存,设置内核参数,运行内核并将结果返回给主机。 /* T
我是一名优秀的程序员,十分优秀!