[gmx-developers] master broken for double precision on x86_64, was: MSVC 32bit + SSE

Roland Schulz roland at utk.edu
Tue Jul 27 03:13:33 CEST 2010


Hi,

this is unrelated to the issue I reported.

I think Erik forgot to commit gmx_sse2_double.h with that commit. Compile in
single precision works.

Roland

On Mon, Jul 26, 2010 at 7:49 PM, Alexey Shvetsov <alexxyum at gmail.com> wrote:

> Hi all!
>
> Seems after commit 0648cdb56793bae5ec3f205add0a95330d08ae19 gromacs
> dont builds anymore on linux x86_64
>
>
> /var/tmp/portage/sci-chemistry/gromacs-9999/work/gromacs-9999/src/gmxlib/n
> onbonded/nb_kernel_x86_64_sse2/nb_kernel_allvsall_sse2_double.c: In
> function
> ‘nb_kernel_allvsall_sse2_double’:
> /var/tmp/portage/sci-chemistry/gromacs-999
>
> 9/work/gromacs-9999/src/gmxlib/nonbonded/nb_kernel_x86_64_sse2/nb_kernel_allv
> sall_sse2_double.c:694: error: incompatible types when assigning to type
> ‘__m128d’ from type
> ‘int’
> /var/tmp/portage/sci-chemistry/gromacs-9999/work/gromacs-9999/src/gmxl
> ib/nonbonded/nb_kernel_x86_64_sse2/nb_kernel_allvsall_sse2_double.c:695:
> error: incompatible types when assigning to type ‘__m128d’ from type
> ‘int’
> /var/tmp/portage/sci-chemistry/gromacs-9999/work/gromacs-9999/src/gmxl
> ib/nonbonded/nb_kernel_x86_64_sse2/nb_kernel_allvsall_sse2_double.c:702:
> error: incompatible types when assigning to type ‘__m128d’ from type
> ‘int’
> /var/tmp/portage/sci-chemistry/gromacs-9999/work/gromacs-9999/src/gmxl
> ib/nonbonded/nb_kernel_x86_64_sse2/nb_kernel_allvsall_sse2_double.c:703:
> error: incompatible types when assigning to type ‘__m128d’ from type
> ‘int’
> /var/tmp/portage/sci-chemistry/gromacs-9999/work/gromacs-9999/src/gmxl
> ib/nonbonded/nb_kernel_x86_64_sse2/nb_kernel_allvsall_sse2_double.c:794:
> error: incompatible types when assigning to type ‘__m128d’ from type
> ‘int’
> /var/tmp/portage/sci-chemistry/gromacs-9999/work/gromacs-9999/src/gmxl
> ib/nonbonded/nb_kernel_x86_64_sse2/nb_kernel_allvsall_sse2_double.c:795:
> error: incompatible types when assigning to type ‘__m128d’ from type
> ‘int’
> /var/tmp/portage/sci-chemistry/gromacs-9999/work/gromacs-9999/src/gmxl
> ib/nonbonded/nb_kernel_x86_64_sse2/nb_kernel_allvsall_sse2_double.c:798:
> error: incompatible types when assigning to type ‘__m128d’ from type
> ‘int’
> /var/tmp/portage/sci-chemistry/gromacs-9999/work/gromacs-9999/src/gmxl
> ib/nonbonded/nb_kernel_x86_64_sse2/nb_kernel_allvsall_sse2_double.c:799:
> error: incompatible types when assigning to type ‘__m128d’ from type
> ‘int’
> /var/tmp/portage/sci-chemistry/gromacs-9999/work/gromacs-9999/src/gmxl
> ib/nonbonded/nb_kernel_x86_64_sse2/nb_kernel_allvsall_sse2_double.c:892:
> error: incompatible types when assigning to type ‘__m128d’ from type
> ‘int’
> /var/tmp/portage/sci-chemistry/gromacs-9999/work/gromacs-9999/src/gmxl
> ib/nonbonded/nb_kernel_x86_64_sse2/nb_kernel_allvsall_sse2_double.c:893:
> error: incompatible types when assigning to type ‘__m128d’ from type
> ‘int’
> /var/tmp/portage/sci-chemistry/gromacs-9999/work/gromacs-9999/src/gmxl
> ib/nonbonded/nb_kernel_x86_64_sse2/nb_kernel_allvsall_sse2_double.c:899:
> error: incompatible types when assigning to type ‘__m128d’ from type
> ‘int’
> /var/tmp/portage/sci-chemistry/gromacs-9999/work/gromacs-9999/src/gmxl
> ib/nonbonded/nb_kernel_x86_64_sse2/nb_kernel_allvsall_sse2_double.c:900:
> error: incompatible types when assigning to type ‘__m128d’ from type
> ‘int’
> make[5]: *** [nb_kernel_allvsall_sse2_double.lo] Error 1
> make[5]: ***
> Waiting for unfinished
> jobs....
> /var/tmp/portage/sci-chemistry/gromacs-9999/work/gromacs-9999/src/g
>
> mxlib/nonbonded/nb_kernel_x86_64_sse2/nb_kernel_allvsallgb_sse2_double.c:40:2
> 9: error: gmx_sse2_double.h: No such file or
> directory
> /var/tmp/portage/sci-chemistry/gromacs-9999/work/gromacs-9999/src/
> gmxlib/nonbonded/nb_kernel_x86_64_sse2/nb_kernel_allvsallgb_sse2_double.c:
> In
> function
> ‘nb_kernel_allvsallgb_sse2_double’:
> /var/tmp/portage/sci-chemistry/gromacs-9
>
> 999/work/gromacs-9999/src/gmxlib/nonbonded/nb_kernel_x86_64_sse2/nb_kernel_al
> lvsallgb_sse2_double.c:735: error: incompatible types when assigning to
> type
> ‘__m128d’ from type
> ‘int’
> /var/tmp/portage/sci-chemistry/gromacs-9999/work/gromacs-9999/src/gmxl
> ib/nonbonded/nb_kernel_x86_64_sse2/nb_kernel_allvsallgb_sse2_double.c:736:
> error: incompatible types when assigning to type ‘__m128d’ from type
> ‘int’
> /var/tmp/portage/sci-chemistry/gromacs-9999/work/gromacs-9999/src/gmxl
> ib/nonbonded/nb_kernel_x86_64_sse2/nb_kernel_allvsallgb_sse2_double.c:743:
> error: incompatible types when assigning to type ‘__m128d’ from type
> ‘int’
> /var/tmp/portage/sci-chemistry/gromacs-9999/work/gromacs-9999/src/gmxl
> ib/nonbonded/nb_kernel_x86_64_sse2/nb_kernel_allvsallgb_sse2_double.c:744:
> error: incompatible types when assigning to type ‘__m128d’ from type
> ‘int’
> /var/tmp/portage/sci-chemistry/gromacs-9999/work/gromacs-9999/src/gmxl
> ib/nonbonded/nb_kernel_x86_64_sse2/nb_kernel_allvsallgb_sse2_double.c:933:
> error: incompatible types when assigning to type ‘__m128d’ from type
> ‘int’
> /var/tmp/portage/sci-chemistry/gromacs-9999/work/gromacs-9999/src/gmxl
> ib/nonbonded/nb_kernel_x86_64_sse2/nb_kernel_allvsallgb_sse2_double.c:934:
> error: incompatible types when assigning to type ‘__m128d’ from type
> ‘int’
> /var/tmp/portage/sci-chemistry/gromacs-9999/work/gromacs-9999/src/gmxl
> ib/nonbonded/nb_kernel_x86_64_sse2/nb_kernel_allvsallgb_sse2_double.c:937:
> error: incompatible types when assigning to type ‘__m128d’ from type
> ‘int’
> /var/tmp/portage/sci-chemistry/gromacs-9999/work/gromacs-9999/src/gmxl
> ib/nonbonded/nb_kernel_x86_64_sse2/nb_kernel_allvsallgb_sse2_double.c:938:
> error: incompatible types when assigning to type ‘__m128d’ from type
> ‘int’
> /var/tmp/portage/sci-chemistry/gromacs-9999/work/gromacs-9999/src/gmxl
> ib/nonbonded/nb_kernel_x86_64_sse2/nb_kernel_allvsallgb_sse2_double.c:1129:
> error: incompatible types when assigning to type ‘__m128d’ from type
> ‘int’
> /var/tmp/portage/sci-chemistry/gromacs-9999/work/gromacs-9999/src/gmxl
> ib/nonbonded/nb_kernel_x86_64_sse2/nb_kernel_allvsallgb_sse2_double.c:1130:
> error: incompatible types when assigning to type ‘__m128d’ from type
> ‘int’
> /var/tmp/portage/sci-chemistry/gromacs-9999/work/gromacs-9999/src/gmxl
> ib/nonbonded/nb_kernel_x86_64_sse2/nb_kernel_allvsallgb_sse2_double.c:1137:
> error: incompatible types when assigning to type ‘__m128d’ from type
> ‘int’
> /var/tmp/portage/sci-chemistry/gromacs-9999/work/gromacs-9999/src/gmxl
> ib/nonbonded/nb_kernel_x86_64_sse2/nb_kernel_allvsallgb_sse2_double.c:1138:
> error: incompatible types when assigning to type ‘__m128d’ from type
> ‘int’
> make[5]: *** [nb_kernel_allvsallgb_sse2_double.lo] Error 1
> make[5]:
> Leaving directory
>
> `/var/tmp/portage/sci-chemistry/gromacs-9999/work/gromacs-9999-double/src/gm
> xlib/nonbonded/nb_kernel_x86_64_sse2'
> make[4]: *** [all-recursive] Error
> 1
> make[4]: Leaving directory
>
> `/var/tmp/portage/sci-chemistry/gromacs-9999/work/gromacs-9999-double/src/gm
> xlib/nonbonded'
> make[3]: *** [all-recursive] Error 1
> make[3]: Leaving
> directory
>
> `/var/tmp/portage/sci-chemistry/gromacs-9999/work/gromacs-9999-double/src/gm
> xlib'
> make[2]: *** [all-recursive] Error 1
> make[2]: Leaving directory
> `/var/tmp/portage/sci-chemistry/gromacs-9999/work/gromacs-9999-double/src'
> m
> ake[1]: *** [all] Error 2
> make[1]: Leaving directory
> `/var/tmp/portage/sci-chemistry/gromacs-9999/work/gromacs-9999-double/src'
> m
> ake: *** [all-recursive] Error 1
>
>
>
>
> On Monday 26 of July 2010 09:00:46
> Roland Schulz wrote:
> > Hi,
> >
> > gmx_sse2_single.h doesn't compile with MSVC
> 2010 on 32bit. As the COMPILER
> > RANT in the file states MSVC doesn't
> support more than 3 __m128 parameters.
> > In the rant it also says that  some
> compilers don't support pointers to
> > __m128. For what compiler is this
> still true? If none, I suggest to change
> > the arguments to const
> pointers.
> >
> > If there are still, some: Are there also compilers which
> don't support
> > either pointers nor unlimited __m128 parameters?
> >
> > If
> not, I suggest a mixed approach. Where we detect which version is
> >
> supported and use macros to have to write each function only once. See the
> >
> below example. I think this is much less error prone than converting all
> >
> functions to macros as the rant suggests. Mainly because of the double
> >
> evaluation pitfall of macros.
> >
> > Roland
> >
> > sample:
> > #include
> <xmmintrin.h>
> >
> > #ifdef SSE_POINTER
> > #define SSE_M128(a) const __m128
> *a
> > #define SSE_REF(a) (&a)
> > #define SSE_IND(a) (*a)
> > #else
> > #define
> SSE_M128(a) __m128 a
> > #define SSE_REF(a) (a)
> > #define SSE_IND(a) (a)
> >
> #endif
> >
> > static inline void f(SSE_M128(b)) {
> >   __m128 x = SSE_IND(b);
> >
> }
> >
> > int main() {
> >   __m128 x;
> >   f(SSE_REF(x));
> >   return 0;
> > }
>
> --
>
> Best Regards,
> Alexey 'Alexxy' Shvetsov
> Petersburg Nuclear Physics
> Institute, Russia
> Department of Molecular and Radiation Biophysics
> Gentoo
> Team Ru
> Gentoo Linux
> Dev
> mailto:alexxyum at gmail.com
> mailto:alexxy at gentoo.org
> mailto:alexxy at omrb.pn
> pi.spb.ru
>
> --
> gmx-developers mailing list
> gmx-developers at gromacs.org
> http://lists.gromacs.org/mailman/listinfo/gmx-developers
> Please don't post (un)subscribe requests to the list. Use the
> www interface or send it to gmx-developers-request at gromacs.org.
>



-- 
ORNL/UT Center for Molecular Biophysics cmb.ornl.gov
865-241-1537, ORNL PO BOX 2008 MS6309
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://maillist.sys.kth.se/pipermail/gromacs.org_gmx-developers/attachments/20100726/38eccec7/attachment.html>


More information about the gromacs.org_gmx-developers mailing list