- 博客(56)
- 收藏
- 关注
原创 归约求和算法(三)
本文使用一种循环调用kernel的方法对块内归约的结果进行求和,直接从kernel输出最终结果。而且每个线程都执行运算,能处理的元素数是原来算法的两倍。
2022-07-18 17:32:31
777
1
原创 并行程序设计大作业——稀疏神经网络推理
神经网络前向传播优化:60000 * 1024 的矩阵 A 分别与 120 个1024*1024的稀疏矩阵 B [i]相乘。A 与 B[i] 相乘后用激活函数 relu 激活,激活后的 C 矩阵作为下一次的矩阵 A 。使传播时间尽可能短。
2022-06-10 01:05:15
1271
5
原创 NVIDIA CUDA 高度并行处理器编程(五):浮点运算
NVIDIA CUDA 高度并行处理器编程(五):浮点运算浮点格式M 的规范化表示E 的余码表示能表示的数特殊的位模式与 IEEE 格式中的精度算术运算的准确度和舍入算法的优化数值稳定性浮点格式在 IEEE-754 浮点标准中,一个数值由 3 部分组成:符号位(S)、阶码(E)和尾数(M)。除了某些例外,每个(S、E、M)模式根据下列格式可以标示一个唯一的数值:value=(−1)S×1.M×2E−biasvalue = (-1)^S \times 1.M \times {2^{E-bias}}val
2022-06-07 21:42:14
1095
原创 稀疏矩阵的CSR存储方式
稀疏矩阵的存储方式稀疏矩阵的存储方式CSR(compressed sparse row)稀疏矩阵的存储方式稀疏矩阵是数值计算中普遍存在的一类矩阵,主要特点是绝大部分的矩阵元为零。对于矩阵维度比较小的情况,利用稀疏矩阵特殊性并不能完全发挥优势。然而对于大型矩阵,例如矩阵维度超过10000,那么稀疏矩阵不仅节省存储空间,并且可以让线性代数算法得到极大的加速。比如大部分稀疏矩阵的算法均基于递推方法求解,即主要依赖于矩阵矢量乘法,这样很容易知道利用稀疏性可以优化该类算法的时间复杂度。稀疏矩阵的存储格式往往依赖
2022-05-24 16:13:55
4809
1
原创 NVIDIA CUDA 高度并行处理器编程(三):CUDA存储器习题
NVIDIA CUDA 高度并行处理器编程(三):CUDA存储器习题习题一中第一题,矩阵加法。可以使用共享存储器减少全局存储器对宽带的消耗吗?答:不可以,在每个线程计算一个的 kernel 函数中,每个线程只访问两个所需元素,且每个元素只被访问并加载一次。因为没有元素的重复访问,所以不能使用共享存储器减少全局存储器对宽带的消耗。对于分块矩阵乘法,证明全局存储器宽带的减少正比于块的维度大小。证明:不用分块的每个元素要加载 n 次,假设块维度 i,则每个块需要加载 n/i + 1 次。得证。
2022-05-21 22:13:10
802
原创 NVIDIA CUDA 高度并行处理器编程(二):数据并行执行习题
NVIDIA CUDA 高度并行处理器编程(二):数据并行执行习题如果一 CUDA 设备的一个 SM 能容纳 1536 个线程和 4 个线程块,下面那种线程块配置使得一个 SM 中能容纳最多的线程?a. 每个线程块 128 个线程b. 每个线程块 256 个线程c. 每个线程块 512 个线程d. 每个线程块 1024 个线程答:c, 一个 SM 容纳 3 个线程块,共 1536 个线程。向量加法中,假定向量长度是 2000, 每个线程产生一个输出元素,每个线程块包含 512 个线程。
2022-05-21 15:29:57
577
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人