CUDA C
文章平均质量分 74
陈城南
这个作者很懒,什么都没留下…
展开
-
CUDA卷积计算及其优化——以一维卷积为例
CUDA 卷积计算及其优化——以一维卷积为例CUDA C 编程学习,关注专栏 CUDA C建议阅读:在卷积优化前,熟悉核函数的组织形式有利于更好的位置映射-CUDA编程入门(一):以图片运算看线程的组织和核函数的使用对于输入数据为N[Width],卷积核大小为M[Mask_Width]的卷积运算,进行不同程度的优化(这里的卷积指滤波/内积,而不需要旋转),输出为P[Width]。1.常规的一维卷积常规的一维卷积比较简单,线程数为Width,每个线程负责一个输出值得Mask_Width宽度的卷积原创 2021-04-28 16:34:36 · 3613 阅读 · 5 评论 -
CUDA编程入门(一):以图片运算看线程的组织和核函数的使用
CUDA编程入门(一):以图片运算看线程的组织和核函数的使用1. 线程块的组织以二维图片处理为例,明确一下线程的组织与核函数调用时的使用。现在需要对某一个图片(矩阵)的值进行运算,假设图片大小为ImgSize=ImgHeightImgWidth,则需要ImgSize个线程进行处理。假如使用二维的线程块,则线程块数据结构为dim3 Block(BLOCK_SIZE,BLOCK_SIZE),表示线程块中线程数量为BLOCK_SIZEBLOCK_SIZE, 取BLOCK_SIZE=16。dim3 Bloc原创 2021-04-28 15:56:21 · 721 阅读 · 0 评论 -
CUDA 编程入门-GPU信息读取
#include "cuda_runtime.h"#include "device_launch_parameters.h"#include <stdio.h>void myDeviceInfo();int main(){ // mykernel <<<1, 10 >>> (); myDeviceInfo(); cudaDeviceSynchronize(); return 0;}void myDevic.原创 2021-04-28 19:06:32 · 416 阅读 · 0 评论 -
第六章 CUDA性能优化
第六章 性能优化《大规模并行处理器编程实战》学习,其他章节关注专栏 CUDA C6.1 WARP 和线程执行由于 SM(Streaming Multiprocessor) 中实际由多个流处理单元(Streaming Processor, SP)进行单指令、多数据(SIMD)模式的执行,因此将线程块划分为 warp,方便调度给不同的 SP 执行。一般 warp 是 32 个线程。在将线程划分时,按照多维数组变一维数组的映射进行32个线程的转化划分。如果是三维,则先对 threadIdx.z=0原创 2021-04-28 16:26:13 · 669 阅读 · 0 评论 -
第5章 CUDA存储器
第五章 CUDA 存储器《大规模并行处理器编程实战》学习,其他章节关注专栏 CUDA C线程处理数据时需要先将数据从 host copy 到 device 的全局存储器中,然后利用 block ID 和 thread ID 决定其需要处理的数据位置,从而进行并行计算。kernel 在计算时,需要和存储器(全局存储器)进行大量的互动,这种存储器通常使用动态随机访问存储器(Dynamic Random Access Memory, DRAM),在访问时时延有时会特别大,因此 CUDA 提供了大量访问存储原创 2021-04-28 16:15:25 · 635 阅读 · 2 评论 -
大规模并行处理器编程实战 - 第4章 CUDA数据并行执行模型
第四章 数据并行执行模型《大规模并行处理器编程实战》学习,其他章节关注专栏 CUDA C线程组成线程块,线程块组成线程网格,线程网格就是kernel。一个kernel中的所有线程都执行相同的代码,区别在于不同的线程属于不同的块(有不同的blockIdx),拥有其在块中的唯一位置(threadIdx),因此每个线程在kernel中有唯一的坐标,访问的数据可以被独立控制。相同的执行过程+不同的数据来源=并行的数据处理4.1 CUDA 线程组织网格中的线程块,块中的线程,都是三维位置的。在组织时原创 2021-04-28 16:09:08 · 715 阅读 · 3 评论 -
CUDA C编程向量加法-第3章 CUDA 简介
第3章 CUDA 简介这章主要以 向量加法 vector add 为切入点,讲述了如何把一个 c 语言向量加法代码 改写为 cuda扩展的c语言向量加法。1.1 传统向量加法传统向量加法是通过循环实现的1.2 CUDA 加法加速cuda向量加法是通过多线程控制的cuda加法并行实现的,即同时打开n个线程,每个线程计算1个加法,则长度为n的向量被同步计算。使用CUDA扩展的程序,需要三个步骤:先申请设备(device, cuda)的内存(memory),将数据从主机(host)复制到设备(de原创 2021-03-08 13:39:41 · 781 阅读 · 0 评论