More Selective Dynamic_Arch #139

Closed
ikirker opened this Issue Sep 11, 2012 · 7 comments

Projects

None yet

3 participants

@ikirker
ikirker commented Sep 11, 2012

I've had a lot of problems attempting to make a dynamic arch build (mostly with AVX, even with GCC 4.6.3 - I can file a separate issue on that, though), but would there be any room for enabling more selective dynamic builds?

I tried simply deleting processor entries from Makefile.system to see if that would allow this, but that seemed to merely cause problems at the phase where the libraries are joined together, so if I've missed a slightly more complex way of making this work already, I'd be interested in that.

I imagine stub functions that print warnings and exit might be useful in place of all functions for architectures you've elected not to include, just in case.

Owner
xianyi commented Sep 12, 2012

Hi @ikirker ,

Thank you for the suggestion. I think we can implement this feature.

BTW, what is the build error of AVX?

Xianyi

@xianyi xianyi was assigned Sep 12, 2012

@ikirker if you are on OS X: I have seen AVX issues when using "-march=native" (which adds -mavx on sandybridge or newer systems, iff I build with Apple's llvm-gcc, because Apple's assembler does not support AVX as far as I understand. Solution is: Either use clang or use gcc 4.7 (I installed the gcc (and gfortran) via: brew tap homebrew/dupes && brew install gcc --enable-fortran)

@xianyi xianyi added a commit that referenced this issue Sep 17, 2012
@xianyi Refs #139. Added NO_AVX flag to use old Nehalem kernels on Sandy Bridge.
For example, make NO_AVX=1 or make DYNAMIC_ARCH=1 NO_AVX=1
f76a384
Owner
xianyi commented Sep 17, 2012

Hi,

I just added NO_AVX flag. With this flag, OpenBLAS doesn't use AVX kernels. Thus, it's compatible with old compilers and OS.

Thank you

Xianyi

ikirker commented Sep 17, 2012

@xianyi Sorry, it took me a little while to diagnose, and I must have missed the notifications from the previous comments, but apparently the system version of as on our (Linux) cluster is too old to recognise AVX instructions, which then affects compilation with both the Intel and GNU compilers. (And probably others too, but I didn't try those.) In any case, thank you for implementing NO_AVX, I'll give it a try.

The errors received from this basically take the form of pages of errors like the following:

 /tmp/890054.1.Zeetha/icccLG4GW.s:2076: Error: no such instruction: `vaddps %ymm2,%ymm15,%ymm15'

For various instructions including vzeroupper, vmovss, vmulss, and so on.

Owner
xianyi commented Sep 25, 2012

Hi @ikirker ,

Did you try NO_AVX flag on develop branch?

Thank you

Zhang Xianyi

ikirker commented Sep 25, 2012

@xianyi : Oh! Yes, sorry, with NO_AVX, and with DYNAMIC_ARCH, OpenBLAS compiles without any problems with our assembler version. Thank you again for implementing NO_AVX.

In case it becomes relevant to other people in the future, the version of as I am using reports as:
GNU assembler version 2.17.50.0.6-14.el5 (x86_64-redhat-linux) using BFD version 2.17.50.0.6-14.el5 20061020

(Should I close the issue, or do you do that?)

Owner
xianyi commented Sep 25, 2012

Hi @ikirker ,

Thank you for the feedback.

If you need any help, please don't hesitate to let me know.

Zhang Xianyi

@xianyi xianyi closed this Sep 25, 2012
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment