
大规模并行处理器编程实战学习笔记
ZIV555
GPU水声信号处理,电路设计
展开
-
在大规模并行处理器编程实战中遇到第四章的课后习题blocksize的问题
在大规模并行处理器编程实战中遇到第四章的课后习题:如果并不是所有的blocksize值都能使代码正确执行,那么应该如何修改代码,才能使所有 的blocksize值都能执行正确。没有找到答案,我也不知道说的对不对,个人觉得1、blocksize 根据SM可承受的最大线程数来设计,不得使最终的线程数超过了所能承受的最大值。2、 尽量使得每个block中线程数量是32的整数倍,最好保持原创 2016-05-25 15:22:29 · 1197 阅读 · 0 评论 -
CUDA程序优化
CUDA程序优化CUDA程序优化应该考虑的点:精度:只在关键步骤使用双精度,其他部分仍然使用单精度浮点以获得指令吞吐量和精度的平衡; 延迟:需要首先缓冲一部分数据,缓冲的大小应该可以保证每个内核程序处理的一批数据能够让GPU慢负荷工作; 计算量:计算量太小的程序使用CUDA很不合算;当需要计算的问题的计算密集度很低的时候,执行计算的时间远远比转载 2016-05-25 15:23:57 · 634 阅读 · 0 评论 -
内存访问
1、访问内存的低性能主要原因在于全局存储器,这种存储器通常通过动态随机访问存储器(Dynamic Random Access Memory实现,DRAM),在访问时有可能出现长延时(几百个时钟周期)和访问带宽有限的情况。2、如何减少全局存储器流量的策略一种常用的策略是把数据划分成多个子集,称之为块(tile),每个块都必须满足共享存储器的容量限制。eg:矩阵乘法(通过线程间的合作来原创 2016-05-26 15:40:03 · 667 阅读 · 0 评论 -
重拾cuda的几个小问题
比较基础的几个小问题:1、错误 1error MSB3721: 命令“"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\include\bin\nvcc.exe" -gencode=arch=compute_20,code=\"sm_20,compute_20\" --use-local-env --cl-version 20原创 2016-05-30 15:50:09 · 2371 阅读 · 1 评论 -
dimGrid和blockDim变量
cuda中kernel的启动//设置对应的执行配置参数,dim3类型的struct变量dim3 dimBlock(Width,Width);//描述块的配置dim3 dimGrid(1,1);//描述网格的配置信息//启动在设备上进行计算的线程MatrixMulKernel>>(Md,Nd,Pd,Width)dimGrid和blockDim变量都是内置的预定义变原创 2016-05-19 16:43:18 · 4803 阅读 · 0 评论 -
cuda中的矩阵乘法
乘法的形式都一样,都是分配一样的线程,两种形式不同的地方在于处理矩阵大小不同,通过分块的方法解决大矩阵的问题,两种形式的代码如下;_global_void MatrixMulKernel(float*Md,float *Nd,float *Pd,int Width){//2维线程IDint tx = threadIdx.x;int ty = threadIdx.y;原创 2016-05-20 17:10:47 · 698 阅读 · 0 评论