我有一個C++程序與多個For循環;每個運行約500萬次迭代。有沒有我可以使用g ++的命令,使得生成的.exe將使用多個核心;即讓第一個For循環運行在第一個內核上,第二個For循環同時運行在第二個內核上?我試過了-O3和-O3 -ftree-vectorize,但是在這兩種情況下,我的CPU使用率仍然只有25%左右。讓g ++生成一個可以使用多個內核的程序?
編輯: 這是我的代碼,以防萬一。我基本上只是製作一個程序來測試我的電腦的速度功能。
#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;
}
爲什麼不使用線程? –
有點相關:http://stackoverflow.com/questions/9244481/how-to-get-100-cpu-usage-from-a-c-program – Mysticial