- 主题:求指点高性能计算的技术栈学习路径
平时抠代码基本凭心情套用tbb::pineline和tbb::parallel,没用过L1 optimize也没用过cpu affinity。编译后的程序在单cpu机器上多核较单核加速比不错,但在2路ylj、4路金牌上明明cpu占用率80% 了,测下来吞吐率加速比不高,原因可能是什么?
我是不是该补些姿势,从哪里学起?
--
FROM 123.150.181.*
学过,但怎么指导底层搬砖等具体活呀,比如程序咋知道ccnuma信息,抠淀一般用啥库或框架?考虑将来会上网线联起来的numa集群,抠淀时应留意什么
【 在 dedeLotus 的大作中提到: 】
: 可能需要了解一下NUMA这个概念
:
--
FROM 123.150.181.*
国内教体系结构的学校本来就不多,公司一起码代码的兄弟们能把业务处理逻辑写顺就不错了....去学体系结构不现实
【 在 StephenLee 的大作中提到: 】
: 高算主要基础课是计算机体系结构,编码只是技巧应用
:
: - 来自「最水木 for iPhone Xs」
--
FROM 123.150.181.*
给高校做的一个课题,64核4路金牌比32核3970x(降频180w)慢4%,前几天内部初验时老师提了意见,既要提高加速比又要支持集群还要支持国产化啥的。
年底结题,我感觉可以再优化下。现实问题是cpu接近满占用了,3970x也是4个numa,为啥3970x能加速30多倍,而4路5218也只加速30多倍,加速比不上去的原因没弄清楚,这是1个待解决问题。
听说设affinity可提高加速比,要改起来程序框架变动不小,除了要设亲和性,还哪些优化技巧?这是第2个问题
【 在 dormouseBHU 的大作中提到: 】
: 找本介绍openmp的书,上面一般都会介绍些技巧的。
--
FROM 123.150.181.*
同样代码,release版,intel服务器退栈时各种临时对象析构函数耗时amd几十倍。给两台机器装重装win2008了,还是intel析构慢
【 在 StephenLee 的大作中提到: 】
: 拿 intel vtune 入手可能是个不错的选择,可以先看下瓶颈在哪里。计算,访存,硬盘,网络都有可能,你要是一个个优化方法试过去,实在太低效
:
: - 来自「最水木 for iPhone Xs」
--
FROM 123.150.181.*
bios里关掉HT,start /affinity强制只跑在1颗U上,在这台intel上入栈出栈耗时比amd慢太多,栈上临时对象没啥特别的,大多stl轮子。大神们,会是哪里出问题了?
【 在 Akyrum 的大作中提到: 】
: 同样代码,release版,intel服务器退栈时各种临时对象析构函数耗时amd几十倍。给两台机器装重装win2008了,还是intel析构慢
--
FROM 123.150.181.*
4颗5218+12条2933内存(被cpu降频到2666)跑mkl附带的linpack得2928gflops,对比3970跑techpowerup的linpack才847gflops。。。。貌似性能正常
慢30多倍是我对比5218和3970的profiler结果,主要计算过程没看出什么区别,目前发现一些调用次数很多的子函数,临时对象构造析构耗时差别很大,累加统计有30多倍。
【 在 dedeLotus 的大作中提到: 】
: 先用CPU测试软件测个分再分析吧
: 不是代码问题的话,能慢几十倍,这是有缓存没缓存的区别,不知道你的bios是否有禁用二级三级缓存的设置
:
--
FROM 123.150.181.*
有没有推荐的书或课程/有没有推荐的开源项目可学习模仿下?
研究研究为啥高手的linpack能64核intel 4numa暴打32核amd 4numa,而我写的程序64核intel勉强打平32核amd
【 在 ziqin 的大作中提到: 】
: 用的什么编译器,intel cpu要用intel的编译器,用其他编译器的话avx512这些开了没有
ms的编译器,因为公司大部分机器禁用avx512所以没开512
: HT不要用,HT是假的,用了反而影响性能,numa上同一模块数据有没有限定cpu组
: 程序里用的什么数据结构,是否cache友好,访问的时候是否按内存遍历,有没有很多shared variable,哪怕是shared read
: ...................
--
FROM 123.150.181.*