[gmx-developers] Re: Fortran acceleration + OpenMP strangeness

Erik Lindahl erik at kth.se
Thu May 31 17:35:37 CEST 2012


From the reports we've had the last few years (=release 4.5) ia64 was faster with the normal Fortran kernels than C, and Power6 was faster with the specific kernels (that were in Fortran).

The one alternative I would like to test is vanilla C kernels using the "restrict" modifier on input arrays - in theory that should make it possible to optimize as much as in Fortran.

 Anybody with access to a recent ia64/power6 who could test?

Erik

--
Erik Lindahl <erik at kth.se> <lindahl at cbr.su.se>
Professor of Theoretical & Computational Biophysics, KTH
Professor of Computational Structural Biology, Stockholm University
Tel (KTH): +46 8 55378029  Tel (SU): +46 8 164675
Cell (Sweden): +46 73 4618050. Cell (US): +1 206 457 7887

On 31 maj 2012, at 17:29, Berk Hess <hess at kth.se> wrote:

> Hi,
> 
> But on what platform(s) are Fortran kernels still faster?
> If this is only some obscure or old platform, we might want to get rid of them anyhow.
> It mostly does more bad than good, as many people seem to think Fortran is faster than C
> and therefore compile with Fortran and run into trouble.
> 
> Cheers,
> 
> Berk
> 
> 
> On 05/31/2012 05:26 PM, Erik Lindahl wrote:
>> Hi,
>> 
>> Formally the Fortran77 standard specifies that all variables should be static, which of course interferes in bad ways with threads.
>> 
>> While there are some fortran compilers that require flags to deviate from this, I don't think GNU is one of them.
>> 
>> I was anyway contemplating whether to disable them (temporarily) and add back together with the other kernels in a few days, so I suggest I do that in the detection patch.
>> 
>> Cheers,
>> 
>> Erik
>> 
>> --
>> Erik Lindahl<erik at kth.se>  <lindahl at cbr.su.se>
>> Professor of Theoretical&  Computational Biophysics, KTH
>> Professor of Computational Structural Biology, Stockholm University
>> Tel (KTH): +46 8 55378029  Tel (SU): +46 8 164675
>> Cell (Sweden): +46 73 4618050. Cell (US): +1 206 457 7887
>> 
>> On 31 maj 2012, at 17:09, Szilárd Páll<szilard.pall at cbr.su.se>  wrote:
>> 
>>> Hi,
>>> 
>>> I bumped into a strange issue when verifying the nbnxn code with
>>> Jenkins. Using the Fortran kernels, while the appropriate OpenMP flag
>>> is used and mdrun compiles fine, some tools fail to compile with a
>>> weird message complaining about missing symbols:
>>> 
>>> ../gmxlib/libgmx.so.6: undefined reference to `omp_get_thread_num'
>>> ../gmxlib/libgmx.so.6: undefined reference to `GOMP_parallel_end'
>>> ../gmxlib/libgmx.so.6: undefined reference to `omp_get_num_threads'
>>> ../gmxlib/libgmx.so.6: undefined reference to `omp_set_num_threads'
>>> ../gmxlib/libgmx.so.6: undefined reference to `GOMP_parallel_start'
>>> ../gmxlib/libgmx.so.6: undefined reference to `omp_get_max_threads'
>>> 
>>> i) Does anybody have an idea what could be wrong?
>>> 
>>> ii) For what platforms are the fortran kernels still useful? If there
>>> is any platform where they provide a faster alternative to the plain C
>>> kernels, we should definitely keep them. Otherwise, deprecating them
>>> is an option.
>>> 
>>> Cheers,
>>> --
>>> Szilárd
>>> 
> 



More information about the gromacs.org_gmx-developers mailing list