資源簡(jiǎn)介
Open MP是關(guān)于并行編程方面的文檔包括代碼

代碼片段和文件信息
//Simple?minded?matrix?multiply
#include?
#include?
#include?
#include?“mkl.h“
void?print_arr(int?N?char?*?name?double*?array);
void?init_arr(int?N?double*?a);
void?Dgemm_multiply(double*?adouble*??bdouble*??c?int?N);
void?Dgemv_multiply(double*?adouble*??bdouble*??c?int?N);
void?Ddot_Multiply(double*?adouble*??bdouble*??c?int?N);
void?roll_your_own_multiply(double*?adouble*??bdouble*??c?int?N);
int?main(int?argc?char*?argv[])
{
clock_t?start?stop;
int?i?j;
int?N;
double*?a;
double*?b;
double*?c;
if(argc?2)
{
printf(“Enter?matrix?size?N=“);
//please?enter?small?number?first?to?ensure?that?the?
//multiplication?is?correct!?and?then?you?may?enter?
//a?“reasonably“?large?number?say?like?500?or?even?1000
scanf(“%d“&N);
}
else
{
N?=?atoi(argv[1]);
}
a=(double*)?malloc(?sizeof(double)*N*N?);
b=(double*)?malloc(?sizeof(double)*N*N?);
c=(double*)?malloc(?sizeof(double)*N*N?);
init_arr(Na);
init_arr(Nb);
//DGEMM?Multiply
start?=?clock();
Dgemm_multiply(abcN);
stop?=?clock();
printf(“Dgemm_multiply().?Elapsed?time?=?%g?seconds\n“
((double)(stop?-?start))?/?CLOCKS_PER_SEC);
//print?simple?test?case?of?data?to?be?sure?multiplication?is?correct
if?(N?7)?{
print_arr(N“a“?a);
print_arr(N“b“?b);
print_arr(N“c“?c);
}
free(a);
free(b);
free(c);
return?0;
}
//Brute?force?way?of?matrix?multiply
void?roll_your_own_multiply(double*?adouble*??bdouble*??c?int?N)
{
int?i?j?k;
for?(i?=?0;?i? for?(j=0;?j for?(k=0;?k c[N*i+j]?+=?a[N*i+k]?*?b[N*k+j];
}
}
}
}
//The?ddot?way?to?matrix?multiply
void?Ddot_Multiply(double*?adouble*??bdouble*??c?int?N)
{
int?i?j;
int?incx?=?1;
int?incy?=?N;
for?(i?=?0;?i? for?(j=0;?j c[N*i+j]?=?cblas_ddot(N&a[N*i]incx&b[j]incy);
}
}
}
//DGEMV?way?of?matrix?multiply
void?Dgemv_multiply(double*?adouble*??bdouble*??c?int?N)
{
int?i;
double?alpha?=?1.0?beta?=?0.;
int?incx?=?1;
int?incy?=?N;
for?(i?=?0;?i? cblas_dgemv(CblasRowMajorCblasNoTransNNalphaaN&b[i]Nbeta&c[i]N);
}
}
//DGEMM?way.?The?PREFERED?way?especially?for?large?matrices
void?Dgemm_multiply(double*?adouble*??bdouble*??c?int?N)
{
int?i;
double?alpha?=?1.0?beta?=?0.;
int?incx?=?1;
int?incy?=?N;
cblas_dgemm(CblasRowMajorCblasNoTransCblasNoTransNNNalphabNaNbetacN);
}
//initialize?array?with?random?data
void?init_arr(int?N?double*?a)
{
int?ij;
for?(i=0;?i for?(j=0;?j a[i*N+j]?=?(i+j+1)%10;?//keep?all?entries?less?than?10.?pleasing?to?the?eye!
}
}
}
//print?array?to?std?out
void?print_arr(int?N?char?*?name?double*?array)
{
int?ij;
printf(“\n%s\n“name);
for?(i=0;i for?(j=0;j printf(“%g\t“array[N*i+j]);
}
printf(“\n“);
}
}
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件??????77824??2008-10-09?02:25??Lab2\Lab2.doc
?????文件????????323??2008-10-04?15:05??Lab2\MKL_Overview\DGEMM\makefile
?????文件?????770048??2008-10-04?15:05??Lab2\MKL_Overview\DGEMM\matrix.exe
?????文件???????3008??2008-10-04?10:00??Lab2\MKL_Overview\DGEMM\mkl_dgemm.c
?????文件???????4524??2008-10-04?10:00??Lab2\MKL_Overview\DGEMM\mkl_lab.c
?????文件???????4854??2008-10-04?10:00??Lab2\MKL_Overview\DGEMM\mkl_lab_solution.c
?????文件???????9142??2008-10-04?15:05??Lab2\MKL_Overview\DGEMM\mkl_lab_solution.obj
?????文件???????1000??2008-10-04?09:00??Lab2\omp-demo\badloop.c
?????文件????????445??2008-10-04?09:00??Lab2\omp-demo\cri.c
?????文件?????315392??2008-10-06?23:28??Lab2\omp-demo\cri.exe
?????文件???????2780??2008-10-06?23:28??Lab2\omp-demo\cri.obj
?????文件????????228??2008-10-04?09:00??Lab2\omp-demo\critical.c
?????文件???????1150??2008-10-04?09:00??Lab2\omp-demo\dis-err.c
?????文件???????1646??2008-10-04?09:00??Lab2\omp-demo\dis-ok.c
?????文件???????1584??2008-10-04?09:00??Lab2\omp-demo\dis-ok1.c
?????文件???????1061??2008-10-04?09:00??Lab2\omp-demo\loopA1.c
?????文件???????1290??2008-10-04?09:00??Lab2\omp-demo\loopA2.c
?????文件????????289??2008-10-04?09:00??Lab2\omp-demo\master.c
?????文件????????489??2008-10-04?09:00??Lab2\omp-demo\pfor-no-schedule.c
?????文件????????495??2008-10-04?09:00??Lab2\omp-demo\pfor.c
?????文件????????541??2008-10-04?09:00??Lab2\omp-demo\pi01.c
?????文件????????532??2008-10-04?09:00??Lab2\omp-demo\pi02.c
?????文件????????579??2008-10-04?09:00??Lab2\omp-demo\pi03.c
?????文件????????419??2008-10-04?09:00??Lab2\omp-demo\pi04.c
?????文件????????422??2008-10-04?09:00??Lab2\omp-demo\private.c
?????文件????????379??2008-10-04?09:00??Lab2\omp-demo\reduction.c
?????文件????????644??2008-10-04?09:00??Lab2\omp-demo\section.c
?????文件????????330??2008-10-04?09:00??Lab2\omp-demo\single.c
?????文件????????339??2008-10-04?09:00??Lab2\omp-demo\threadprivate.c
?????文件????????154??2008-10-04?09:34??Lab2\OpenMP\HelloWorlds\HelloWorlds.c
............此處省略37個(gè)文件信息
評(píng)論
共有 條評(píng)論