Hi,
I am trying to optimize the code for matrix multiplication in a mex file with openmp. The code is given below.
void MatrixMultiply(double *in1,double *in2,double *out,int M, int N, int P){/* Description: multiplies a MxN matrix with a NxP matrix */int i,j,k;omp_set_num_threads(2);#pragma omp parallel for schedule(static) shared(in1,in2,out,M,N,P) private(i,j,k) for (i= 0; i < M; i++) { for (j = 0; j < P; j++) { out[M*j + i] = 0; for (k = 0; k < N; k++) { out[M*j + i] += in1[k*M + i]*in2[j*N + k]; } } } return; }
However, when I change the directive to "#pragma omp parallel for collapse(3) schedule(static) shared(in1,in2,out,M,N,P) private(i,j,k) " I get an error – "error C3005: 'collapse' : unexpected token encountered on OpenMP 'parallel for' directive"
Any help in resolving this error would be appreciated.
Thanks!
Best Answer