博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CPU Hardwar
阅读量:6990 次
发布时间:2019-06-27

本文共 604 字,大约阅读时间需要 2 分钟。

378920-20170811094726980-591294021.png

  • GPU负责把线程块分配到各个SM上处理。
  • CUDA对申请的线程块何时运行,以及在哪个SM上运行是没有保证的。这恰好是GPU的优势,这种方式带来了灵活性,不需程序根据SM的数量去配置程序。
  • 但是一个block内的线程执行好像是按顺序启动的,一个block内的所有线程都是在同一个SM上的。
    378920-20170811091852386-2098978707.png

378920-20170811094716089-291691784.png

下面程序的打印结果,每次都不一样,说明每个block的执行完全随机的。但是如果把下面的程序NUM_BLOCKS 改为1, 把BLOCK_WIDTH改为16, 程序中打印threadIdx.x,那么每次运行结果都是一致的,都是从0打印到15。

#include 
#define NUM_BLOCKS 16#define BLOCK_WIDTH 1__global__ void hello(){ printf("Hello world! I'm a thread in block %d\n", blockIdx.x);}int main(int argc,char **argv){ // launch the kernel hello<<
>>(); // force the printf()s to flush cudaDeviceSynchronize(); printf("That's all!\n"); return 0;}

转载地址:http://cjbvl.baihongyu.com/

你可能感兴趣的文章
细菌的繁殖
查看>>
Windows Server 2008远程连接人数限制修改及修改端口
查看>>
第70天:jQuery基本选择器(一)
查看>>
目前微信 微博 新浪 豆瓣等所有分享的js插件
查看>>
源码包安装
查看>>
处理:“ORA-28002: the password will expire within 7 days”的问题
查看>>
读书笔记—CLR via C#章节4-7
查看>>
linux 命令与文件的查询
查看>>
MYSQL数据库引擎 MYISAM和 INNODB区别
查看>>
设计模式之原型模式
查看>>
BootStrap常用组件及响应式开发
查看>>
TS学习之for..of
查看>>
OpenGL是什么?
查看>>
Oracle - 数据库巡检脚本
查看>>
Oracle 11g数据库详细安装步骤图解
查看>>
机器学习之特征选择---特征选择算法
查看>>
嵌入式开发之hisilicon---hi3536 处理器简介
查看>>
目标跟踪之模板匹配---简单的模板匹配
查看>>
css美化网页元素
查看>>
histogram
查看>>