新核云产品运行起来怎么调整cpu多个核同时使用样

在多核计算机上执行多线程的程序为什么只有一个CPU在运行?

有一个程序A需要改成单机并行模式,在4核的电脑上跑可是不管我是自己启动多个计算线程还是使用openmp,始终呮有一个核占用全满,另几个CPU核占用率都是0。下面是我做的几个实验编程环境vs2005,MS编译器计算机是amdCPU4核,2G内存windowsXP操作系统。并行测试程序采鼡一个次的for循环计算pai值

  1、使用新建的vc工程(控制台或者win32应用程序),实现多线程或者使用openmp实现并行计算所有CPU都充分利用了。计算速度線性提升说明并行算法没有错误。

  2、直接在A程序中加入并行的程序发现只有1个核运行。调试时可以看到多个线程确实启动了多个线程在争抢一个CPU核!

  3、直接在A程序中main函数一开始就调用并行程序,结果一样只用一个。唉

  4、除了主程序main()外,把所有其他类、函数、文件乱七八糟都移除,但是并没有改环境配置编译执行,多个CPU都用上了说明问题不是由于项目环境的设置产生的。

  综上初步怀疑是工程中某个文件使用#define定义了什么标识影响到多核的使用。这个程序很大百万行代码量,光是#define就上千个文件间相互引用频繁,难以采用排除的方式看出什么影响CPU

  另外,今天看到资料说可以使用进程线程的亲缘性给线程指定CPU我还没有试,担心情况不容乐观OS自己不给分,指定劃分怕是是更玄

  其中疑惑,忘高手指点迷津不胜感激,涕零ing...


参考资料

 

随机推荐