CUDA
文章平均质量分 75
Codiplay
这个作者很懒,什么都没留下…
展开
-
CUDA基础(三)CPU架构,指令,GPU架构
CPU中央处理器,负责执行用户和操作系统下发的指令。CPU只能接受01二进制语言,0和1用来控制高低电位。比如,一个加法运算,在x86处理器上的的二进制代码为:这样一行代码被称为机器码,它执行了加法操作。除了这样的加法,CPU的电路还要实现很多其他指令,如存取内存数据,进行逻辑判断等。参照指令集,硬件开发人员只需要关心如何设计电路,软件开发人员只关心如何用01机器码实现软件功能。比较常见的指令集有x86、ARM、MIPS、SPARC、Power等。随着技术的发展,。原创 2023-03-26 17:41:33 · 2994 阅读 · 0 评论 -
CUDA-NVIDIA-冬令营004
涉及一个问题, 每次是给一连串连续的数据,如果采用行读取,对于A来说,A0,1,A0,2,A0,3来说没人读取就浪费了。编写程序的时候,一个kernel核函数实际上就是最小的一个线程级别的函数。当一个warp中的所有线程访问同一地址的共享内存时,会触发一个广播机制到中所有线程,这是最高效的。可以的看到在一个step里,一个iteration下每个线程是读取哪些数据。(两个必要条件),那么就会发生冲突,called Bank Conflict,这是最低效的。越来越多的是sm,这个级别的,是sm这个级别。原创 2023-03-26 16:33:18 · 458 阅读 · 0 评论 -
CUDA基础(二)组织并行线程,建立块和线程与矩阵索引的映射。
鉴于 GPU 的硬件特性,线程块中的线程数最好配置为 32 的倍数。但是在实际工作中,很可能会出现这样的情况,我们手动配置参数所创建的线程数无法匹配为实现并行循环所需的线程数,比如实际上需要执行1230次循环,但是你却配置了2048个线程。处的线程开始执行时,他知道在其左边有12个线程块,上方有8个线程块。以下是一种可选的配置方式,适用于 工作总量 N 和线程块中的线程数已知的情况。:使线程数量一定满足大于等于N,即一定能满足执行N次任务的需求且浪费也最多浪费一个block的线程数量。原创 2023-03-20 20:31:34 · 752 阅读 · 0 评论 -
CUDA基础(一)同步、并行与计时的初步理解
隐式同步隐式方法就是不明确说明主机要等待设备端,而是设备端不执行完,主机没办法进行,比如内存拷贝函数:主机端必须要等待设备端计算完成。并行程序中经常的一种现象:把串行代码并行化时对串行代码块for的操作,也就是把for并行化。为什么能进行并行化:是因为每个线程对应着自己在x,y,z三维的blockIdx和threadIdx。能直接完成线程“坐标”对数组“坐标”的映射关系。一句话总结:内置的线程坐标变量替换了数组索引。for循环的N被隐式定义用来启动N个线程最简单的:并行写的时候只需要想原创 2023-03-17 09:36:26 · 874 阅读 · 0 评论 -
CUDA-NVIDIA-冬令营02
把输入数据从CPU内存复制到GPU显存,在执行芯片上缓存数据,加载GPU程序并执行,将计算结果从GPU显存中复制到CPU内存中。一个Block必须在一个Streaming Multiprocessor(SM)执行,一个SM中有多个Block。SM基本的执行单元是线程束,允许同一个warp中的thread读取其他thread的值。同一个Block中的线程可以协作,同一个SM同一个SM(shared memory))、并行执行的基本单位。原创 2023-03-16 15:53:22 · 406 阅读 · 0 评论 -
CUDA常用函数库
【代码】CUDA常用函数库。原创 2023-03-16 16:11:49 · 540 阅读 · 0 评论