【发布时间】:2014-04-02 18:46:32
【问题描述】:
我有一个带有多个 For 循环的 c++ 程序;每个都运行大约 500 万次迭代。是否有任何命令可以与 g++ 一起使用以使生成的 .exe 使用多个内核;即让第一个 For 循环在第一个核心上运行,第二个 For 循环在第二个核心上同时运行?我试过 -O3 和 -O3 -ftree-vectorize,但在这两种情况下,我的 cpu 使用率仍然只徘徊在 25% 左右。
编辑: 这是我的代码,以防万一。我基本上只是在制作一个程序来测试我的计算机的速度能力。
#include <iostream>
using namespace std;
#include <math.h>
int main()
{
float *bob = new float[50102133];
float *jim = new float[50102133];
float *joe = new float[50102133];
int i,j,k,l;
//cout << "Starting test...";
for (i=0;i<50102133;i++)
bob[i] = sin(i);
for (j=0;j<50102133;j++)
bob[j] = sin(j*j);
for (k=0;k<50102133;k++)
bob[k] = sin(sqrt(k));
for (l=0;l<50102133;l++)
bob[l] = cos(l*l);
cout << "finished test.";
cout << "the 100120 element is," << bob[1001200];
return 0;
}
【问题讨论】:
-
为什么不使用线程?
标签: c++ gcc optimization g++ core