CUDA实践指南(十九)

简介:

本地内存:
本地内存是如此命名的,因为它的范围对于线程来说是本地的,而不是因为它的物理位置。事实上,本地内存是片外的。因此,访问本地内存与访问全局内存一样昂贵。换句话说,名称中的术语“本地”并不意味着访问速度更快。
本地内存仅用于保存自动变量。这是由nvcc编译器在确定没有足够的寄存器空间来保存变量时完成的。可能放置在本地内存中的自动变量是大型结构或数组,会占用太多的寄存器空间,而编译器确定的数组可能会动态编制索引。
检查PTX汇编代码(通过使用-ptx或-keep命令行选项编译到nvcc获得)显示在第一个编译阶段期间变量是否已放置在本地内存中。如果有,它将使用.local助记符进行声明并使用ld.local和st.local助记符进行访问。如果没有,则后续编译阶段可能仍然会作出其他决定,如果他们发现变量为目标架构消耗太多寄存器空间。没有办法针对特定变量检查这一点,但编译器在使用--ptxas-options = -v选项运行时报告每个内核的本地内存使用情况(lmem)。
纹理内存:
只读纹理内存空间被缓存。 因此,纹理读取只需要在高速缓存未命中时读取一个器件存储器; 否则,它只花费一次从纹理缓存中读取数据。 纹理缓存针对2D空间局部性进行了优化,因此读取贴近在一起的纹理地址的相同变形的线程将获得最佳性能。 纹理内存也被设计用于具有恒定延迟的流式抓取; 也就是说,缓存命中减少了DRAM带宽需求,但不能提取延迟。 在某些寻址情况下,通过纹理读取读取设备存储器可能是从全局或常量存储器读取设备存储器的有利替代方案。
其他纹理功能:
如果使用tex1D(),tex2D()或tex3D()而不是tex1Dfetch()来提取纹理,则硬件提供了其他功能,这些功能可能对图像处理等应用程序有用,如表4所示。
1

在内核调用中,纹理高速缓存不会与全局内存写入保持一致,因此从同一内核调用中通过全局存储器写入的地址获取的纹理会返回未定义的数据。 也就是说,如果该位置已被先前的内核调用或内存副本更新,则线程可以安全地通过纹理读取内存位置,但如果先前已由相同内核调用中的相同线程或另一线程更新,则线程可以安全地读取内存位置。

目录
相关文章
|
安全 数据安全/隐私保护
什么是受 DRM 保护的内容以及如何删除 DRM 保护
当涉及到数字媒体世界中的内容时,您当然需要借助 DRM(数字版权管理)技术来确保您的创作或内容的安全和保护。让我们简要了解一下什么是受 DRM 保护的内容以及如何删除 DRM 保护。
|
JSON JavaScript 前端开发
Controller 层编码规范
Controller 层编码规范
|
分布式计算 资源调度 Hadoop
Spark简介
Spark简介
265 0
|
9月前
|
安全 程序员 PHP
实验室信创平台上几道经典的web-php有关的题目wp
本内容介绍了多个CTF题目及其解题思路,涵盖正则表达式、PHP函数、代码审计等方面。例如,通过POST提交和正则匹配获取flag,利用PHP的松散比较和数组特性绕过验证,以及通过恢复VIM临时文件和SVN隐藏文件夹获取关键信息。每个题目都提供了详细的解题步骤和相关链接,适合初学者学习和实践。
101 1
|
网络协议 安全 CDN
你的连接不是专用连接 攻击者可能试图从 github.com 窃取你的信息 通过修改DNS连接解决无法连接问题
你的连接不是专用连接 攻击者可能试图从 github.com 窃取你的信息 通过修改DNS连接解决无法连接问题
1837 0
|
并行计算 Ubuntu Docker
MPI环境配置
不读mpi4py势必学不会sgd和m/s模型的修改处, 所以先得将修改看明白;使用mpi4py可是不容易, 毕竟很难有多个Ubuntu的环境所以得学会docker 命令。
388 0
|
SQL 安全 Oracle
SQLMap工具详解与SQL注入防范
SQLMap工具详解与SQL注入防范
|
存储 负载均衡 Linux
FastDFS介绍-1
FastDFS介绍
297 1
|
安全 JavaScript 前端开发
基于ruoyi框架实现的短链接生成管理系统(前后端分离)
基于ruoyi框架实现的短链接生成管理系统(前后端分离)
352 0
|
安全 数据库
【Debian】配置aide入侵检测服务
基于debian系统。aide主要功能检测系统文件,当系统文件发生变化,如/etc/passwd文件出现差异,那么aide将会认为系统遭受入侵被增添用户
2401 0