// HanNuo.cpp : 定義控制檯應用程序的入口點。
//
#include "stdafx.h"
#include"omp.h"
#include<Windows.h>
#include<iostream>
#include<time.h>
#define NUM_THREADS 2
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
omp_set_num_threads(NUM_THREADS);
int a[400][400];//inint matrix
int counter=1;
for(int i=0;i<400;i++)
{
for(int j=0;j<400;j++)
{
a[i][j]=counter;
counter++;
}
}
// for(int i=0;i<20;i++)
// {
// for(int j=0;j<20;j++)
// cout<<a[i][j]<<" ";
// cout<<endl;
// }
cout<<"parallel begin"<<endl;
clock_t time_begin=clock();
int i=0,j=0;
#pragma omp parallel for private(i,j)
for(i=0;i<400;i++)
for(j=i+1;j<400;j++)//從i+1開始。執行交換
{
long tmp=0;
tmp=a[i][j];
a[i][j]=a[j][i];
a[j][i]=tmp;
}
clock_t time_end=clock();
double s1=time_end-time_begin;
cout<<"parallel end"<<endl;
cout<<"parallel time ="<<s1<<endl;
//============================================================================================================
time_begin=clock();
cout<<"serail begin"<<endl;
for(int i=0;i<400;i++)
for(int j=i+1;j<400;j++)//從i+1開始。執行交換
{
int tmp=0;
tmp=a[i][j];
a[i][j]=a[j][i];
a[j][i]=tmp;
}
time_end=clock();
cout<<"serail end"<<endl;
double s2=time_end-time_begin;
cout<<"serail time="<<s2<<endl;
system("pause");
return 0;
}
OpenMP之矩陣轉置
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.