首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >CUDA编程.配置内核参数+API函数

CUDA编程.配置内核参数+API函数

作者头像
云深无际
发布2021-03-12 14:42:10
发布2021-03-12 14:42:10
77500
代码可运行
举报
文章被收录于专栏:云深之无迹云深之无迹
运行总次数:0
代码可运行

为了我们获得并行能力,需要做一些配置CIA可以,这个配置在内核启动中写。它们指定了Grid中块的数量,和每一个块中线程的数量。每个快上面有512或者1024个线程。

GPU有多个Core,core被分为流处理器和流多处理器。GPU看作多个块(Block)的组合,每个块可以执行多个线程。

每个块绑定到GPU上的不同流多处理器。每个块在流多处理器上运行,一个块中的线程可以通过共享内存(Shared Memory)彼此通信。程序员无法选定哪个流多处理器将执行特定的块,也无法选定块和线程以何种顺序执行。

并行启动500个线程的快

或者两个线程,每个线程250个块。

因此,你必须修改内核启动配置里的值。

程序员必须注意,每个块的线程数量不能超过GPU设备所支持的最大限制。

这也是500个线程

__global__:与__device__,__host___一起是三个限定符关键字。这个的函数被声明为一个设备函数,当从主机调用时在设备上面执行,这个函数只能从主机调用

cudaMalloc:是动态分配

代码语言:javascript
代码运行次数:0
运行
复制
cudaMalloc(void ** d_pointer,size_t size);
代码语言:javascript
代码运行次数:0
运行
复制
cudaMalloc((void**)&d_c,sizeof(int));

以上code分配一个整数大小的内存块,并返回一个指向该内存位置的指针

cudaMemcpy:这个函数用于将一个内存区域复制到主机或者设备上的其他区域

代码语言:javascript
代码运行次数:0
运行
复制
cudaMemcpy(void *det_ptr,const void *src_ptr,size_t size,enum cudaMemcpyKind kind);
代码语言:javascript
代码运行次数:0
运行
复制
cudaMemcpy(&h_c,d_c,sizeof(int),cudaMemcpyDeviceToHost);

这个函数哟4个参数,一个是目标的指针,第二个参数是原指针,第三个是参数的数据的复制的大小,最后一个是复制的方向

cudaFree:是free函数

代码语言:javascript
代码运行次数:0
运行
复制
cudaFree(void * d_ptr);
代码语言:javascript
代码运行次数:0
运行
复制
cudaFree(d_c);

它释放了d_ptr指向的内存空间。使用Malloc使用Free释放~

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-02-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云深之无迹 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档