openmp吧 关注:39贴子:176
  • 2回复贴,共1

求第二大值的并行

只看楼主收藏回复

#include <omp.h>
#include <stdio.h>
#include<time.h>
#include<stdlib.h>
#include<cstring>
#include <iostream>
using namespace std;
int a[20000000];
int main() {
clock_t start,finish;
double totaltime;
start=clock();
char inputfile[]="aaa.txt";
int n,i;
FILE*input;
if(!(input=fopen(inputfile,"r"))){
printf("Can not open file.");
exit(1);
}
i=0;
while((fscanf(input,"%d",a+i))!=EOF){
i++;
}
n=i;
int max1=a[0];
int max2=a[0];
#pragma omp parallel for
for(int i=1;i<n;i++){
if(a[i]>max1){
max2=max1;
max1=a[i];
}
else if(a[i]>max2&&a[i]<max1) max2=a[i];
}
cout<<"并行运行结果为:"<<max2<<endl;
if(fclose(input)){
printf("File close error.");
exit(1);
}
finish=clock();
totaltime=(double)(finish-start)/CLOCKS_PER_SEC;
cout<<"并行程序的运行时间为"<<totaltime<<"秒!"<<endl;
return 0;
}


1楼2014-12-18 11:53回复
    表示除了加一句parallel for 就什么都不会了,可是基本上串并行时间一样也是醉了。。。


    2楼2014-12-18 11:54
    回复
      你不会是W吧


      IP属地:上海3楼2014-12-25 15:35
      回复