讨论:单线程的多层循环程序,如何能发挥出多核CPU性能?

zxzx3323 2017-10-26 09:13:37
试写了一个多层(6层)循环的单线程程序,在两台机器上同时运行(一台4核,另一台是老的单核AMD的CPU),结果反尔是老的单核机器比4核机器还快,而且快了近一倍。什么原因呢?如何才能发挥出多核CPU性能?
...全文
1097 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
smwhotjay 2017-10-26
  • 打赏
  • 举报
回复
指令优化,还有单核的频率,都不同
red-fly 2017-10-26
  • 打赏
  • 举报
回复
并行计算参考: http://blog.sciencenet.cn/blog-464042-557089.html vs2010的msdn中“OpenMP in Visual C++”一节中的 OpenMP Directives 部分,其中的for类型。 需要修改项目的属性对话框中,左边框里的“配置属性”下的“C/C++”下的“语言”页里的OpenMP选项 我的一段相关代码大致如下:

int ip = 0;
int fct = 0;
DWORD dwSpa = dwCur = 0;
omp_set_num_threads(m_count);
#pragma omp parallel default(none) private(ip) shared(dwCur, dwSpa)
{
	#pragma omp for
	for ( im = 0; im < m_count; im++ )
	{
		{
			#pragma omp atomic
			fct++;
		}
		... // 处理代码
	}
}
有测试过,可以用,但它依赖的库比较麻烦,不同系统上的版本不一样,导致经常出问题
赵4老师 2017-10-26
  • 打赏
  • 举报
回复
OpenMP ?
zxzx3323 2017-10-26
  • 打赏
  • 举报
回复
4核的机器,为什么该程序占用CPU最多是25%?还有什么办法能多占用点CPU资源?
zxzx3323 2017-10-26
  • 打赏
  • 举报
回复
引用 4 楼 danscort2000 的回复:
快一倍明显是反常,单核心的cpu基本都是古董级了 4核心桌面cpu最差的也是amd x4了吧,随便都能干掉单核心的u 同样的代码 出现单核心比多核心块 [1] 你在多核心机器里用的是debug版本,或者是在vc/gdb环境下调试得出的时间,而在单核心机器上用的是release,优化不同 [2] 你在多核心机器了装了太多的安全软件比如数字360之类的,后台还开了一堆流氓软件做下载直播之类的 [3] 你在多核心机器上用的是64位编译的代码,而单核心机器是32位 , 不过这实际跑起来差距不到10%. [4] 最大的可能,你用的是Intel c++编译器,然后跑的是AMD cpu.
找到问题所在了,在4核机器上,是在U盘是运行的程序。拷到硬盘上比较,4核比单核快,谢谢!
zxzx3323 2017-10-26
  • 打赏
  • 举报
回复
引用 4 楼 danscort2000 的回复:
快一倍明显是反常,单核心的cpu基本都是古董级了 4核心桌面cpu最差的也是amd x4了吧,随便都能干掉单核心的u 同样的代码 出现单核心比多核心块 [1] 你在多核心机器里用的是debug版本,或者是在vc/gdb环境下调试得出的时间,而在单核心机器上用的是release,优化不同 [2] 你在多核心机器了装了太多的安全软件比如数字360之类的,后台还开了一堆流氓软件做下载直播之类的 [3] 你在多核心机器上用的是64位编译的代码,而单核心机器是32位 , 不过这实际跑起来差距不到10%. [4] 最大的可能,你用的是Intel c++编译器,然后跑的是AMD cpu.
都是RELEASE版的,晚上我把两台机器的CPU再看一下,再分析
danscort2000 2017-10-26
  • 打赏
  • 举报
回复
快一倍明显是反常,单核心的cpu基本都是古董级了 4核心桌面cpu最差的也是amd x4了吧,随便都能干掉单核心的u 同样的代码 出现单核心比多核心块 [1] 你在多核心机器里用的是debug版本,或者是在vc/gdb环境下调试得出的时间,而在单核心机器上用的是release,优化不同 [2] 你在多核心机器了装了太多的安全软件比如数字360之类的,后台还开了一堆流氓软件做下载直播之类的 [3] 你在多核心机器上用的是64位编译的代码,而单核心机器是32位 , 不过这实际跑起来差距不到10%. [4] 最大的可能,你用的是Intel c++编译器,然后跑的是AMD cpu.

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧