![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
CUDA
文章平均质量分 77
linyingzhan
这个作者很懒,什么都没留下…
展开
-
论文阅读笔记2
l 论文二摘要n 题目:An Accurate GPU Performance Model for Effective Control Flow Divergence Optimizationn 摘要:u 指出GPU的执行特点:大批量线程,SIMD执行模式,divergence的不良影响u 论文工作内容:提出一个简单而准确的衡量标准,用于估算以计算为主的GPU kernel原创 2012-12-06 15:01:31 · 526 阅读 · 0 评论 -
论文阅读笔记1
l 论文一摘要n 题目:a quantitative performance analysis model for GPU architectures(GPU架构上的一个定量的性能分析模型)n 摘要:u 提出了一个吞吐量模型(5-15%错误率),用于衡量三个主要组成部分:指令流水线,共享内存访问,全局内存访问u 测试的实验例子:稠密矩阵乘法,三对角线性方程组求解(优化60%原创 2012-12-06 15:01:29 · 453 阅读 · 0 评论 -
大规模并行处理器编程实战笔记4
1:更多关于线程执行的问题warp的一些限制:对于那些大小不是32的整数倍的块,最后一个warp会用别的块中的线程来填充,直到满足32个线程为止warp divergence的问题:如果if-then-else结构中同一个warp中的线程不满足同一个条件,那么,一个warp中的线程有一部分通过then路径,一部分通过else路径,warp按照顺序来通过这些路径,导致执行时间的增加。原创 2012-12-06 15:01:24 · 455 阅读 · 0 评论 -
Ubuntu下的CUDA编程(六)——原子操…
test03.cu文件中的代码:1 #include 2 //#include 3 #include"cutil.h" 4 //#include"device_functions.h" 5 #include"sm_12_atomic_functions.h" 6 #define SIZE 100 *1024 * 1024 7 8 voidgenera原创 2012-12-06 15:00:22 · 652 阅读 · 0 评论 -
Ubuntu下的CUDA编程(五)——使用pt…
本次测试目的仅仅为了尝试能否使用pthread实现多线程对CPU和GPU分别进行控制:文件结构如下:main.cc:控制线程的主函数vector.cu:实现对核函数进行调用的任务函数vector.h:任务函数声明vector_kernel.cu:核函数vector_kernel.h:核函数声明生成文件如下:vector:最终生成的可执行文件main.o:生成的函数体objvec原创 2012-12-06 14:58:54 · 399 阅读 · 0 评论 -
Ubuntu下的CUDA编程(二)
Ubuntu下cuda编程的基本过程一:运行程序 按照上一篇文章所述,安装好cuda软件以后,就可以使用”nvcc -V“命令查看所用到的编译器版本,本人用版本信息来自:“Cudacompilation tools, release 3.2, V0.2.1221”。 自己创建一个目录,在里面新建 cu 文件,写入代码,保存,即可使用终端切换到相应目录下进行编译了,编译命令:原创 2012-12-06 14:58:46 · 460 阅读 · 0 评论 -
论文阅读笔记4
l 论文四摘要n 题目:Fast Implementation of DGEMM on Fermi GPUn 摘要:u 使用了分块算法(在shared memory和register上)实现了双精度的稠密矩阵乘法(Fermi架构)u 优化内容:软件流水线,向量存储操作,指令调度u 性能:在最新的CUBLAST基础上,提升了20%,达到362Gflop/sn 内容原创 2012-12-06 15:01:35 · 450 阅读 · 0 评论 -
论文阅读笔记3
l 论文三摘要n 题目:An Analytical Model for a GPU Architecture with Memory-level and Thread-level Parallelism Awarenessn 摘要:u 提出一个衡量程序运行时间的模型:主要从运行时线程数量(#running threads)和存储带宽(memory bandwidth)两个方面来考原创 2012-12-06 15:01:33 · 514 阅读 · 0 评论 -
大规模并行处理器编程实战笔记5
浮点运算1:浮点格式浮点数的表示:S(符号位),E(阶码),M(尾数)S:0/1M:1E:使用余码表示,方便直接按照无符号数的方式进行比较大小n位余码的计算方式:对n位原码求补码,再加上(2^(n-1) - 1)构成,等价于对某个十进制数取余例子:按照二进制补码的顺序排序的余3码二进制补码 十进制值 余码表示000 0原创 2012-12-06 15:01:27 · 625 阅读 · 0 评论 -
Ubuntu下的CUDA编程(三)
个人错误记录一:出现了 shared data 过多的现象 在编译的时候,Kernel调用的那一行报错,说是用了过多的 sharedata,程序出错,本来以为时参数过多,后来才发现,计算的时候不小心将每个 block 里面 shared data分配过多,超过了每个 block 中 shared memory 的总数,所以报错,修改 BLOCK_SIZE以后,错误消失。二原创 2012-12-06 14:58:48 · 364 阅读 · 0 评论 -
Ubuntu下的CUDA编程(一)
更新Ubuntu软件#sudo apt-get install biuld-essential#sodu apt-get update下载CUDA安装软件到http://developer.nvidia.com/cuda-toolkit-32-downloads下载三个软件:CUDA driver,toolkit和SDK安装CUDA安装原创 2012-12-06 14:58:44 · 874 阅读 · 1 评论 -
大规模并行处理器编程实战笔记3
1:存储器访问效率的重要性提高CGMA(Compute to Global MemoryAccess)比值:示例:__global__ voidMatrixMultiplication_kernel(flaot * Md, float * Nd, flaot * Pd, int width){//compute row index of Pd andMdint Row = bl原创 2012-12-06 15:00:13 · 1031 阅读 · 0 评论 -
大规模并行处理器编程实战笔记2
1:CUDA线程组织结构一个grid中有多个block,可以为一维,二维,三维一个block中有多个thread,可以为一维,二维,三维grid中的block个数由gridDim确定(最多二维)grid中的block定位使用blockIdx来确定block中的thread个数由blockDim确定(最多三维)block中的thread定位使用threadIdx来确定例子:grid一原创 2012-12-06 15:00:10 · 522 阅读 · 0 评论 -
大规模并行处理器编程实战笔记1
1:数据并行性数据并行性是一种支持算术操作按照一定的数据结构同时安全地执行的程序属性。矩阵乘法中的数据并行性:每个点击之间没有数据的相互依赖,可以高度并行化。2:CUDA的程序结构代码:程序由C代码和扩展代码(一般问kernel函数)共同组成,设备代码一般由nvcc来进行编译,并在GPU设备上执行,如果没有GPU(或者kernel函数更使用使用CPU),可以通过SDK或者MCUDA进原创 2012-12-06 15:00:08 · 697 阅读 · 0 评论 -
Ubuntu下的CUDA编程(四)
近来测试了矩阵(规模为2048*2048)乘法在不同参数下两个算法分别使用的时间:第一个算法为没有使用sharedmemory的直接相乘,每个thread负责矩阵C的一个元素的计算;第二个算法为使用了sharedmemory的分块算法,每个block就是一个小的矩阵分块,而测试所得数据如下图所示:说明:水平方向的参数是BLOCK_SIZE(4/8/16/32),垂直方向的参数是调用矩阵乘原创 2012-12-06 14:58:52 · 503 阅读 · 0 评论 -
基于CUDA的GPU优化建议
l GPU硬件特性n 存储层次u Global memory:l 大小一般为几GBl chip-off的DRAM介质存储器l 访问速度慢(是shared memory的上百倍)l 对于是否对齐和连续访问敏感(由DRAM的性质决定)l 可以被所有的线程访问u Shared memory:l 每个SM中一般几十KBl ch原创 2012-12-06 15:01:38 · 1586 阅读 · 6 评论