并发计算 VS 并行计算

2017-01-21
阅读 2 分钟
8.5k
上一篇文章中,我们学习了如何在CUDA中隐藏数据传输,而其中用到的主要技术就是并发计算。这时你可能会问,这个专栏不是CUDA并行计算吗?怎么又说什么并发计算呢?其实,这里所说的“CUDA并行计算”并不是纯粹的并行计算,而是并行计算与并发计算相结合的一种技术。那么这两者的区别又是什么呢?我觉得是时候讲一下两者的...

[译]在CUDA C/C++中如何隐藏数据传输

2017-01-18
阅读 6 分钟
9.7k
在上一篇博客中,我们讨论了如何在主机和设备之间高效地进行数据传输。在这篇文章中,我们将讨论如何使用主机端的计算、设备端的计算以及某些情况下的主机与设备端的数据传输来隐藏数据传输。要实现使用其他操作隐藏数据传输需要使用CUDA流,所以首先让我们来了解一下CUDA流。

[译]CUDA C/C++如何优化数据传输

2016-12-05
阅读 7 分钟
13.6k
在前三篇文章中,我们已经为如何优化CUDA C/C++代码系列文章的主要内容做了铺垫。在这篇和之后的文章中,我们会讨论如何在提高主机和设备之间数据传输效率方面进行代码优化。设备内存和GPU之间的最大带宽(例如NVIDIA Tesla C2050的带宽为144 GB/s)远大于主机内存和设备内存(如PCIe x16 Gen2总线的带宽为8 GB/s)之间的最...

[译]在CUDA C/C++中如何衡量代码性能

2016-11-21
阅读 6 分钟
9.7k
在这个系列的第一篇文章中,我们通过用CUDA C/C++实现SAXPY,学习了CUDA C/C++编程的基本要素。在这篇文章中,我们会学习如何衡量这个程序以及其他CUDAC/C++程序的性能。我们在之后的文章中经常用到这种性能度量技术,因为程序的性能优化将会变得越来越重要。

共享内存之bank冲突

2016-11-19
阅读 6 分钟
20.8k
前面博客中我们说到了共享内存的使用方法以及一些高级特性,并简单说明了一下bank冲突,这里我们将会通过一些简单的例子来详细介绍一下bank冲突。为了获得较高的内存带宽,共享存储器被划分为多个大小相等的存储器模块,称为bank,可以被同时访问。因此任何跨越b个不同的内存bank的对n个地址进行读取和写入的操作可以被...

[译]在CUDA C/C++中使用共享存储器

2016-11-18
阅读 5 分钟
11.4k
在以前发布的文章中,我们学习了被一组线程访问的全局内存如何被合并为一次事务以及对于不同的CUDA硬件,对齐和步长如何影响合并访问。对于最近的CUDA硬件,没有对齐的数据访问并不是什么大问题。然而不论是哪一代的CUDA硬件,跨越全局存储器都是个大问题,而且在很多情况下也是很难避免的,例如沿着第二和更高维度访问...

深入理解CUDA点积运算

2016-11-18
阅读 2 分钟
7.3k
最近一直在学习CUDA并行计算的相关知识。在学习《GPU高性能编程CUDA实战》(机械工业出版社)这本书时,遇到了一些问题,想了好长时间才想明白,这里我将自己的理解与大家分享一番,如果有错误的地方,欢迎请大家指点。