我目前正在运行一个计算密集型金融交易测试;该测试有503个独立循环。我的办公室里有两台电脑,一台10核英特尔i9-10900k @3.7 the,128 as DDR4;另一台18核英特尔i9-7980XE @3.4 the,128 as DDR4。
为了加快整个处理速度,第一台10核PC在parfor中运行1- to -189循环;第二台18核PC在parfor中运行190-to-503循环。
经过一天的运行,我发现10核的PC完成了25个循环,18核的PC只完成了4个循环。我很好奇,有没有人知道这个问题的原因?
P.S.10核PC运行MATLAB 2020b,最新更新为MOSEK 9.2.35 18核PC运行MATLAB 2021a,最新更新为MOSEK 9.2.36
我还查看了taskmgr.exe,与10核PC不同,我发现在18核PC中,10个matlab任务在一个组中,其他10个任务是分开的……


发布于 2021-08-27 15:53:15
非常感谢Michal Adamaszek,当在parfor循环中使用MOSEK (内点或整数编程)时,最好关闭MOSEK中的多线程,否则,默认情况下,MOSEK将使用所有内核。
param.MSK_IPAR_NUM_THREADS = 1;
param.MSK_IPAR_INTPNT_MULTI_THREAD = 'MSK_OFF';https://stackoverflow.com/questions/68931802
复制相似问题