如何提升程序抢占内存带宽的能力?

2021-03-07 12:09:33 +08:00
 xuegy

本人是做科学计算的,简单来说就是解几百万几千万的大型稀疏矩阵。计算的性质决定了 Cache 命中率不会高。实际使用中,CPU 几乎很难达到瓶颈,运行速度基本与系统总内存带宽成正比。

最近在用超算的时候发现一个非常棘手的问题:内存带宽抢不过那些炼丹的。例如一台双路服务器有 24 个核,实际分配是 22 个核心给 CPU 任务,2 个核心给 GPU 任务。然而炼丹的抢内存带宽效率奇高。假如那台服务器碰巧有人在炼丹,我的计算速度几乎会减半,也就是说我用 22 个核心抢占内存带宽的速度和炼丹的 2 个核心差不多。但是超算的“价格”是按 CPU 核心 x 时间计算的,我消耗了 22 份的资源却只得到了 12 份的性能,实在是不太公平。

我这里没有贬低炼丹的意思,GPU 计算本身没有问题,我只是想提升自己程序抢占内存带宽的能力,得到我付出的“价格”应得的性能。

7579 次点击
所在节点    程序员
61 条回复
akira
2021-03-07 20:05:53 +08:00
@ahhui 应该是跑机器学习吧。。猜测。。
f165af34d4830eeb
2021-03-07 20:30:49 +08:00
@xuegy 所以国内有一点好,这种技术上不太好解决的问题,可以通过加钱 /行政手段去解决。。
yazoox
2021-03-07 22:22:20 +08:00
为啥超算才 24 核心?不是很懂,这玩意儿,不是几千几万个么?
dangyuluo
2021-03-07 23:24:11 +08:00
好玩,不过应该不好办,毕竟是按核心卖而不是按内存带宽卖的。不过这不是个零和游戏,二十个负核游戏。虽然 wakuang 得到了更多内存带宽,但是并没有得到更多的算力,而你损失了算力。
updateing
2021-03-07 23:52:18 +08:00
Intel RDT 提供了使用软件对 cache 和内存带宽做分配的功能,但我不了解 GPU 用 DMA 抢带宽能否一起限制。或许可以看看: https://www.intel.cn/content/www/cn/zh/architecture-and-technology/resource-director-technology.html
xuegy
2021-03-08 00:22:47 +08:00
@czfy 价格我就不知道了,人家买都是有技术支持的整机,硬件成本只是其中一部分。我只能说如果想自己攒一台工作站的话价格其实差不多,反正大头在内存上。
xuegy
2021-03-08 00:23:37 +08:00
@nlzy 我也想加入,但是单精度跑出来的仿真结果很难发表啊。
xuegy
2021-03-08 00:28:53 +08:00
@updateing 是通过限制 L3 的方式来控制内存带宽的么...看简介的确是我想要的,不过显卡 DMA 很有可能管不到。
xuegy
2021-03-08 00:35:07 +08:00
@dangyuluo 我个人认为最理想方式是专门弄 GPU 节点,就像矿机那样的,炼丹师们自己去跟自己抢。这样他们自然会想办法减少 GPU 和内存的数据交换。
czfy
2021-03-08 01:54:33 +08:00
@xuegy 嗯。目前其实 AMD 和 Intel 的差距主要在软件生态上,给一两年追上来了之后,竞争力会更强
xuegy
2021-03-08 02:18:55 +08:00
@czfy x86 在超算没有什么区别,AMD 又不是不支持 AVX2 。硬要说区别的话,英特尔有 icc,AMD 是 Clang 魔改的 AOOC 。不过 icc 那个兼容性实在是太烂了。
BrettD
2021-03-08 02:22:48 +08:00
@yazoox 超算的几千几万个核心也是一个个节点砌起来的
FindHao
2021-03-08 02:39:59 +08:00
@xuegy gpu 有双精度,超算一般都是 tesla 系列的,硬件 fp64 是完整的。即便不是 tesla,geforce 的也有双精度,只不过性能差一点。
xuegy
2021-03-08 02:58:03 +08:00
@FindHao 我知道有用 GPU 算的,CPU 把矩阵组装好以后送进 GPU 迭代,依旧无法克服内存瓶颈的问题。
Ehco1996
2021-03-08 07:34:20 +08:00
让 admin 用 cgrou 做隔离?
dbpe
2021-03-08 08:45:04 +08:00
就不能把炼丹放在一起,一起练蛊么
heart4lor
2021-03-08 10:30:44 +08:00
双路服务器 NUMA 架构访问内存的速度是不一样的,可以参考 http://cenalulu.github.io/linux/numa/ ![NUMA]( http://cenalulu.github.io/images/linux/numa/numa.png)
karatsuba
2021-03-08 10:49:11 +08:00
想问一下炼丹是什么意思
VZXXBACQ
2021-03-08 11:31:03 +08:00
@karatsuba Deep Learning
wsy2220
2021-03-09 00:04:37 +08:00
花钱即可

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/759249

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX