[AMBER-Developers] SAXS OpenMP compile fails with icpc 16

From: Daniel Roe <daniel.r.roe.gmail.com>
Date: Fri, 25 Sep 2015 08:46:30 -0600

Hi All,

Since SAXS does not yet have a bugzilla entry I figured I would bring
this up here. SAXS fails to compile for me with intel compilers
version 16 using OpenMP. The specific error is here:

icpc -c -fpic -O3 -openmp -DOPENMP -fpic
-o f_calc.o f_calc.cpp
f_calc.cpp(112): error: parallel loops with collapse must be perfectly nested
              for (size_t x = 0; x < dx[type].ngrid[0]; x++)

Error: the OpenMP "single" pragma must not be enclosed by the "for" pragma

The code block in question is here (f_calc.cpp lines 111 to 118):

            #pragma omp parallel for shared (result, type, Z) collapse(3)
            for (size_t x = 0; x < dx[type].ngrid[0]; x++)
                for (size_t y = 0; y < dx[type].ngrid[1]; y++)
                    for (size_t z = 0; z < dx[type].ngrid[2]; z++) {
                        size_t index_center = dx_3Dindex_to_1Dindex
(dx[type], x, y, z);
                        double grid = (dx[type].value[index_center] -
1) * dx[type].conc * Z;
                        result.value[index_center] += grid;

It's not immediately obvious to me what the problem is with 'x';
normally that error means not all statements are in the innermost loop
but that's clearly not the issue here. Removing the "collapse(3)" gets
rid of the error. Any ideas?



Daniel R. Roe, PhD
Department of Medicinal Chemistry
University of Utah
30 South 2000 East, Room 307
Salt Lake City, UT 84112-5820
(801) 587-9652
(801) 585-6208 (Fax)
AMBER-Developers mailing list
Received on Fri Sep 25 2015 - 08:00:02 PDT
Custom Search