当前位置: 首页 > news >正文

雅安市网站建设_网站建设公司_代码压缩_seo优化

网站收录低的原因,asp 网站开发教程,百度网页打不开,商城网站建设一般需要多少钱相关阅读 CUDA Chttps://blog.csdn.net/weixin_45791458/category_12530616.html?spm1001.2014.3001.5482 第一百篇博客#xff0c;写点不一样的。 当核函数在主机端被调用时#xff0c;它会被转移到设备端执行#xff0c;此时设备会根据核函数的调用格式产生对应的线程(…相关阅读 CUDA Chttps://blog.csdn.net/weixin_45791458/category_12530616.html?spm1001.2014.3001.5482 第一百篇博客写点不一样的。  当核函数在主机端被调用时它会被转移到设备端执行此时设备会根据核函数的调用格式产生对应的线程(thread)并且每个线程都执行核函数指定的语句。 CUDA提供了线程的层次结构以便于组织线程自顶而下可以分为线程格、线程块和线程。由一个内核启动的所有线程统称为一个线程格(grid)同一线程格中的所有线程共享相同的全局内存空间。一个线程格由多个线程块(block)构成一个线程块由包含若干线程同一线程块内的线程可以通过以下两种方式协作而不同线程块内线程不能协作。 同步共享内存 线程通过下面两个核函数的预置变量来区分彼此预置变量代表着CUDA在运行时为每一个进程都分配了这两个变量基于这两个变量可以将一块数据分给不同的进程处理。 blockIdx线程块在线程格内的索引threadIdx线程在线程块中的索引 这两个变量是由一个名为uint3的结构定义的这实际上就是CUDA内置的一个包含三个无符号整数的结构体如下所示。 //这个定义在vector_types.h头文件中 struct __device_builtin__ uint3 {unsigned int x, y, z; };typedef __device_builtin__ struct uint3 uint3; 根据定义这两个变量可以通过下面的方式访问结构的成员。 blockIdx.x //线程块索引的x分量 blockIdx.y //线程块索引的y分量 blockIdx.z //线程块索引的y分量 threadIdx.x //线程索引的x分量 threadIdx.y //线程索引的y分量 threadIdx.z //线程索引的z分量 为什么这两个结构都是三个分量因为CUDA最多支持组织三维的层次结构即线程块在线程格中的分布最多有三个维度而线程在线程块中的分布最多有三个维度。CUDA使用了下面两个预置变量来保存层次结构的维度大小。 blockDim线程块的维度大小用线程块中的线程数来表示gridDim线程格的维度大小用线程格中的线程块数来表示 这两个预置变量是由一个名为dim3的结构定义的这实际上也是CUDA内置的一个包含三个无符号整数的结构体如下所示。 //这个定义在vector_types.h头文件中 struct __device_builtin__ dim3 {unsigned int x, y, z; #if defined(__cplusplus) #if __cplusplus 201103L__host__ __device__ constexpr dim3(unsigned int vx 1, unsigned int vy 1, unsigned int vz 1) : x(vx), y(vy), z(vz) {}__host__ __device__ constexpr dim3(uint3 v) : x(v.x), y(v.y), z(v.z) {}__host__ __device__ constexpr operator uint3(void) const { return uint3{x, y, z}; } #else__host__ __device__ dim3(unsigned int vx 1, unsigned int vy 1, unsigned int vz 1) : x(vx), y(vy), z(vz) {}__host__ __device__ dim3(uint3 v) : x(v.x), y(v.y), z(v.z) {}__host__ __device__ operator uint3(void) const { uint3 t; t.x x; t.y y; t.z z; return t; } #endif #endif /* __cplusplus */ };typedef __device_builtin__ struct dim3 dim3; 根据定义这两个变量可以通过下面的方式访问结构的成员。 blockDim.x //线程块x方向的维度大小 blockDim.y //线程块y方向的维度大小 blockDim.z //线程块z方向的维度大小 gridDim.x //线程格x方向的维度大小 gridDim.y //线程格y方向的维度大小 gridDim.z //线程格z方向的维度大小 通常情况下一个线程格拥有两个维度即一个线程块拥有三个维度。如果维度数小于3则多余的维度对应的Dim变量成员会被初始化为1。 需要特别说明的是上面谈到的四个预置变量只有在核函数内部也可以说设备端才能访问到。而在主机端为了调用核函数可以自行定义dim3数据类型的变量这些在主机端定义的变量在核函数内部是不可访问的。 下面的程序验证了如何使用这些预置变量以及自行定义dim3数据类型的变量。 #include cuda_runtime.h #include stdio.h__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) {//定义数据量int nElem 6;//定义了两个dim类型的变量block和grid用于核函数调用dim3 block(3); //注意这里使用了构造函数创建结构变量dim3 grid((nElem block.x - 1) / block.x);//显示block和grid的分量值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);//使用block和grid进行核函数调用checkIndexgrid, block();//复位设备端cudaDeviceReset();return(0); } 因为printf函数只支持Fermi架构以上的GPU架构所以在编译时需要指定架构为sm_20或以上如下所示默认情况下nvcc会产生它所支持的最低版本架构的代码。 $nvcc -archsm_20 checkDimension.cu -o check $./check 程序的输出如下所示。  grid.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:(0, 0, 0) blockIdx:(0, 0, 0) blockIdx:(0, 0, 0) blockIdx:(1, 0, 0) blockIdx:(1, 0, 0) blockIdx:(1, 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) 写在最后这是我的第100篇博客回想从写第一篇博客到现在也只有短短10个月但是发博客似乎已经成为了我的习惯希望自己能一直坚持下去努力提升自己的技术 最后的最后感谢我的父母和小李同学一直以来的支持与帮助
http://www.ihoyoo.com/news/26273.html

相关文章:

  • 青岛李沧区城乡建设局网站北京网站建设方案报价
  • 企业网站建设国内外差异工商营业执照咨询电话
  • 大庆网站建设黑icp备1900保定网站建设公司大全
  • 阿里巴巴国际站运营教程网站怎么加载图片做logo
  • 域名备案的网站建设方案书模板外包兼职做图的网站
  • 美食网站开发的背景公开招标网站
  • 郑州网站建设招聘关键字优化策略
  • 哪个行业必须做网站国外创意设计网站
  • 怎么做算命网站wordpress页脚改颜色
  • 营口市城乡住房建设局网站医院网站建设的规划
  • 电子商务网站建设与维护的教学wordpress 编辑首页
  • 做网站域名需哪些游戏租号网站怎么建设
  • 广东省门户网站建设的现状wordpress个人主页源码
  • 福州住房和建设局网站怎样做公司的网站建设
  • fw可以做网站如何下免费的wordpress
  • 网站做tips帝国小说网站模板
  • 电子商务网站后台核心管理企业开通网站的费用怎么做分录
  • 成都网站制作和建设密云seo排名优化培训
  • 蓝色机械营销型网站深圳西乡做网站
  • 张店网站建设客户关系管理流程图
  • 买网站模板域名链接网站
  • 中牟郑州网站建设青岛网站设计品牌企业
  • 如何做百度网站2017漆包线 东莞网站建设
  • 房屋中介网站建设方案如何开通免费网站
  • 上海网站建设开发公司江西企业 网站建设
  • 网站设计销售好做吗网站开发基本流程ppt
  • 重庆建设技术发展中心网站光明新区城市建设局网站
  • 微信可以做网站吗吉林公司做网站
  • 网站开发 外包空心微信公众平台网页版
  • 企业网站建设公司怎么收费扬州天猫网站建设