After updating into Intel(R) C++ Compiler XE 220.127.116.11 [IA-32] I found a different treatment for variables in collapsed control loops. Previously I used Intel C++ 13.x. For version 13.xxx, the following code was correct :
#pragma omp parallel for collapse(3)
for (k=0; k< h->nz; k++)
for (j=0; j< h->ny ; j++)
for (i=0; i< h->nx ; i++)
XYZ(h, i, j, k, &p3d);
d2pc[(h->nx * h->ny)*k + h->nx * j + i] = kdNNS(&p3d);
For version 18.104.22.168 it needs to be modified into:
#pragma omp parallel for collapse(3) private (k,j,i)
I had to declare as private at less j and i.
I do not know if it is mandatory to declare i and j as private according to OpenMP definition. But I found important to share my case with others because it was not easy to locate the source of the problem and there are lot of examples of use of "collapse" omitting private declaration for the control variables affected.