MCPcopy Create free account
hub / github.com/ERGO-Code/HiGHS / matrix_multiplication_omp

Function matrix_multiplication_omp

check/TestHighsParallel.cpp:60–132  ·  view source on GitHub ↗

matrix_multiplication_omp reference: https://computing.llnl.gov/tutorials/openMP/samples/C/omp_mm.c

Source from the content-addressed store, hash-verified

58// matrix_multiplication_omp
59// reference: https://computing.llnl.gov/tutorials/openMP/samples/C/omp_mm.c
60void matrix_multiplication_omp(unsigned nthreads) {
61 omp_set_num_threads(nthreads);
62
63 int i, j, k;
64
65#pragma omp parallel for private(i, j)
66 for (i = 0; i < N; ++i) {
67 for (j = 0; j < N; j++) {
68 a[i][j] = i + j;
69 }
70 }
71
72#pragma omp parallel for private(i, j)
73 for (i = 0; i < N; ++i) {
74 for (j = 0; j < N; j++) {
75 b[i][j] = i * j;
76 }
77 }
78
79#pragma omp parallel for private(i, j)
80 for (i = 0; i < N; ++i) {
81 for (j = 0; j < N; j++) {
82 c[i][j] = 0;
83 }
84 }
85
86#pragma omp parallel for private(i, j, k)
87 for (i = 0; i < N; ++i) {
88 for (j = 0; j < N; j++) {
89 for (k = 0; k < N; k++) {
90 c[i][j] += a[i][k] * b[k][j];
91 }
92 }
93 }
94
95 // int edge;
96
97 //#pragma omp parallel shared(a, b, c, nthreads) private(i, j, k)
98 //{
99 // #pragma omp single private(i, j)
100 // for(i = 0; i<N; i++) {
101 // #pragma omp task private(j) firstprivate(i) depend(out: edge)
102 // for (j=0; j<N; j++)
103 // a[i][j]= i+j;
104 // }
105
106 // #pragma omp single private(i, j)
107 // for(i = 0; i<N; i++) {
108 // #pragma omp task private(j) firstprivate(i) depend(out: edge)
109 // for (j=0; j<N; j++)
110 // b[i][j]= i*j;
111 // }
112
113 // #pragma omp single private(i, j)
114 // for(i = 0; i<N; i++) {
115 // #pragma omp task private(j) firstprivate(i) depend(out: edge)
116 // for (j=0; j<N; j++)
117 // c[i][j]= 0;

Callers 1

measure_time_ompFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected