- 主题:对于并行计算,洋垃圾+linux server还是很香的
起因是要跑一个matlab代码(每个循环主要时间花在稀疏矩阵构建和eigs进行稀疏矩阵特征值计算,循环间无依赖,可并行)。
整个升级过程错综复杂,看不下去可直接转标题结论:)。
一开始是12700跑,后来12400也一起跑,发现前者竟不如后者(早前跑过tensorflow已经发现过了,不过那时候整个耗时都可接受范围)。后来发现应该是小核参与的原因(超线程好像也有点关系),关掉超线程,设置相关性到大核后,效果基本满意了。
再后来一台silver4110双路共16核(linux)加入,效果明显提升不少。因为发现12700和12400性能提升非常非线性(前者8核并行后3.x倍,后者6核并行后3倍左右),所以这段时间写了个最佳核数测试代码,发现silver4110双路的线性性明显要好于两台12代。
以为是服务器CPU的优势,于是这个时候萌生了整套洋垃圾的想法,先搞了个2680v4单路,毕竟也有14核(几十块钱,单核性价比很高),但是效果不尽如人意。当时猜测是不是因为双路可以更好控制负载,于是立马退掉换成双路。结果效果几乎无任何变化,且10核以后的提升基本平了,甚至后面还有倒退的,整体28核完全不如silver4110双路的16核。考虑到eigs计算内存消耗大,作为测试只先搞了16Gx2内存,于是再加16Gx2。还是不行。看在intel官网关于silver4110和2680v4的价格及发行时间,觉得不至于有那么大差距,目前唯一的差别应该就是针脚数和OS了。打算先从OS下手,今天装上了ubuntu server,效果立现!!!小开20核测试了下,换算单核也比silver4110双路的单核性能提升10%左右。目前瓶颈在内存容量了,20核在跑实例的时候因为总内存超了,崩掉了一个worker。
记了一些折腾流水账,结论就是对于并行计算,洋垃圾+linux server还是很香的。
btw,手头的12700瞬间就没那么香了(在这种特定计算领域)。
--
FROM 124.90.178.*
现在还有用windows跑大规模计算的?
--
FROM 120.244.234.*
花120元买一块P106-100矿渣(无外显接头),装上cuda,也要比这两快3倍,当然大内存的模型运行不了。
--
FROM 61.149.219.*
昨天特地去找了一下,好像都200多了啊
eigs也能显卡吗?
【 在 olddognewwit (老狗) 的大作中提到: 】
: 花120元买一块P106-100矿渣(无外显接头),装上cuda,也要比这两快3倍,当然大内存的模型运行不了。
: --
:
:
--
FROM 124.90.178.*
报歉不懂eigs,tf和torch肯定都可以。
【 在 cum 的大作中提到: 】
: 昨天特地去找了一下,好像都200多了啊
: eigs也能显卡吗?
--
FROM 61.149.219.*
我们平时都写的小代码。当然偶尔还是会规模大一点。windows是因为用习惯了,属于历史遗留。
昨日linuxserver连gui都没敢安装,折腾了数日,总不能如愿,都有点窝火了。也有付费集群,0.15元1核时,但因为都是调试阶段的代码,花起来也心疼。
【 在 ayaka (ayaka) 的大作中提到: 】
: 现在还有用windows跑大规模计算的?
: --
:
:
--
FROM 124.90.178.*
根据阿姆达定律,即使只有5%的通讯成本,加速比最多也只能达到20(现实一般只能到10左右),所以,超过10核以后,增加核心数所带来的提升就越来越小,到了20核之后,就没有提升了。所以,没必要盲目追求增加核心数。
【 在 cum 的大作中提到: 】
: 起因是要跑一个matlab代码(每个循环主要时间花在稀疏矩阵构建和eigs进行稀疏矩阵特征值计算,循环间无依赖,可并行)。
: 整个升级过程错综复杂,看不下去可直接转标题结论:)。
: 一开始是12700跑,后来12400也一起跑,发现前者竟不如后者(早前跑过tensorflow已经发现过了,不过那时候整个耗时都可接受范围)。后来发现应该是小核参与的原因(超线程好像也有点关系),关掉超线程,设置相关性到大核后,效果基本满意了。
: ...................
--
FROM 113.233.213.*
只能说你用的Linux调度器太渣了,大概率没有针对大小核优化
【 在 cum 的大作中提到: 】
: 起因是要跑一个matlab代码(每个循环主要时间花在稀疏矩阵构建和eigs进行稀疏矩阵特征值计算,循环间无依赖,可并行)。
: 整个升级过程错综复杂,看不下去可直接转标题结论:)。
: 一开始是12700跑,后来12400也一起跑,发现前者竟不如后者(早前跑过tensorflow已经发现过了
: ..................
发自「今日水木 on iPhoneProPlusMax」
--
FROM 223.74.151.*
是windows11。
这个12700因为平常家用的,多用途,装linux可能有点不合适。
【 在 dareta 的大作中提到: 】
: 只能说你用的Linux调度器太渣了,大概率没有针对大小核优化
: 发自「今日水木 on iPhoneProPlusMax」
--
FROM 124.90.178.*
所以针对我目前的程序特地写过一个挑最佳核数的测试程序。
matlab中eigs本身也是多线程应用的,指定规模后,不开parpool一个迭代需要跑31秒(相当于有多线程)。parpool(1)是47秒,parpool(4)是48~51秒,parpool(20)大概衰减到60-70秒之间。因为每个迭代内存峰值在4G左右,整机目前才配64G,所以parpool(20)的时候一个worker掉线,相当于parpool(19)。
虽然折腾,整体非常满意。整套下来才花了1900不到(显卡硬盘用旧的且闲置的),还不到去年一个12700的价格。后面再200块钱加个矿卡去。
【 在 heideggerr 的大作中提到: 】
: 根据阿姆达定律,即使只有5%的通讯成本,加速比最多也只能达到20(现实一般只能到10左右),所以,超过10核以后,增加核心数所带来的提升就越来越小,到了20核之后,就没有提升了。所以,没必要盲目追求增加核心数。
:
--
FROM 124.90.178.*