谭升
非主流人工智能科学家 我和外面那些妖艳的货不一样

Category: CUDA

【CUDA 基础】5.2 共享内存的数据布局 0

【CUDA 基础】5.2 共享内存的数据布局

本文我们主要研究共享内存的数据布局,通过代码实现,来观察运行数据,换句话说,我们主要研究上一篇中的放西瓜,取西瓜,以及放冬瓜等的一些列操作对性能的影响,以及如何才能使效率最大化。

【CUDA 基础】5.1 CUDA共享内存概述 0

【CUDA 基础】5.1 CUDA共享内存概述

这里首先要进一步说明一下,前面我们在说缓存的时候说其是可编程的,这是不准确的,应该说是可以控制的,而我们今天要说的共享内存才是真正意义上的可编程的。

【CUDA 基础】4.4 核函数可达到的带宽 0

【CUDA 基础】4.4 核函数可达到的带宽

上一章我们研究怎么通过调整线程网格结构和核函数来达到SM的最高利用率,今天我们来研究如何达到内存带宽的最大利用率。
还是要提那个老例子,但是说实话,这的很形象,也很有用,记住这个例子基本就能了解CUDA的优化大概要从哪入手

【CUDA 基础】4.3 内存访问模式 1

【CUDA 基础】4.3 内存访问模式

多数GPU程序容易受到内存带宽的限制,所以最大程度的利用全局内存带宽,提高全局加载效率(后面会详细说明),是调控内核函数性能的基本条件。如果不能正确调控全局内存使用,那么优化方案可能收效甚微。

【CUDA 基础】4.2 内存管理 0

【CUDA 基础】4.2 内存管理

CUDA编程的目的是给我们的程序加速,尤其是机器学习,人工智能类的计算,CPU不能高效完成,说白了,我们在控制硬件,控制硬件的语言属于底层语言,比如C语言,最头疼的就是管理内存,python,php这些语言有自己的内存管理机制,

【CUDA 基础】4.1 内存模型概述 0

【CUDA 基础】4.1 内存模型概述

解释一下,时间局部性,就是一个内存位置的数据某时刻被引用,那么在此时刻附近也很有可能被引用,随时间流逝,该数据被引用的可能性逐渐降低。
空间局部性,如果某一内存位置的数据被使用,那么附近的数据也有可能被使用。

0

【CUDA 基础】4.0 全局内存

上一章我们整个一章都在研究CUDA的执行模型,必须承认执行模型中,核的配置,决定了程序执行效率,但是程序的执行效率不只由线程束,线程块等执行结构决定,内存也严重的影响了性能。
举个例子,一个老例子,但是这个例子真的非常贴切

【CUDA 基础】3.6 动态并行 0

【CUDA 基础】3.6 动态并行

动态并行的好处之一就是能让复杂的内核变得有层次,坏处就是写出来的程序更复杂,因为并行行为本来就不好控制,去年我在没有系统的学习CUDA的时候写过一个400行左右的内核,用来训练人脸检测程序,确实比cpu块,但是从gpu的温度来判断,并没有很高的利用率(当时还不会使用性能检测工具这些,当时TensorFlow跑的时候GPU温度有80多,但是我写的就只有60多,所以我断定,gpu性能完全没发挥,但是那个程序还是运行了好久,可见磨刀不误砍柴工这句话是多么正确)

由于博客移至wordpress,部分公式和代码显示不正常,博主正在努力修改,如发现公式显示错误,请及时在文章下留言,感谢您的帮助,尽请原谅!