OpenCL参数存储器类型
2014-01-02 10:16 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;//不合法,不在内核函数作用域
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架