Error when using openmp 'collapse' directive in matlab mex
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Ajay Iyer
el 17 de Mzo. de 2015
Comentada: Ajay Iyer
el 19 de Mzo. de 2015
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!
0 comentarios
Respuesta aceptada
James Tursa
el 18 de Mzo. de 2015
Does your compiler support the collapse directive? What compiler are you using?
3 comentarios
James Tursa
el 19 de Mzo. de 2015
I think MSVC 2010 only supports OpenMP 2.0, and the collapse directive was introduced in OpenMP 3.0.
Más respuestas (0)
Ver también
Categorías
Más información sobre Write C Functions Callable from MATLAB (MEX Files) en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!