CUDA线程分配<<<>>>
来源:互联网 发布:卖家怎么找淘宝小二 编辑:程序博客网 时间:2024/05/19 11:47
在cuda中,blockDim表示一个块中线程的维度信息,例如blockDim(2,1,1)代表一个块中有2个thread,gridDim表示一个网格中块的维度。
下面给出一个示例程序,这个程序来自CUDA C语言编程中文译本,如有侵权,联系删除。
#include "../common/common.h"#include <cuda_runtime.h>#include <stdio.h>/* * Display the dimensionality of a thread block and grid from the host and * device. */__global__ void checkIndex(void){ printf("threadIdx:(%d, %d, %d)\n", threadIdx.x, threadIdx.y, threadIdx.z); printf("---blockIdx:(%d, %d, %d)\n", blockIdx.x, blockIdx.y, blockIdx.z); printf("------blockDim:(%d, %d, %d)\n", blockDim.x, blockDim.y, blockDim.z); printf("---------gridDim:(%d, %d, %d)\n", gridDim.x, gridDim.y, gridDim.z);}int main(int argc, char **argv){ // define total data element int nElem = 6; // define grid and block structure dim3 block(3); dim3 grid((nElem + block.x - 1) / block.x); // check grid and block dimension from host side printf("grid.x %d, grid.y %d, grid.z %d,\n", grid.x, grid.y, grid.z); printf("block.x %d, block.y %d, block.z %d,\n", block.x, block.y, block.z); // check grid and block dimension from device side checkIndex<<<grid, block>>>(); // reset device before you leave CHECK(cudaDeviceReset()); return(0);}
编译与运行:
-bash-4.1$ nvcc -o a checkDimension.cu-bash-4.1$ ./agrid.x 2, grid.y 1, grid.z 1,block.x 3, block.y 1, block.z 1,threadIdx:(0, 0, 0)threadIdx:(1, 0, 0)threadIdx:(2, 0, 0)threadIdx:(0, 0, 0)threadIdx:(1, 0, 0)threadIdx:(2, 0, 0)---blockIdx:(1, 0, 0)---blockIdx:(1, 0, 0)---blockIdx:(1, 0, 0)---blockIdx:(0, 0, 0)---blockIdx:(0, 0, 0)---blockIdx:(0, 0, 0)------blockDim:(3, 1, 1)------blockDim:(3, 1, 1)------blockDim:(3, 1, 1)------blockDim:(3, 1, 1)------blockDim:(3, 1, 1)------blockDim:(3, 1, 1)---------gridDim:(2, 1, 1)---------gridDim:(2, 1, 1)---------gridDim:(2, 1, 1)---------gridDim:(2, 1, 1)---------gridDim:(2, 1, 1)---------gridDim:(2, 1, 1)-bash-4.1$
为了更加浅显地展示grid,block和thread之间的关系,我画了几个图:
阅读全文
0 0
- CUDA线程分配
- cuda之线程分配
- CUDA线程分配<<<>>>
- CUDA总结:线程网络和线程分配
- CUDA总结:线程网络和线程分配
- cuda线程
- CUDA线性内存分配
- CUDA数组分配
- cuda数组内存分配
- CUDA内存分配
- CUDA线性内存分配
- CUDA数组分配
- CUDA数组分配
- CUDA-CODE2-分配内存
- CUDA编程中线程分配的数组在register中还是local memory中?
- CUDA之编程中线程分配的数组在register中还是local memory中?
- CUDA:一维、二维的grid、block的核函数线程分配
- 【CUDA】二、内存分配函数
- 解决iptables重启失效问题
- mybatis执行批量更新batch update 的方法(oracle,mysql)
- Eclipse+Maven创建webapp项目<一>
- The specified child already has a parent. You must call removeView() on the child's parent first.;
- web 兼容性问题
- CUDA线程分配<<<>>>
- spring MVC自定义拦截器解析
- Week02_day02 面向对象编程(1)
- js如何禁止网页复制和右键
- Piwik-SDK浅谈
- Spring 定时任务之 @Scheduled cron表达式
- java通过jdbc连接Oracle通过数据库连接池实现增删改查
- Mac上安装Ports
- Java正则表达式的语法与示例