c++ - GTX 460 (GF104) 比 GT 740m (GK107) 快,为什么?

标签 c++ cuda

<分区>

我在我的 GT 740m (GK107) 上运行 gSLIC 分割算法,分割需要 93 毫秒。 来自 gSLIC 报告 http://www.robots.ox.ac.uk/~carl/papers/gSLIC_report.pdf我知道他们使用的是 GTX 460 (GF104),他们的分割需要 13 毫秒

GK107 架构在两个 SMX 中有384 个 cuda 核心,而 GF104 在七个 SM 中有336 个 cuda 核心。 取决于算法(共享内存占用)我计算出我的 GK107 能够在一个 SMX 上运行 1280 个事件线程,总的来说 2x1280 = 2560 事件线程是多少,而 GF104 能够在一个 SM 上运行 1280 个事件线程,总共有 7x1280 = 8960 个事件线程。但是 GF104 的 cuda 内核比 GK107 少,所以它应该同时处理更少的线程,不是吗?还是 GF104 因为 SM 的数量在成本上更小?

这些结果的原因可能是什么?

最佳答案

But the GF104 has less cuda cores then GK107 so it should process less threads concurrently, shouldn't it?

并发线程数并不是唯一的指标,尤其是考虑到 GTX460 是 Fermi 架构,而 GT740m 是 Kepler。这些线程的执行速度如何?这就是费米和开普勒之间的主要区别之一,您可以在 this article 中阅读更多相关信息。这应该为您提供必要的洞察力。小预告片:

Because NVIDIA has essentially traded a fewer number of higher clocked units (Fermi) for a larger number of lower clocked units (Kepler), NVIDIA had to go in and double the size of each functional unit inside their SM. Whereas a block of 16 CUDA cores would do when there was a shader clock, now a full 32 CUDA cores are necessary.

sonicwave 还指出 GT740m 是一款移动 GPU,根据定义,我们可以说它的总线比台式机 GPU 窄,仅仅是因为空间限制(台式机与笔记本电脑)。正如 Robert Crovella 所说的那样,这导致了带宽的显着差异,因此在内存密集型应用程序中,GTX460 的性能将优于 GT740m。在 gpuBoss,他们有一个不错的 GPU 比较实用程序,请参阅 here对于完整的结果或下面的重要点。

Reasons to consider the Nvidia GeForce GTX 460

  • Higher effective memory clock speed 3,400 MHz vs 1,802 MHz Around 90% higher effective memory clock speed
  • Higher memory bandwidth 108.8 GB/s vs 28.8 GB/s More than 3.8x higher memory bandwidth
  • More render output processors 32 vs 16 Twice as many render output processors
  • Wider memory bus 256 bit vs 128 bit 2x wider memory bus
  • More texture mapping units 56 vs 32 24 more texture mapping units

关于c++ - GTX 460 (GF104) 比 GT 740m (GK107) 快,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26103755/

相关文章:

cuda - 查找 CUDA_SDK_ROOT_DIR

c++ - 使用移位运算符将 DWORD 转换为字节

C++11 风格的回调?

C++模板函数错误: template-id does not match any template declaration

caching - 我可以将特定数据预取到 CUDA 内核中的特定缓存级别吗?

c++ - 如何使用 C++ Cuda 高效地实现并行笛卡尔积

cuda - 具有映射内存、统一虚拟寻址和统一内存的 GPU 内存超额订阅

cuda - 共享内存库与 char 数组冲突

c++使用stringstream从字符串中提取一个int

适用于原始数据类型和复杂数据类型的 C++ 模板析构函数