-
-
Notifications
You must be signed in to change notification settings - Fork 5.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
error compiling openblas with older assembler #7653
Comments
Does the problem persist after cleaning the OpenBLAS build and remaking? |
Hi yes it does. Thanks From: Jiahao Chen [mailto:[email protected]] Does the problem persist after cleaning the OpenBLAS build and remaking? — [http://www.plymouth.ac.uk/images/email_footer.gif]http://www.plymouth.ac.uk/worldclass This email and any files with it are confidential and intended solely for the use of the recipient to whom it is addressed. If you are not the intended recipient then copying, distribution or other use of the information contained is strictly prohibited and you should not rely on it. If you have received this email in error please let the sender know immediately and delete it from your system(s). Internet emails are not necessarily secure. While we take every care, Plymouth University accepts no responsibility for viruses and it is your responsibility to scan emails and their attachments. Plymouth University does not accept responsibility for any changes made after it was sent. Nothing in this email or its attachments constitutes an order for goods or services unless accompanied by an official order form. |
What are the output lines just before |
Lines before:- ../kernel/x86_64/dgemm_kernel_4x4_haswell.S:1709: Error: no such instruction: When I ran make -C deps clean-openblas These are the lines at the end ../kernel/x86_64/dgemm_kernel_4x4_haswell.S:1713: Error: no such instruction: Which to me look the same. Thanks for your help. Peter From: Jiahao Chen [mailto:[email protected]] What are the output lines just before make[4]: *** [dgemm_kernel_HASWELL.o] Error 1? — [http://www.plymouth.ac.uk/images/email_footer.gif]http://www.plymouth.ac.uk/worldclass This email and any files with it are confidential and intended solely for the use of the recipient to whom it is addressed. If you are not the intended recipient then copying, distribution or other use of the information contained is strictly prohibited and you should not rely on it. If you have received this email in error please let the sender know immediately and delete it from your system(s). Internet emails are not necessarily secure. While we take every care, Plymouth University accepts no responsibility for viruses and it is your responsibility to scan emails and their attachments. Plymouth University does not accept responsibility for any changes made after it was sent. Nothing in this email or its attachments constitutes an order for goods or services unless accompanied by an official order form. |
This usually means your assembler is too old to support Haswell instructions. See Linux build troubleshooting for 3 possible workarounds. |
@pjmills do you know what your processor model number is? Others: Now that we've upgraded to OpenBLAS v0.2.10, we can also add a |
Morning Tony, Thanks for your reply. I have checked the CPU info on my linux box and it show it as a single processor - Intel(R) Pentium(R) 4 CPU 2.80GHz. I hope this helps. Regards Peter processor : 1 From: Tony Kelman [mailto:[email protected]] @pjmillshttps://github.com/pjmills do you know what your processor model number is? Others: Now that we've upgraded to OpenBLAS v0.2.10, we can also add a OPENBLAS_NO_AVX2 flag to be more specific here (or maybe a more generic OPENBLAS_FLAGS like we do for LLVM?). The Haswell kernels are the ones that require newer binutils (which can also be installed via the Scientific Linux devtoolset, I can't find the discussion off the top of my head but there's a link in another recent issue here), but OPENBLAS_NO_AVX will slow down Sandy Bridge too. — [http://www.plymouth.ac.uk/images/email_footer.gif]http://www.plymouth.ac.uk/worldclass This email and any files with it are confidential and intended solely for the use of the recipient to whom it is addressed. If you are not the intended recipient then copying, distribution or other use of the information contained is strictly prohibited and you should not rely on it. If you have received this email in error please let the sender know immediately and delete it from your system(s). Internet emails are not necessarily secure. While we take every care, Plymouth University accepts no responsibility for viruses and it is your responsibility to scan emails and their attachments. Plymouth University does not accept responsibility for any changes made after it was sent. Nothing in this email or its attachments constitutes an order for goods or services unless accompanied by an official order form. |
Pentium 4, that's way too old to be worrying about AVX. Try
|
Tony, Many Thanks, I thought it might be a problem when I released it was an old machine. But only using this machine as a test before I install on a cluster system Will let you know how things go. Regards Peter From: Tony Kelman [mailto:[email protected]] Pentium 4, that's way too old to be worrying about AVX. Try echo "OPENBLAS_NO_AVX = 1" >> Make.user make — [http://www.plymouth.ac.uk/images/email_footer.gif]http://www.plymouth.ac.uk/worldclass This email and any files with it are confidential and intended solely for the use of the recipient to whom it is addressed. If you are not the intended recipient then copying, distribution or other use of the information contained is strictly prohibited and you should not rely on it. If you have received this email in error please let the sender know immediately and delete it from your system(s). Internet emails are not necessarily secure. While we take every care, Plymouth University accepts no responsibility for viruses and it is your responsibility to scan emails and their attachments. Plymouth University does not accept responsibility for any changes made after it was sent. Nothing in this email or its attachments constitutes an order for goods or services unless accompanied by an official order form. |
Hi Tony, Have just finished compiling after using your suggestion and theis is the output:- ../kernel/x86_64/dgemm_kernel_4x4_haswell.S:1713: Error: no such instruction: Still seems to have a problem – Any thoughts on why it would fail? May give it a go directly on the cluster as this is newer hardware. Peter Pentium 4, that's way too old to be worrying about AVX. Try echo "OPENBLAS_NO_AVX = 1" >> Make.user make — [http://www.plymouth.ac.uk/images/email_footer.gif]http://www.plymouth.ac.uk/worldclass This email and any files with it are confidential and intended solely for the use of the recipient to whom it is addressed. If you are not the intended recipient then copying, distribution or other use of the information contained is strictly prohibited and you should not rely on it. If you have received this email in error please let the sender know immediately and delete it from your system(s). Internet emails are not necessarily secure. While we take every care, Plymouth University accepts no responsibility for viruses and it is your responsibility to scan emails and their attachments. Plymouth University does not accept responsibility for any changes made after it was sent. Nothing in this email or its attachments constitutes an order for goods or services unless accompanied by an official order form. |
Odd, you may need to clean out the older openblas build via Technically the old software of CentOS is at fault more than the Pentium 4 hardware. As long as you're running on something newer than an i486 processor then Julia should work. |
Hi Tony, I have just run a test install on our cluster and this seemed to compile fine. Just one question I put in the Make.user file that I wanted it to install to the /opt folder using the prefix option. However, because I downloaded into a tmp folder and did the make here the software compiled and then I then ran Make install. This did create a new folder in /opt/Julia with a Julia executable in /opt/Julia/bin But now I have two Julia exectuables 1) in tmp/Julia and a second one in /opt/Julia/bin Should I have done the installation a different way? Thanks Peter From: Tony Kelman [mailto:[email protected]] Pentium 4, that's way too old to be worrying about AVX. Try echo "OPENBLAS_NO_AVX = 1" >> Make.user make — [http://www.plymouth.ac.uk/images/email_footer.gif]http://www.plymouth.ac.uk/worldclass This email and any files with it are confidential and intended solely for the use of the recipient to whom it is addressed. If you are not the intended recipient then copying, distribution or other use of the information contained is strictly prohibited and you should not rely on it. If you have received this email in error please let the sender know immediately and delete it from your system(s). Internet emails are not necessarily secure. While we take every care, Plymouth University accepts no responsibility for viruses and it is your responsibility to scan emails and their attachments. Plymouth University does not accept responsibility for any changes made after it was sent. Nothing in this email or its attachments constitutes an order for goods or services unless accompanied by an official order form. |
Julia always creates an executable in the location where it gets compiled. If you install to a separate location then you should be able to move around or remove the source build and the installed copy should keep working. However for the sake of faster incremental builds to keep up with future updates to Julia, I would leave the source build where it is. You can do |
Hi Tony, Many thanks for the info. All sorted now thanks. We do have a second cluster which I would like to install the software on but the version of GCC is version 4.4.7 Will Julia work with this version? Regards Peter From: Tony Kelman [mailto:[email protected]] Julia always creates an executable in the location where it gets compiled. If you install to a separate location then you should be able to move around or remove the source build and the installed copy should keep working. However for the sake of faster incremental builds to keep up with future updates to Julia, I would leave the source build where it is. You can do git pull && make in the future without having to rebuild all the large dependencies. — [http://www.plymouth.ac.uk/images/email_footer.gif]http://www.plymouth.ac.uk/worldclass This email and any files with it are confidential and intended solely for the use of the recipient to whom it is addressed. If you are not the intended recipient then copying, distribution or other use of the information contained is strictly prohibited and you should not rely on it. If you have received this email in error please let the sender know immediately and delete it from your system(s). Internet emails are not necessarily secure. While we take every care, Plymouth University accepts no responsibility for viruses and it is your responsibility to scan emails and their attachments. Plymouth University does not accept responsibility for any changes made after it was sent. Nothing in this email or its attachments constitutes an order for goods or services unless accompanied by an official order form. |
It should, at the moment. I suspect that will probably change with LLVM 3.5 in a few months, due to C++11. Depending on your binutils versions you'll likely need some of the same NO_AVX flags for OpenBLAS. |
Hi tony, I realise that you have closed the log, but would be grateful if you could just confirm that the error message below is because I have tried to compile Julia with a too older version of GCC.(GCC4.4.7) I setup the Make.user file with the flag as you previously advised, but as you see the compile failed. Any advice would be much appreciated. Thanks /opt/julia/deps/llvm-3.3/include/llvm/ADT/DenseMap.h:949: note: initialized from here I From: Tony Kelman [mailto:[email protected]] It should, at the moment. I suspect that will probably change with LLVM 3.5 in a few months, due to C++11. Depending on your binutils versions you'll likely need some of the same NO_AVX flags for OpenBLAS. — [http://www.plymouth.ac.uk/images/email_footer.gif]http://www.plymouth.ac.uk/worldclass This email and any files with it are confidential and intended solely for the use of the recipient to whom it is addressed. If you are not the intended recipient then copying, distribution or other use of the information contained is strictly prohibited and you should not rely on it. If you have received this email in error please let the sender know immediately and delete it from your system(s). Internet emails are not necessarily secure. While we take every care, Plymouth University accepts no responsibility for viruses and it is your responsibility to scan emails and their attachments. Plymouth University does not accept responsibility for any changes made after it was sent. Nothing in this email or its attachments constitutes an order for goods or services unless accompanied by an official order form. |
@pjmills The actual build error does not appear to be represented in the output you've provided; the final compilation lines shown are just warnings. Please build with the |
We can reopen the issue if you think there's still a problem. Or if you have a suggested way of improving the documentation so the proper fix is clearer in the future. As @pao said, the error was somewhere much earlier due to parallel make. If you do |
Hi Tony, Thanks for your reply. I have tried to rum the Make command again using the option Make –j 1 The error is still present and I have attached the log file from the Make so that you might be able to determine why it still fails to compile. make[4]: *** [dtrmm_kernel_LT_HASWELL.o] Error 1 I have openmpi and Gcc 4.4.7 installed on the system and load these via a module load command prior to doing the Make You comment regarding any suggestion to improve the documentation, a section on any perquisites would be useful. I await you comments and hopefully a sway to resolve the issue. Regards Peter From: Tony Kelman [mailto:[email protected]] We can reopen the issue if you think there's still a problem. Or if you have a suggested way of improving the documentation so the proper fix is clearer in the future. As @paohttps://github.com/pao said, the error was somewhere much earlier due to parallel make. If you do make -j 1 we should get a better sense of the actual problem. I can build current master just fine with GCC 4.4.7. — [http://www.plymouth.ac.uk/images/email_footer.gif]http://www.plymouth.ac.uk/worldclass This email and any files with it are confidential and intended solely for the use of the recipient to whom it is addressed. If you are not the intended recipient then copying, distribution or other use of the information contained is strictly prohibited and you should not rely on it. If you have received this email in error please let the sender know immediately and delete it from your system(s). Internet emails are not necessarily secure. While we take every care, Plymouth University accepts no responsibility for viruses and it is your responsibility to scan emails and their attachments. Plymouth University does not accept responsibility for any changes made after it was sent. Nothing in this email or its attachments constitutes an order for goods or services unless accompanied by an official order form. |
@pjmills email attachments are not visible on Github. Could you post the log somewhere like gist.github.com? This looks like it was probably the same error with the Haswell kernels, did you repeat the step with putting |
Tony, Oops no I forgot that….. Right have now done that step as required and removed the folder and download the files again. Ran Make –j 1 and the error output is the same. ../kernel/x86_64/dgemm_kernel_4x4_haswell.S:2548: Error: no such instruction: Are there any prerequisites that I have missed? Have tried to upload to my login on GitHub Gist https://gist.github.com/pjmills/989f976cdbc4c63b6e0e Hope this helps. Many Thanks Peter From: Tony Kelman [mailto:[email protected]] @pjmillshttps://github.com/pjmills email attachments are not visible on Github. Could you post the log somewhere like gist.github.com? This looks like it was probably the same error with the Haswell kernels, did you repeat the step with putting OPENBLAS_NO_AVX = 1 in your Make.user file? — [http://www.plymouth.ac.uk/images/email_footer.gif]http://www.plymouth.ac.uk/worldclass This email and any files with it are confidential and intended solely for the use of the recipient to whom it is addressed. If you are not the intended recipient then copying, distribution or other use of the information contained is strictly prohibited and you should not rely on it. If you have received this email in error please let the sender know immediately and delete it from your system(s). Internet emails are not necessarily secure. While we take every care, Plymouth University accepts no responsibility for viruses and it is your responsibility to scan emails and their attachments. Plymouth University does not accept responsibility for any changes made after it was sent. Nothing in this email or its attachments constitutes an order for goods or services unless accompanied by an official order form. |
@pjmills d'oh, my mistake, sorry. Turns out |
Tony, Many thanks for all your help. When I use the flag as per below it all compiles and runs fine. Thanks Peter From: Tony Kelman [mailto:[email protected]] @pjmillshttps://github.com/pjmills d'oh, my mistake, sorry. Turns out OPENBLAS_NO_AVX actually does not disable AVX2 instructions like I thought it did. Make sure you git pull to latest master, then try with OPENBLAS_NO_AVX2 = 1 instead. — [http://www.plymouth.ac.uk/images/email_footer.gif]http://www.plymouth.ac.uk/worldclass This email and any files with it are confidential and intended solely for the use of the recipient to whom it is addressed. If you are not the intended recipient then copying, distribution or other use of the information contained is strictly prohibited and you should not rely on it. If you have received this email in error please let the sender know immediately and delete it from your system(s). Internet emails are not necessarily secure. While we take every care, Plymouth University accepts no responsibility for viruses and it is your responsibility to scan emails and their attachments. Plymouth University does not accept responsibility for any changes made after it was sent. Nothing in this email or its attachments constitutes an order for goods or services unless accompanied by an official order form. |
Add "#define NO_AVX2 1024" to the file cpuid.h as the last second line. Good day! |
Use a newer assembler to allow avx2 instructions. This is the same error that was [reported here](JuliaLang/julia#7653) and [here](spack#12235). ``` ../kernel/x86_64/dgemm_kernel_4x4_haswell.S:1709: Error: no such instruction: vpermpd $ 0xb1,%ymm0,%ymm0' ../kernel/x86_64/dgemm_kernel_4x4_haswell.S:1709: Error: no such instruction:vpermpd $ 0x1b,%ymm0,%ymm0' ```
hi All,
I am attempting to compile Julia as per instructions but receiving the following message at the end of the compilation
make[4]: *** [dgemm_kernel_HASWELL.o] Error 1
make[4]: *** Waiting for unfinished jobs....
make[3]: *** [libs] Error 1
*** Clean the OpenBLAS build with 'make -C deps clean-openblas'. Rebuild with 'make OPENBLAS_USE_THREAD=0 if OpenBLAS had trouble linking libpthread.so, and with 'make OPENBLAS_TARGET_ARCH=NEHALEM' if there were errors building SandyBridge support. Both these options can also be used simultaneously. ***
make[2]: *** [openblas-v0.2.10.rc2/libopenblas.so] Error 1
make[1]: *** [julia-release] Error 2
make: *** [release] Error 2
Could anyone help shed some light as to what the problem is please.
For Info - the OS is centos 6.5
Thanks
Peter
The text was updated successfully, but these errors were encountered: