代码改变世界

OpenCL参数存储器类型

  valerlina  阅读(1305)  评论(0编辑  收藏  举报

转自:http://blog.csdn.net/eric41050808/article/details/16341227

opencl内核参数分为global/local/constant/private四种。定义时需要使用地址空间限定符来指定,限定符分别为__global/__local/__constant/__private,空间位置前加两个下划线。

下面总结几条定义的规律:

private:

1.未指定地址空间的变量默认为private类型;

2.内核函数的参数声明时,指针参数不能指定为private,不能缺省地址空间限定符,如例1;

global:

3.全局地址限定符,__global,只能用来限制指针型数据(全局地址空间的指针可以作为函数的参数和函数内声明的变量);

4.全局地址限定符,不能用来限定图像类型image2d_t;

constant:

5.常量地址空间限定符,用来描述只读全局内存地址空间的变量,即是全局变量,只读。

6.图像类型,image2d_t,不能在常量地址空间分配;

7.常量地址空间的指针可以作为函数的参数和函数内声明的变量;

local:

8.同一个workgroup内的工作项通用一个局部地址空间,__local。
9.内核函数中声明的变量可以在local空间分配,但又一下限制,如例2:
a.声明必须出现在内核函数作用域;
b.不能被初始化;

例1.__kernel void my_func(int *p){}//不允许内核指针类型参数为private
例2.
__kernel void my_func(__local float *para)
{
local float4 *p;//合法
local float4 a; //合法
local float4 b = (float4)(0);//不合法,不能初始化
if(...)
{
local float c;//不合法,不在内核函数作用域
}
}

编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示