2011-05-05 63 views
2

CUDA 4.0比3.2更快吗?
我对添加CUDA 4.0不感兴趣,而是知道如果我使用CUDA 4.0,内存分配和传输速度会更快。
感谢CUDA 4.0 vs 3.2

回答

7

内存分配和转移更多的依赖(如果不是全部)的硬件功能(更高效的流水线,高速缓存的大小),而不是CUDA的版本。

+0

本声明(7票和全部)相当具有误导性。存储器分配的速度对平台有很大的依赖性;在具有多个GPU的64位具有UVA功能的系统上,CUDA 4.0上的固定分配将花费更长的时间,因为它们可自动移植(即映射到所有GPU)。 – ArchaeaSoftware 2011-09-24 17:53:08

+0

@ArchaeaSoftware您是否认为CUDA 4.0在上述设置*下生成的代码效率低于CUDA 3.2 *?如果是这样,我会更新;如果没有,那么这就是我的答案已经在说... – 2011-09-25 09:22:06

+0

我的评论涉及内存分配而不是传输性能。内存分配性能更多地取决于主机平台和CUDA实现的“硬件功能(更高效的管道,缓存大小)”。由于CUDA 4.0将可移植固定内存设置为支持UVA的系统的默认设置,因此在多GPU系统上分配固定内存绝对速度较慢。 – ArchaeaSoftware 2011-09-26 13:19:46

1

是的,我已经跑〜10%的速度曾经是相当可观的应用程序切换我从3.2到4.0。这是没有任何代码更改以利用新功能。

我也有一个GTX480,如果有任何问题。

注意,性能提升可能是由于这样的事实,我使用的开发驱动程序的新版本(升级时自动安装)。我认为nVidia很可能会像CUDA这样的重磅游戏一样对CUDA性能进行调整。

+0

aaah我c ...所以它更好地卸载我所有的驱动程序和cuda工具包和sdk并重新安装最新的工具包/ sdk /驱动程序? – Lora 2011-05-05 14:20:47

+0

我推荐它。 – peakxu 2011-05-05 15:07:02

+1

这也可能是由于'nvcc'编译器的改进。 Nvidia做了很多。 – LumpN 2011-05-05 22:21:23

2

即使在对CUDA 3.2,您可以安装CUDA 4.0驱动程序(270.x) - 驱动程序是向后兼容的。所以除了重新编译应用程序之外,您可以测试它。确实存在影响运行时性能的驱动程序级优化。

虽然通常已经在Linux上工作得很好,我已经注意到MacOSX上一些麻烦。

-1

答案是肯定的,因为CUDA 4.0降低系统内存占用和CPU的memcpy()开销

+0

也许愚蠢的问题,但独立于设备的计算能力?也就是说,对于所有的硬件产品? – Bart 2011-05-07 19:42:02

0

内存分配的性能主要取决于主机平台(因为驱动程序的型号而异)和驱动程序的实现。对于大量的设备内存,分配性能不可能因CUDA版本而异;对于较小的金额(比如小于128K),驱动程序子分配器中的策略更改可能会影响性能。

对于固定的内存,CUDA 4.0是一个特例,因为它引入了UVA能力的系统中的一些重大的政策变化。首先,在初始化时,驱动程序会进行一些巨大的虚拟地址预留。其次,所有固定内存都是可移植的,因此必须映射到系统中的每个GPU。

性能的PCI Express转移的主要是平台的神器,而且通常没有太多的开发者能够做到控制它。 (对于小型CUDA memcpy,驱动程序开销可能因CUDA版本而异。)一个问题是,在具有多个I/O集线器的系统上,非本地DMA访问遍及HT/QPI链接,因此速度要慢得多。如果您的目标是这样的系统,则使用NUMA API将内存分配(和线程)引导到GPU所插入的同一CPU上。