-
Notifications
You must be signed in to change notification settings - Fork 61
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
Building version 1.3.2 fails with undefined reference errors #34
Comments
The "dot" code can be disabled:
|
I think the ifdef testing in the "dot" library is probably confused somehow, but it is a bit tricky for me to figure out what might be the cause. @kloewe ? |
FYI, KeyEvent is not related, that message is due to parallel make (-j 4 or similar), the error looks like it was from linking wb_command. If you could do "make VERBOSE=1" without cleaning or changing anything, it should give you the full link command that fails, which might help figure things out. |
Thank you for your helpful answer. I already removed the build directory after it failed, so I started again from scratch using your recommendation. I have set WORKBENCH_USE_SIMD=OFF, since I anyway set optimization flags for AVX2: -DCMAKE_C_FLAGS_RELEASE="-O3 -DNDEBUG -ftree-vectorize -march=core-avx2 -mavx2" This helped to get rid of the undefined reference error with the dot code. |
If SIMD flags get passed in by the user to the dot library, that is likely to cause it to fail to build, because it compiles some files twice with different compiler SIMD flags active, and the active The dot library was coded with intrinsics, to explicitly make use of SIMD well for the specific case of vector dot product (basically just used in correlation). I have no idea how well any kind of compiler auto-vectorization will work on the rest of the workbench code. I suggest benchmarking correlation (and also some operation(s) that don't invoke the dot library) with your manual non-dot avx2 build, and with a -O3 -DNDEBUG build without any explicit extra SIMD flags (on the theory that those caused the dot library to fail to build). Another trick you might try is that the dot library is just about the only C code in workbench, so you could set the CXX flags to include explicit SIMD options, but leave them out of the C flags. |
Thank you for your reply.
I was following your recommendation to set the options for SIMD in the CXX flags but not in the C flags.
I could meanwhile successfully compile the connectome workbench.
Thank you again for the very good support.
…--
ETH Zurich, Dr. sc. ETH Samuel Fux
High Performance Computing, Scientific IT Services
WEC D 13, Weinbergstrasse 11, 8092 Zurich, Switzerland
Phone +41 44 632 57 63, http://www.id.ethz.ch/
samuel.fux@id.ethz.ch
________________________________
Von: Tim Coalson <notifications@github.com>
Gesendet: Montag, 24. Juni 2019 20:09:31
An: Washington-University/workbench
Cc: Fux Samuel (ID SIS); Author
Betreff: Re: [Washington-University/workbench] Building version 1.3.2 fails with undefined reference errors (#34)
If SIMD flags get passed in by the user to the dot library, that is likely to cause it to fail to build, because it compiles some files twice with different compiler SIMD flags active, and the active #defines change what some of its functions are named.
The dot library was coded with intrinsics, to explicitly make use of SIMD well for the specific case of vector dot product (basically just used in correlation). I have no idea how well any kind of compiler auto-vectorization will work on the rest of the workbench code. I suggest benchmarking correlation (and other operations which don't invoke the dot library) with your manual non-dot SIMD build, and with a -O3 build without any explicit extra SIMD flags (on the theory that those caused the dot library to fail to build).
Another trick you might try is that the dot library is just about the only C code in workbench, so you could set the CXX flags to include explicit SIMD options, but leave them out of the C flags.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub<#34?email_source=notifications&email_token=AC3EHK7D4HN3E4D73GXJOGDP4EEVXA5CNFSM4H2RFJW2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODYNYDTA#issuecomment-505119180>, or mute the thread<https://github.com/notifications/unsubscribe-auth/AC3EHK5JIWSF6N2QPLXLZX3P4EEVXANCNFSM4H2RFJWQ>.
|
Hi,
I am trying to build the connectome workbench 1.3.2 using GCC 4.8.5, Qt 5.9.1, Mesa 17.2.3 and CMake 3.11.1. The build almost finishes and then fails at 93% with the error message:
Any help is appreciated. If there is any useful information that I can provide, then please let me know.
[sfux@eu-c7-041-01 build]$ cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
[sfux@eu-c7-041-01 build]$ uname -a
Linux eu-c7-041-01 3.10.0-862.14.4.el7.x86_64 #1 SMP Wed Sep 26 15:12:11 UTC 2018 x86_64 GNU/Linux
[sfux@eu-c7-041-01 build]$
The text was updated successfully, but these errors were encountered: