CUDA入门(6):常用函数介绍

来源:互联网 发布:魅蓝note6电信网络 编辑:程序博客网 时间:2024/06/05 08:45

常用的内存操作函数:

cudaMalloc()

1.函数原型:cudaError_t cudaMalloc (void **devPtr, size_t size)。

2.函数用处:与C语言中的malloc函数一样,只是此函数在GPU的内存你分配内存。

3.注意事项:

1)       可以将cudaMalloc()分配的指针传递给在设备上执行的函数;

2)       可以在设备代码中使用cudaMalloc()分配的指针进行设备内存读写操作;

3)       可以将cudaMalloc()分配的指针传递给在主机上执行的函数;

4)       不可以在主机代码中使用cudaMalloc()分配的指针进行主机内存读写操作(即不能进行解引用)。

cudaMemcpy()

1.函数原型:cudaError_tcudaMemcpy (void *dst, const void *src, size_t count, cudaMemcpyKind kind)。

2.函数作用:与c语言中的memcpy函数一样,只是此函数可以在主机内存和GPU内存之间互相拷贝数据。

3.函数参数:cudaMemcpyKindkind表示数据拷贝方向,如果kind赋值为cudaMemcpyDeviceToHost表示数据从设备内存拷贝到主机内存。

4.与C中的memcpy()一样,以同步方式执行,即当函数返回时,复制操作就已经完成了,并且在输出缓冲区中包含了复制进去的内容。

5.相应的有个异步方式执行的函数cudaMemcpyAsync(),这个函数详解请看下面的流一节有关内容。

cudaFree()

1.函数原型:cudaError_tcudaFree ( void* devPtr )。

2.函数作用:与c语言中的free()函数一样,只是此函数释放的是cudaMalloc()分配的内存。

 

常用线程操作函数:

线程同步__syncthreads(),这个函数的调用,将确保线程块中的每个线程都执行完__syscthreads()前面的语句后,才会执行下一条语句。

0 0
原创粉丝点击