omp_matrix_multiply.c

来自「C代码。共享式存储多线程并行计算矩阵相乘代码。适合于SMP结构和多核。」· C语言 代码 · 共 40 行

C
40
字号
#define NRA 1000 		/* number of rows in matrix A */#define NCA 1000        	/* number of columns in matrix A */#define NCB 1000		/* number of columns in matrix B */main(){int    i, j, k;			/* misc */double a[NRA][NCA], 		/* matrix A to be multiplied */       b[NCA][NCB],      	/* matrix B to be multiplied */       c[NRA][NCB];		/* result matrix C *//* Initialize A, B, and C matrices */   for (i=0; i< NRA; i++)      for (j=0; j< NCA; j++)         a[i][j]= 1.;   for (i=0; i< NCA; i++)      for (j=0; j< NCB; j++)         b[i][j]= 1.;   for(i=0;i< NRA;i++)      for(j=0;j< NCB;j++)         c[i][j] = 0.0;/* Perform matrix multiply */#pragma omp parallel shared(a,b,c) private(i,j,k)num_threads(10){#pragma omp for nowait   for(i=0;i< NRA;i++)      for(j=0;j< NCB;j++)         for(k=0;k< NCA;k++)            c[i][j]+= a[i][k] * b[k][j];}   printf("Done\n");   printf("%f\n ", c[0][0]);   printf("%f\n ", c[NRA-1][NCB-1]);   printf ("\n");}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?