cuda中各种类型的变量的总结(有转载的,有添加的)
2017-06-02 14:48
295 查看
1 定义和使用全局变量
[cpp] view
plaincopy
假设定义了全局变量 __device__ int *a;
我需要一个数组,动态分配,那么直接调用cudaMalloc来为a分配内存的话,是不行的。
具体做法如下
[cpp] view
plaincopy
int *tmp;
[cpp] view
plaincopy
cudaMalloc((void **)&tmp, sizeof(int) * num);
cudaMemcpyToSymbol(a, &tmp, sizeof(int *),size_t(0), cudaMemcpyHostToDevice);
使用cudaMemcpyToSymbol来把一个动态分配的设备指针写入一个静态的符号。所以是sizeof(int *),只是把指针写给a。
2. 定义和使用常量变量
1、赋值方法
__constant__ char g_chFuncIndex ;
cutilSafeCall( cudaMemcpyToSymbol( "g_chFuncIndex", i_chFuncIndex, sizeof( char ) ) ) ;
2、访问权限
只可以在cuda的__global__ 或者__device__函数中访问,不可以在外部C函数(extern "C" )中使用
3.定义和使用共享变量
在__global__核函数内部定义__shared__float Mds[TILE_WIDTH][TILE_WIDTH];
直接使用即可。
4.定义和使用local类型变量
默认在__global__内部直接定义的int a,即为local类型的变量
5,
使用cudaMemcpyToSymbol来把一个动态分配的设备指针写入一个静态的符号。所以是sizeof(int *),只是把指针写给a。
拷贝数组:
__device__ double d_a[2];
int main()
{
double h_a[2];
h_a[0]=0.1;
h_a[1]=0.2;
cudaMemcpyToSymbol(d_a, h_a, 2*sizeof(double));
return 0;
}
拷贝变量:
__device__ double d_a;
int main()
{
double h_a;
h_a=0.1;;
cudaMemcpyToSymbol(d_a, &h_a, sizeof(double));
return 0;
}
[cpp] view
plaincopy
假设定义了全局变量 __device__ int *a;
我需要一个数组,动态分配,那么直接调用cudaMalloc来为a分配内存的话,是不行的。
具体做法如下
[cpp] view
plaincopy
int *tmp;
[cpp] view
plaincopy
cudaMalloc((void **)&tmp, sizeof(int) * num);
cudaMemcpyToSymbol(a, &tmp, sizeof(int *),size_t(0), cudaMemcpyHostToDevice);
使用cudaMemcpyToSymbol来把一个动态分配的设备指针写入一个静态的符号。所以是sizeof(int *),只是把指针写给a。
2. 定义和使用常量变量
1、赋值方法
__constant__ char g_chFuncIndex ;
cutilSafeCall( cudaMemcpyToSymbol( "g_chFuncIndex", i_chFuncIndex, sizeof( char ) ) ) ;
2、访问权限
只可以在cuda的__global__ 或者__device__函数中访问,不可以在外部C函数(extern "C" )中使用
3.定义和使用共享变量
在__global__核函数内部定义__shared__float Mds[TILE_WIDTH][TILE_WIDTH];
直接使用即可。
4.定义和使用local类型变量
默认在__global__内部直接定义的int a,即为local类型的变量
5,
使用cudaMemcpyToSymbol来把一个动态分配的设备指针写入一个静态的符号。所以是sizeof(int *),只是把指针写给a。
拷贝数组:
__device__ double d_a[2];
int main()
{
double h_a[2];
h_a[0]=0.1;
h_a[1]=0.2;
cudaMemcpyToSymbol(d_a, h_a, 2*sizeof(double));
return 0;
}
拷贝变量:
__device__ double d_a;
int main()
{
double h_a;
h_a=0.1;;
cudaMemcpyToSymbol(d_a, &h_a, sizeof(double));
return 0;
}
相关文章推荐
- java各种类型转化的转载集合 慢慢添加
- NSString的各种用法总结(创建、截取、判断比较、转化数据类型、拼接、替换、添加、追加、读取、写入、删去、...
- (转载一些资料) Android打开各种类型的文件方法总结..........
- NSString的各种用法总结(创建、截取、判断比较、转化数据类型、拼接、替换、添加、追加、读取、写入、删去、改变)
- NSString的各种用法总结(创建、截取、判断比较、转化数据类型、拼接、替换、添加、追加、读取、写入、删去、改变)
- NSString的各种用法总结(创建、截取、判断比较、转化数据类型、拼接、替换、添加、追加、读取、写入、删去、...
- 对DSP中unsigned long的发现以及对各种变量类型的总结
- 自己总结的一些wap知识-WAP站点的MIME类型有哪些?如何添加?
- cuda 中给 __constant__类型变量赋值
- VB用API实现各种对话框(总结)(转载)
- C语言中各种数据类型长度的总结:(参考The C Programming Language)
- linux环境变量设置总结(转载)
- Flex应用程序中嵌入各种类型的资源方法总结
- 【转载】如何给IIS添加能访问的文件类型
- c语言变量的存储种类和存储器类型 (转载)
- Linux 环境变量总结 --转载
- 总结PHP中返回各种类型的时间函数
- ISO C++基本类型和变量(转载)
- java的各种变量类型的转换
- Java学习总结之第二章 数据类型和变量