作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
关于 __local 变量的原子访问:
我知道与本地操作相比,进行全局操作的速度很慢。从这个意义上说,我想对某些变量进行原子访问。
我知道我可以在 OpenCL 中进行原子操作:
// Program A:
#pragma OPENCL EXTENSION cl_khr_global_int32_base_atomics : enable
#pragma OPENCL EXTENSION cl_khr_local_int32_base_atomics : enable
__kernel void test(global int * num)
{
atom_inc(&num[0]);
}
// Program B: (it doesn't work, just to show how I'd like it to be)
#pragma OPENCL EXTENSION cl_khr_global_int32_base_atomics : enable
#pragma OPENCL EXTENSION cl_khr_local_int32_base_atomics : enable
__kernel void test(global int * num, const int numOperations)
{
__local int num;
if (get_global_id(0) < numOperations) {
atom_inc(&num);
}
}
最佳答案
通常,您有一个线程初始化共享(本地)原子,然后是一些屏障。 IE。你的内核是这样启动的:
__local int sharedNum;
if (get_local_id (0) == 0) {
sharedNum = 0;
}
barrier (CLK_LOCAL_MEM_FENCE);
// Now, you can use sharedNum
while (is_work_left ()) {
atomic_inc (&sharedNum);
}
关于opencl - __local 原子在 opencl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9708642/
关于 __local 变量的原子访问: 我知道与本地操作相比,进行全局操作的速度很慢。从这个意义上说,我想对某些变量进行原子访问。 我知道我可以在 OpenCL 中进行原子操作: // Program
我有一个内核在减少之前将一些部分结果存储在本地数组中它们变成一个单一的值(见下面的例子)。还原过程前开始时,放置一个屏障以确保所有线程都已成功写入它们的部分数据。但是,屏障将临时数组的值重置为默认值(
我在这里对 OpenCL 中的 __local 内存感到困惑。我读了一些规范说数据流必须从主机到__Global,然后是__Local。但我也看到了一些像这样的内核函数: __kernel void
我对 OpenCL 编译器对指向存储在本地内存中的结构内的全局内存指针的响应感到困惑。这是一个最小的测试用例: struct Helper { unsigned char bytes[3276
在我的 C OpenCL 代码中,我使用 clSetKernelArg 创建“可变大小”__local 内存以用于我的内核,这在 OpenCL 本身中不可用。看我的例子: clSetKernelArg
我是一名优秀的程序员,十分优秀!