Project

General

Profile

Bug #1074

AVX256 Double precision fails to build with gcc 4.7.0

Added by Martin Hoefling over 6 years ago. Updated over 6 years ago.

Status:
Closed
Priority:
High
Assignee:
-
Category:
-
Target version:
Affected version - extra info:
Affected version:
Difficulty:
uncategorized
Close

Description

As noted already by Christoph Junghans in #1058 http://redmine.gromacs.org/issues/1058#note-3, build fails with:

In file included from /tmp/jenkins/workspace/Gromacs-4.6/CLUSTER/owl4/COMPILER/gcc/CPUACC/AVX_256/PAR/THREADS/PRECISION/DOUBLE_ON/src/gmxlib/nonbonded/nb_kernel_avx_256_double/nb_kernel_ElecRFCut_VdwLJSh_GeomW4P1_avx_256_double.c:50:0:
/tmp/jenkins/workspace/Gromacs-4.6/CLUSTER/owl4/COMPILER/gcc/CPUACC/AVX_256/PAR/THREADS/PRECISION/DOUBLE_ON/src/gmxlib/nonbonded/nb_kernel_avx_256_double/kernelutil_x86_avx_256_double.h: In function ‘gmx_mm256_load_4real_swizzle_pd’:
/tmp/jenkins/workspace/Gromacs-4.6/CLUSTER/owl4/COMPILER/gcc/CPUACC/AVX_256/PAR/THREADS/PRECISION/DOUBLE_ON/src/gmxlib/nonbonded/nb_kernel_avx_256_double/kernelutil_x86_avx_256_double.h:80:5: error: incompatible type for argument 1 of ‘gmx_mm256_set_m128’
In file included from /tmp/jenkins/workspace/Gromacs-4.6/CLUSTER/owl4/COMPILER/gcc/CPUACC/AVX_256/PAR/THREADS/PRECISION/DOUBLE_ON/include/gmx_math_x86_avx_256_double.h:38:0,
from /tmp/jenkins/workspace/Gromacs-4.6/CLUSTER/owl4/COMPILER/gcc/CPUACC/AVX_256/PAR/THREADS/PRECISION/DOUBLE_ON/src/gmxlib/nonbonded/nb_kernel_avx_256_double/nb_kernel_ElecRFCut_VdwLJSh_GeomW4P1_avx_256_double.c:49:
/tmp/jenkins/workspace/Gromacs-4.6/CLUSTER/owl4/COMPILER/gcc/CPUACC/AVX_256/PAR/THREADS/PRECISION/DOUBLE_ON/include/gmx_x86_avx_256.h:125:1: note: expected ‘__m128’ but argument is of type ‘__m128d’
In file included from /tmp/jenkins/workspace/Gromacs-4.6/CLUSTER/owl4/COMPILER/gcc/CPUACC/AVX_256/PAR/THREADS/PRECISION/DOUBLE_ON/src/gmxlib/nonbonded/nb_kernel_avx_256_double/nb_kernel_ElecRFCut_VdwLJSh_GeomW4P1_avx_256_double.c:50:0:
/tmp/jenkins/workspace/Gromacs-4.6/CLUSTER/owl4/COMPILER/gcc/CPUACC/AVX_256/PAR/THREADS/PRECISION/DOUBLE_ON/src/gmxlib/nonbonded/nb_kernel_avx_256_double/kernelutil_x86_avx_256_double.h:80:5: error: incompatible type for argument 2 of ‘gmx_mm256_set_m128’
In file included from /tmp/jenkins/workspace/Gromacs-4.6/CLUSTER/owl4/COMPILER/gcc/CPUACC/AVX_256/PAR/THREADS/PRECISION/DOUBLE_ON/include/gmx_math_x86_avx_256_double.h:38:0,

Associated revisions

Revision c88196ed (diff)
Added by Erik Lindahl over 6 years ago

Fixed AVX256 double-precision kernels for gcc

Gcc is pickier with memory alignment and implicit conversions than
either clang or icc. This patch makes sure we align tables to 32-byte
boundaries (16 before), and uses explicit casts to make gcc happy.
Fixes redmine #1074.

Change-Id: I613d49dad74597ce6167e18fd3a048254bc1b859

History

#1 Updated by Erik Lindahl over 6 years ago

Testing update: AVX256 double precision kernels work fine with clang and icc on mac (where they were first written), but apparently gcc-4.7 is pickier about implicit conversions.

#2 Updated by Erik Lindahl over 6 years ago

  • Status changed from New to Closed

Also available in: Atom PDF