我曾经调试过一个LDA的多核心版本,性能惨不忍睹,就是因为在每个cycle上都要使用内存拷贝将局部状态同步到全局状态,在做这件事的时候CPU只能傻傻地等,导致CPU利用率根本上不去。。。
为了提高性能,需要降低每个cycle所需要的通信数据,不过那就需要重新设计算法了,而且未必能设计出来。
【 在 Akyrum 的大作中提到: 】
: 自己写的蒙特卡洛仿真程序,用了tbb和mkl,在8c16t的台式机cpu占用率只有35%左右(debug版本能开到95%+)。
: 指定tbb只用单线程,开8个进程同时跑,也是35%左右。
: 我确定代码里没用等待或锁,并且IO都放到了ramdisk里,运算速度上不去的原因会是什么呢?
: ...................
--
修改:siegfried415 FROM 60.16.237.*
FROM 60.16.237.*