- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的 OpenCL 内核中,我有很多控制内存分配、循环迭代次数等的常量。使用全局 __constants 还是 #defines 更快?
最佳答案
与“普通”C 编译器相同的规则适用于 OpenCL 编译器:#define
在实际编译之前用值替换 ,因此它们被烘焙进入内核。
根据定义,__constant
变量分配在全局内存中,必须在使用前传输。这比使用 #define
d 文字要慢。然而,NVIDIA 和 AMD 的 GPU 架构缓存了这些值,并且比普通的全局内存读取速度更快。
故事的结尾和我的个人建议:使用#defines
来获取常量值和“魔数(Magic Number)”,使用__constant
内存来获取更大的快速但只读的内存块(例如查找表)。
关于OpenCL __constant 与#define,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15116521/
在我的 OpenCL 内核中,我有很多控制内存分配、循环迭代次数等的常量。使用全局 __constants 还是 #defines 更快? 最佳答案 与“普通”C 编译器相同的规则适用于 OpenCL
在我的 OpenCL 内核中,我有很多控制内存分配、循环迭代次数等的常量。使用全局 __constants 还是 #defines 更快? 最佳答案 与“普通”C 编译器相同的规则适用于 OpenCL
我想了解当我创建一个具有只读属性的缓冲区并将其与 __constant 一起使用时有什么区别内核中的地址空间限定符或与 const __global 一起使用地址空间限定符。 我已经发现这些并不是我问
我是 OpenCL 的新手,对这个限制感到非常困惑。例如,如果我想写一个 LCG,我必须使状态字可以修改为 rand()。和 srand() .在 ANSI C 中,我会这样做: /* ANSI C
据我所知。 CUDA 上的常量内存是一种特定的内存。而且它比全局内存更快。但在 OpenCL 的规范中。我得到以下的话。 The __constant or constant address spac
我是一名优秀的程序员,十分优秀!