CUDA实践指南(十七)

简介:

在任何计算能力的设备上的性能可以通过读取共享内存中的A片来提高,如使用共享内存来提高矩阵乘法中的全局内存负载效率。
使用共享内存来提高矩阵乘法中的全局内存负载效率

__global__ void coalescedMultiply(float *a, float* b, float *c,
    int N)
{
    __shared__ float aTile[TILE_DIM][TILE_DIM];
    int row = blockIdx.y * blockDim.y + threadIdx.y;
    int col = blockIdx.x * blockDim.x + threadIdx.x;
    float sum = 0.0f;
    aTile[threadIdx.y][threadIdx.x] = a[row*TILE_DIM + threadIdx.x];
    for (int i = 0; i < TILE_DIM; i++) {
        sum += aTile[threadIdx.y][i] * b[i*N + col];
    }
    c[row*N + col] = sum;
}

在使用共享内存来提高矩阵乘法中的全局内存负载效率时,A的磁贴中的每个元素仅从全局内存读取一次,并以完全合并的方式(没有浪费的带宽)读取到共享内存。在for循环的每次迭代中,共享内存中的值将广播给warp中的所有线程。在将A的图块读入共享内存之后,不需要__syncthreads()同步屏障调用,因为只有在warp内将数据写入共享内存的线程读取数据(注意:代替__syncthreads()__shared__数组可能需要在计算能力2.0或更高的设备上被标记为易失性以确保正确性;请参阅NVIDIA Fermi兼容性指南)。该内核在NVIDIA Tesla K20X上的有效带宽为7.8GB / s。这说明当硬件L1高速缓存驱逐策略与应用程序的需求不匹配或L1高速缓存未用于从全局内存读取时,共享内存用作用户管理的高速缓存。
可以进一步改进如何使用共享存储器来提高矩阵乘法中的全局存储器负载效率处理矩阵B.在计算矩阵C的瓦片的每一行时,读取B的整个瓦片。重复读取B瓦片可以通过将其读入共享内存一次(通过读取共享内存中的附加数据来改进)来消除。
通过将附加数据读入共享内存来改进:

目录
相关文章
|
算法 数据库
Mycat【Mycat分片规则(取模、分片枚举、范围约定)】(六)-全面详解(学习总结---从入门到深化)
Mycat【Mycat分片规则(取模、分片枚举、范围约定)】(六)-全面详解(学习总结---从入门到深化)
234 0
|
分布式计算 DataWorks 调度
oss数据同步maxcompute报错
在使用阿里云DataWorks同步OSS数据至MaxCompute时,遇到“Input is not in the .gz format”的报错。问题源于目标目录中存在一个空文件,导致同步时识别错误。
|
Kubernetes 调度 Perl
在K8S中,节点故障驱逐pod过程时间怎么定义?
在K8S中,节点故障驱逐pod过程时间怎么定义?
|
12月前
|
XML Java 测试技术
从零开始学 Maven:简化 Java 项目的构建与管理
Maven 是一个由 Apache 软件基金会开发的项目管理和构建自动化工具。它主要用在 Java 项目中,但也可以用于其他类型的项目。
555 1
从零开始学 Maven:简化 Java 项目的构建与管理
ThreeJs模拟工厂生产过程七
这篇文章详细介绍了如何在Three.js中为工厂车间的货架动态生成并放置货物,通过循环逻辑和贴图应用使货架上的物品更加逼真,增强了场景的真实感。
176 0
|
NoSQL Java Redis
|
并行计算 Serverless API
函数计算操作报错合集之出现 "AttributeError: 'NoneType' object has no attribute 'pop'" 错误,是什么原因
在使用函数计算服务(如阿里云函数计算)时,用户可能会遇到多种错误场景。以下是一些常见的操作报错及其可能的原因和解决方法,包括但不限于:1. 函数部署失败、2. 函数执行超时、3. 资源不足错误、4. 权限与访问错误、5. 依赖问题、6. 网络配置错误、7. 触发器配置错误、8. 日志与监控问题。
491 1
|
Android开发
error: GLES2/gl2.h: No such file or directory
error: GLES2/gl2.h: No such file or directory
|
并行计算 Shell Docker
【环境配置】Ubuntu16.04安装nvidia-docker
【环境配置】Ubuntu16.04安装nvidia-docker
482 2
|
机器学习/深度学习 算法 数据挖掘
深度学习500问——Chapter05: 卷积神经网络(CNN)(4)
深度学习500问——Chapter05: 卷积神经网络(CNN)(4)
192 1