-
Notifications
You must be signed in to change notification settings - Fork 110
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
Intel compiler compilation issue #177
Comments
Hi Muku, This is the same bug in the Intel compilers deducing template parameters from arguments to functions. This compiler bug has been well known to effect Elemental for some time. I'm sure that this fact isn't comforting, but it is something that needs to be fixed on Intel's end rather than in Elemental (it would be tremendously painful/silly to work around it in what is likely thousands of lines of effected code). |
Update: This issue was specific to Intel 16.0.2 and is resolved in Intel 17.0.0. I filed an Intel Premier Support ticket against the Intel 16.0.2 C++ compiler based upon the failure I observed when trying to compiler Note that the error I reported appears to be different from yours, although they may have the same root cause. |
The command I used to generate those files is below. GitHub will not allow me to update the previous comment to include them. icpc -g -O3 -qopenmp -xHOST -std=c++11 -c level1-C.cpp.i -o level1-C.cpp.o >& level1-C.cpp.log |
Also, I configured as follows:
|
@jeffhammond The log file you posted seems to be a separate compilation issue related to |
@poulson @jeffhammond For the record, here is my cmake build command. |
@poulson https://github.com/poulson Yeah I know it's not the same bug but |
Intel 17 compilers were released recently. I tried my build options again and it fails due to simple errors in PMRRR. I assume these are easily fixed, but I am surprised that no one has seen them before. Do I need to do a clean checkout to update the subprojects? I see there are two copies of the source file, with small differences. $ find .. -name rrr.c
../external/pmrrr/src/core/rrr.c
../external/pmrrr/src/rrr.c $ make -j16
[ 0%] Built target El_config
[ 1%] Built target project_parmetis
[ 3%] Built target ElSuiteSparse
[ 4%] Built target project_scalapack
Linking C shared library libpmrrr.so
CMakeFiles/pmrrr.dir/src/core/queue.c.o: In function `PMR_create_empty_queue':
queue.c:(.text+0x0): multiple definition of `PMR_create_empty_queue'
CMakeFiles/pmrrr.dir/src/queue.c.o:queue.c:(.text+0x0): first defined here
CMakeFiles/pmrrr.dir/src/core/queue.c.o: In function `PMR_destroy_queue':
queue.c:(.text+0x50): multiple definition of `PMR_destroy_queue'
CMakeFiles/pmrrr.dir/src/queue.c.o:queue.c:(.text+0x80): first defined here
CMakeFiles/pmrrr.dir/src/core/queue.c.o: In function `PMR_insert_task_at_front':
queue.c:(.text+0x80): multiple definition of `PMR_insert_task_at_front'
CMakeFiles/pmrrr.dir/src/queue.c.o:queue.c:(.text+0xa0): first defined here
CMakeFiles/pmrrr.dir/src/core/queue.c.o: In function `PMR_insert_task_at_back':
queue.c:(.text+0xe0): multiple definition of `PMR_insert_task_at_back'
CMakeFiles/pmrrr.dir/src/queue.c.o:queue.c:(.text+0x130): first defined here
CMakeFiles/pmrrr.dir/src/core/queue.c.o: In function `PMR_remove_task_at_front':
queue.c:(.text+0x130): multiple definition of `PMR_remove_task_at_front'
CMakeFiles/pmrrr.dir/src/queue.c.o:queue.c:(.text+0x1d0): first defined here
CMakeFiles/pmrrr.dir/src/core/queue.c.o: In function `PMR_remove_task_at_back':
queue.c:(.text+0x180): multiple definition of `PMR_remove_task_at_back'
CMakeFiles/pmrrr.dir/src/queue.c.o:queue.c:(.text+0x270): first defined here
CMakeFiles/pmrrr.dir/src/core/queue.c.o: In function `PMR_get_num_tasks':
queue.c:(.text+0x1d0): multiple definition of `PMR_get_num_tasks'
CMakeFiles/pmrrr.dir/src/queue.c.o:queue.c:(.text+0x310): first defined here
CMakeFiles/pmrrr.dir/src/counter.c.o: In function `PMR_create_counter':
counter.c:(.text+0x0): multiple definition of `PMR_create_counter'
CMakeFiles/pmrrr.dir/src/core/counter.c.o:counter.c:(.text+0x0): first defined here
CMakeFiles/pmrrr.dir/src/counter.c.o: In function `PMR_destroy_counter':
counter.c:(.text+0x50): multiple definition of `PMR_destroy_counter'
CMakeFiles/pmrrr.dir/src/core/counter.c.o:counter.c:(.text+0x30): first defined here
CMakeFiles/pmrrr.dir/src/counter.c.o: In function `PMR_get_counter_value':
counter.c:(.text+0x70): multiple definition of `PMR_get_counter_value'
CMakeFiles/pmrrr.dir/src/core/counter.c.o:counter.c:(.text+0x60): first defined here
CMakeFiles/pmrrr.dir/src/counter.c.o: In function `PMR_decrement_counter':
counter.c:(.text+0xe0): multiple definition of `PMR_decrement_counter'
CMakeFiles/pmrrr.dir/src/core/counter.c.o:counter.c:(.text+0xb0): first defined here
CMakeFiles/pmrrr.dir/src/counter.c.o: In function `PMR_increment_counter':
counter.c:(.text+0x160): multiple definition of `PMR_increment_counter'
CMakeFiles/pmrrr.dir/src/core/counter.c.o:counter.c:(.text+0xe0): first defined here
CMakeFiles/pmrrr.dir/src/tasks.c.o: In function `PMR_create_s_task':
tasks.c:(.text+0x0): multiple definition of `PMR_create_s_task'
CMakeFiles/pmrrr.dir/src/core/tasks.c.o:tasks.c:(.text+0x0): first defined here
CMakeFiles/pmrrr.dir/src/tasks.c.o: In function `PMR_create_c_task':
tasks.c:(.text+0xf0): multiple definition of `PMR_create_c_task'
CMakeFiles/pmrrr.dir/src/core/tasks.c.o:tasks.c:(.text+0xf0): first defined here
CMakeFiles/pmrrr.dir/src/tasks.c.o: In function `PMR_create_r_task':
tasks.c:(.text+0x200): multiple definition of `PMR_create_r_task'
CMakeFiles/pmrrr.dir/src/core/tasks.c.o:tasks.c:(.text+0x230): first defined here
CMakeFiles/pmrrr.dir/src/rrr.c.o: In function `PMR_create_rrr':
rrr.c:(.text+0x0): multiple definition of `PMR_create_rrr'
CMakeFiles/pmrrr.dir/src/core/rrr.c.o:rrr.c:(.text+0x0): first defined here
CMakeFiles/pmrrr.dir/src/rrr.c.o: In function `PMR_reset_rrr':
rrr.c:(.text+0xc0): multiple definition of `PMR_reset_rrr'
CMakeFiles/pmrrr.dir/src/core/rrr.c.o:rrr.c:(.text+0x90): first defined here
CMakeFiles/pmrrr.dir/src/rrr.c.o: In function `PMR_increment_rrr_dependencies':
rrr.c:(.text+0xf0): multiple definition of `PMR_increment_rrr_dependencies'
CMakeFiles/pmrrr.dir/src/core/rrr.c.o:rrr.c:(.text+0xc0): first defined here
CMakeFiles/pmrrr.dir/src/rrr.c.o: In function `PMR_set_parent_processed_flag':
rrr.c:(.text+0x170): multiple definition of `PMR_set_parent_processed_flag'
CMakeFiles/pmrrr.dir/src/core/rrr.c.o:rrr.c:(.text+0x110): first defined here
CMakeFiles/pmrrr.dir/src/rrr.c.o: In function `PMR_set_copied_parent_rrr_flag':
rrr.c:(.text+0x1e0): multiple definition of `PMR_set_copied_parent_rrr_flag'
CMakeFiles/pmrrr.dir/src/core/rrr.c.o:rrr.c:(.text+0x140): first defined here
CMakeFiles/pmrrr.dir/src/rrr.c.o: In function `PMR_try_destroy_rrr':
rrr.c:(.text+0x260): multiple definition of `PMR_try_destroy_rrr'
CMakeFiles/pmrrr.dir/src/core/rrr.c.o:rrr.c:(.text+0x170): first defined here
make[2]: *** [external/pmrrr/libpmrrr.so] Error 1
make[1]: *** [external/pmrrr/CMakeFiles/pmrrr.dir/all] Error 2
make: *** [all] Error 2 |
I did a clean checkout and can reproduce the error. @mukunthh Do you actually need
$ make
[ 0%] Built target El_config
[ 9%] Built target pmrrr
[ 11%] Built target ElSuiteSparse
[ 11%] Building CXX object CMakeFiles/El.dir/src/blas_like/level3-C.cpp.o
In file included from /home/jrhammon/Work/Elemental/new/include/El/core.hpp(259),
from /home/jrhammon/Work/Elemental/new/include/El-lite.hpp(13),
from /home/jrhammon/Work/Elemental/new/src/blas_like/level3-C.cpp(9):
/home/jrhammon/Work/Elemental/new/include/El/core/random/decl.hpp(90): error: no instance of overloaded function "El::SampleNormal" matches the specified type
Quad SampleNormal( const Quad& mean, const Quad& stddev );
^
In file included from /home/jrhammon/Work/Elemental/new/include/El/core.hpp(259),
from /home/jrhammon/Work/Elemental/new/include/El-lite.hpp(13),
from /home/jrhammon/Work/Elemental/new/src/blas_like/level3-C.cpp(9):
/home/jrhammon/Work/Elemental/new/include/El/core/random/decl.hpp(92): error: no instance of overloaded function "El::SampleNormal" matches the specified type
Complex<Quad> SampleNormal( const Complex<Quad>& mean, const Quad& stddev );
^
compilation aborted for /home/jrhammon/Work/Elemental/new/src/blas_like/level3-C.cpp (code 2)
make[2]: *** [CMakeFiles/El.dir/src/blas_like/level3-C.cpp.o] Error 2
make[1]: *** [CMakeFiles/El.dir/all] Error 2
make: *** [all] Error 2 |
@jeffhammond |
Disabling quadruple precision gets me farther. @poulson Can you confirm this is a bug in Intel C++, i.e. the code is strictly ISO compliant? $ make
[ 0%] Built target El_config
[ 2%] Built target ElSuiteSparse
[ 11%] Built target pmrrr
[ 11%] Building CXX object CMakeFiles/El.dir/src/blas_like/level2/ApplyGivensSequence.cpp.o
/home/jrhammon/Work/Elemental/new/src/blas_like/level2/ApplyGivensSequence.cpp(446): error: more than one instance of overloaded function "El::ApplyVariableLeft" matches the argument list:
function template "void El::ApplyVariableLeft(El::Int={long long}, const El::Base<F> &, const F &, El::Matrix<F> &, F &, const El::Base<F> &, const F &)"
function template "void El::ApplyVariableLeft(El::Int={long long}, const El::Base<F> &, const El::Base<F> &, El::Matrix<F> &, F &, const El::Base<F> &, const El::Base<F> &)"
argument types are: (El::Int, const float, const float, El::Matrix<float>, float, const Real, const Real)
ApplyVariableLeft
^
detected during instantiation of "void El::ApplyGivensSequence(El::LeftOrRightNS::LeftOrRight, El::GivensSequenceType, El::ForwardOrBackwardNS::ForwardOrBackward, const El::Matrix<El::Base<F>> &, const El::Matrix<El::Base<F>> &, El::Matrix<F> &) [with F=float]" at line 96 of "/home/jrhammon/Work/Elemental/new/include/El/macros/Instantiate.h"
/home/jrhammon/Work/Elemental/new/src/blas_like/level2/ApplyGivensSequence.cpp(454): error: more than one instance of overloaded function "El::ApplyVariableLeft" matches the argument list:
function template "void El::ApplyVariableLeft(El::Int={long long}, const El::Base<F> &, const F &, El::Matrix<F> &, F &, const El::Base<F> &, const F &)"
function template "void El::ApplyVariableLeft(El::Int={long long}, const El::Base<F> &, const El::Base<F> &, El::Matrix<F> &, F &, const El::Base<F> &, const El::Base<F> &)"
argument types are: (El::Int, const float, const float, El::Matrix<float>, float, const Real, const Real)
ApplyVariableLeft
^
detected during instantiation of "void El::ApplyGivensSequence(El::LeftOrRightNS::LeftOrRight, El::GivensSequenceType, El::ForwardOrBackwardNS::ForwardOrBackward, const El::Matrix<El::Base<F>> &, const El::Matrix<El::Base<F>> &, El::Matrix<F> &) [with F=float]" at line 96 of "/home/jrhammon/Work/Elemental/new/include/El/macros/Instantiate.h"
/home/jrhammon/Work/Elemental/new/src/blas_like/level2/ApplyGivensSequence.cpp(465): error: more than one instance of overloaded function "El::ApplyTopLeft" matches the argument list:
function template "void El::ApplyTopLeft(El::Int={long long}, const El::Base<F> &, const F &, El::Matrix<F> &, F &, const El::Base<F> &, const F &)"
function template "void El::ApplyTopLeft(El::Int={long long}, const El::Base<F> &, const El::Base<F> &, El::Matrix<F> &, F &, const El::Base<F> &, const El::Base<F> &)"
argument types are: (El::Int, const float, const float, El::Matrix<float>, float, const Real, const Real)
ApplyTopLeft
^
detected during instantiation of "void El::ApplyGivensSequence(El::LeftOrRightNS::LeftOrRight, El::GivensSequenceType, El::ForwardOrBackwardNS::ForwardOrBackward, const El::Matrix<El::Base<F>> &, const El::Matrix<El::Base<F>> &, El::Matrix<F> &) [with F=float]" at line 96 of "/home/jrhammon/Work/Elemental/new/include/El/macros/Instantiate.h"
/home/jrhammon/Work/Elemental/new/src/blas_like/level2/ApplyGivensSequence.cpp(473): error: more than one instance of overloaded function "El::ApplyTopLeft" matches the argument list:
function template "void El::ApplyTopLeft(El::Int={long long}, const El::Base<F> &, const F &, El::Matrix<F> &, F &, const El::Base<F> &, const F &)"
function template "void El::ApplyTopLeft(El::Int={long long}, const El::Base<F> &, const El::Base<F> &, El::Matrix<F> &, F &, const El::Base<F> &, const El::Base<F> &)"
argument types are: (El::Int, const float, const float, El::Matrix<float>, float, const Real, const Real)
ApplyTopLeft
^
detected during instantiation of "void El::ApplyGivensSequence(El::LeftOrRightNS::LeftOrRight, El::GivensSequenceType, El::ForwardOrBackwardNS::ForwardOrBackward, const El::Matrix<El::Base<F>> &, const El::Matrix<El::Base<F>> &, El::Matrix<F> &) [with F=float]" at line 96 of "/home/jrhammon/Work/Elemental/new/include/El/macros/Instantiate.h"
/home/jrhammon/Work/Elemental/new/src/blas_like/level2/ApplyGivensSequence.cpp(484): error: more than one instance of overloaded function "El::ApplyBottomLeft" matches the argument list:
function template "void El::ApplyBottomLeft(El::Int={long long}, const El::Base<F> &, const F &, El::Matrix<F> &, F &, const El::Base<F> &, const F &)"
function template "void El::ApplyBottomLeft(El::Int={long long}, const El::Base<F> &, const El::Base<F> &, El::Matrix<F> &, F &, const El::Base<F> &, const El::Base<F> &)"
argument types are: (El::Int, const float, const float, El::Matrix<float>, float, const Real, const Real)
ApplyBottomLeft
^
detected during instantiation of "void El::ApplyGivensSequence(El::LeftOrRightNS::LeftOrRight, El::GivensSequenceType, El::ForwardOrBackwardNS::ForwardOrBackward, const El::Matrix<El::Base<F>> &, const El::Matrix<El::Base<F>> &, El::Matrix<F> &) [with F=float]" at line 96 of "/home/jrhammon/Work/Elemental/new/include/El/macros/Instantiate.h"
/home/jrhammon/Work/Elemental/new/src/blas_like/level2/ApplyGivensSequence.cpp(492): error: more than one instance of overloaded function "El::ApplyBottomLeft" matches the argument list:
function template "void El::ApplyBottomLeft(El::Int={long long}, const El::Base<F> &, const F &, El::Matrix<F> &, F &, const El::Base<F> &, const F &)"
function template "void El::ApplyBottomLeft(El::Int={long long}, const El::Base<F> &, const El::Base<F> &, El::Matrix<F> &, F &, const El::Base<F> &, const El::Base<F> &)"
argument types are: (El::Int, const float, const float, El::Matrix<float>, float, const Real, const Real)
ApplyBottomLeft
^
detected during instantiation of "void El::ApplyGivensSequence(El::LeftOrRightNS::LeftOrRight, El::GivensSequenceType, El::ForwardOrBackwardNS::ForwardOrBackward, const El::Matrix<El::Base<F>> &, const El::Matrix<El::Base<F>> &, El::Matrix<F> &) [with F=float]" at line 96 of "/home/jrhammon/Work/Elemental/new/include/El/macros/Instantiate.h"
/home/jrhammon/Work/Elemental/new/src/blas_like/level2/ApplyGivensSequence.cpp(506): error: more than one instance of overloaded function "El::ApplyVariableRight" matches the argument list:
function template "void El::ApplyVariableRight(El::Int={long long}, const El::Base<F> &, const F &, El::Matrix<F> &, F &, const El::Base<F> &, const F &)"
function template "void El::ApplyVariableRight(El::Int={long long}, const El::Base<F> &, const El::Base<F> &, El::Matrix<F> &, F &, const El::Base<F> &, const El::Base<F> &)"
argument types are: (El::Int, const float, const float, El::Matrix<float>, float, const Real, const Real)
ApplyVariableRight
^
detected during instantiation of "void El::ApplyGivensSequence(El::LeftOrRightNS::LeftOrRight, El::GivensSequenceType, El::ForwardOrBackwardNS::ForwardOrBackward, const El::Matrix<El::Base<F>> &, const El::Matrix<El::Base<F>> &, El::Matrix<F> &) [with F=float]" at line 96 of "/home/jrhammon/Work/Elemental/new/include/El/macros/Instantiate.h"
/home/jrhammon/Work/Elemental/new/src/blas_like/level2/ApplyGivensSequence.cpp(514): error: more than one instance of overloaded function "El::ApplyVariableRight" matches the argument list:
function template "void El::ApplyVariableRight(El::Int={long long}, const El::Base<F> &, const F &, El::Matrix<F> &, F &, const El::Base<F> &, const F &)"
function template "void El::ApplyVariableRight(El::Int={long long}, const El::Base<F> &, const El::Base<F> &, El::Matrix<F> &, F &, const El::Base<F> &, const El::Base<F> &)"
argument types are: (El::Int, const float, const float, El::Matrix<float>, float, const Real, const Real)
ApplyVariableRight
^
detected during instantiation of "void El::ApplyGivensSequence(El::LeftOrRightNS::LeftOrRight, El::GivensSequenceType, El::ForwardOrBackwardNS::ForwardOrBackward, const El::Matrix<El::Base<F>> &, const El::Matrix<El::Base<F>> &, El::Matrix<F> &) [with F=float]" at line 96 of "/home/jrhammon/Work/Elemental/new/include/El/macros/Instantiate.h"
/home/jrhammon/Work/Elemental/new/src/blas_like/level2/ApplyGivensSequence.cpp(525): error: more than one instance of overloaded function "El::ApplyTopRight" matches the argument list:
function template "void El::ApplyTopRight(El::Int={long long}, const El::Base<F> &, const F &, El::Matrix<F> &, F &, const El::Base<F> &, const F &)"
function template "void El::ApplyTopRight(El::Int={long long}, const El::Base<F> &, const El::Base<F> &, El::Matrix<F> &, F &, const El::Base<F> &, const El::Base<F> &)"
argument types are: (El::Int, const float, const float, El::Matrix<float>, float, const Real, const Real)
ApplyTopRight
^
detected during instantiation of "void El::ApplyGivensSequence(El::LeftOrRightNS::LeftOrRight, El::GivensSequenceType, El::ForwardOrBackwardNS::ForwardOrBackward, const El::Matrix<El::Base<F>> &, const El::Matrix<El::Base<F>> &, El::Matrix<F> &) [with F=float]" at line 96 of "/home/jrhammon/Work/Elemental/new/include/El/macros/Instantiate.h"
/home/jrhammon/Work/Elemental/new/src/blas_like/level2/ApplyGivensSequence.cpp(533): error: more than one instance of overloaded function "El::ApplyTopRight" matches the argument list:
function template "void El::ApplyTopRight(El::Int={long long}, const El::Base<F> &, const F &, El::Matrix<F> &, F &, const El::Base<F> &, const F &)"
function template "void El::ApplyTopRight(El::Int={long long}, const El::Base<F> &, const El::Base<F> &, El::Matrix<F> &, F &, const El::Base<F> &, const El::Base<F> &)"
argument types are: (El::Int, const float, const float, El::Matrix<float>, float, const Real, const Real)
ApplyTopRight
^
detected during instantiation of "void El::ApplyGivensSequence(El::LeftOrRightNS::LeftOrRight, El::GivensSequenceType, El::ForwardOrBackwardNS::ForwardOrBackward, const El::Matrix<El::Base<F>> &, const El::Matrix<El::Base<F>> &, El::Matrix<F> &) [with F=float]" at line 96 of "/home/jrhammon/Work/Elemental/new/include/El/macros/Instantiate.h"
/home/jrhammon/Work/Elemental/new/src/blas_like/level2/ApplyGivensSequence.cpp(544): error: more than one instance of overloaded function "El::ApplyBottomRight" matches the argument list:
function template "void El::ApplyBottomRight(El::Int={long long}, const El::Base<F> &, const F &, El::Matrix<F> &, F &, const El::Base<F> &, const F &)"
function template "void El::ApplyBottomRight(El::Int={long long}, const El::Base<F> &, const El::Base<F> &, El::Matrix<F> &, F &, const El::Base<F> &, const El::Base<F> &)"
argument types are: (El::Int, const float, const float, El::Matrix<float>, float, const Real, const Real)
ApplyBottomRight
^
detected during instantiation of "void El::ApplyGivensSequence(El::LeftOrRightNS::LeftOrRight, El::GivensSequenceType, El::ForwardOrBackwardNS::ForwardOrBackward, const El::Matrix<El::Base<F>> &, const El::Matrix<El::Base<F>> &, El::Matrix<F> &) [with F=float]" at line 96 of "/home/jrhammon/Work/Elemental/new/include/El/macros/Instantiate.h"
/home/jrhammon/Work/Elemental/new/src/blas_like/level2/ApplyGivensSequence.cpp(552): error: more than one instance of overloaded function "El::ApplyBottomRight" matches the argument list:
function template "void El::ApplyBottomRight(El::Int={long long}, const El::Base<F> &, const F &, El::Matrix<F> &, F &, const El::Base<F> &, const F &)"
function template "void El::ApplyBottomRight(El::Int={long long}, const El::Base<F> &, const El::Base<F> &, El::Matrix<F> &, F &, const El::Base<F> &, const El::Base<F> &)"
argument types are: (El::Int, const float, const float, El::Matrix<float>, float, const Real, const Real)
ApplyBottomRight
^
detected during instantiation of "void El::ApplyGivensSequence(El::LeftOrRightNS::LeftOrRight, El::GivensSequenceType, El::ForwardOrBackwardNS::ForwardOrBackward, const El::Matrix<El::Base<F>> &, const El::Matrix<El::Base<F>> &, El::Matrix<F> &) [with F=float]" at line 96 of "/home/jrhammon/Work/Elemental/new/include/El/macros/Instantiate.h"
/home/jrhammon/Work/Elemental/new/src/blas_like/level2/ApplyGivensSequence.cpp(446): error: more than one instance of overloaded function "El::ApplyVariableLeft" matches the argument list:
function template "void El::ApplyVariableLeft(El::Int={long long}, const El::Base<F> &, const F &, El::Matrix<F> &, F &, const El::Base<F> &, const F &)"
function template "void El::ApplyVariableLeft(El::Int={long long}, const El::Base<F> &, const El::Base<F> &, El::Matrix<F> &, F &, const El::Base<F> &, const El::Base<F> &)"
argument types are: (El::Int, const double, const double, El::Matrix<double>, double, const Real, const Real)
ApplyVariableLeft
^
detected during instantiation of "void El::ApplyGivensSequence(El::LeftOrRightNS::LeftOrRight, El::GivensSequenceType, El::ForwardOrBackwardNS::ForwardOrBackward, const El::Matrix<El::Base<F>> &, const El::Matrix<El::Base<F>> &, El::Matrix<F> &) [with F=double]" at line 99 of "/home/jrhammon/Work/Elemental/new/include/El/macros/Instantiate.h"
/home/jrhammon/Work/Elemental/new/src/blas_like/level2/ApplyGivensSequence.cpp(454): error: more than one instance of overloaded function "El::ApplyVariableLeft" matches the argument list:
function template "void El::ApplyVariableLeft(El::Int={long long}, const El::Base<F> &, const F &, El::Matrix<F> &, F &, const El::Base<F> &, const F &)"
function template "void El::ApplyVariableLeft(El::Int={long long}, const El::Base<F> &, const El::Base<F> &, El::Matrix<F> &, F &, const El::Base<F> &, const El::Base<F> &)"
argument types are: (El::Int, const double, const double, El::Matrix<double>, double, const Real, const Real)
ApplyVariableLeft
^
detected during instantiation of "void El::ApplyGivensSequence(El::LeftOrRightNS::LeftOrRight, El::GivensSequenceType, El::ForwardOrBackwardNS::ForwardOrBackward, const El::Matrix<El::Base<F>> &, const El::Matrix<El::Base<F>> &, El::Matrix<F> &) [with F=double]" at line 99 of "/home/jrhammon/Work/Elemental/new/include/El/macros/Instantiate.h"
/home/jrhammon/Work/Elemental/new/src/blas_like/level2/ApplyGivensSequence.cpp(465): error: more than one instance of overloaded function "El::ApplyTopLeft" matches the argument list:
function template "void El::ApplyTopLeft(El::Int={long long}, const El::Base<F> &, const F &, El::Matrix<F> &, F &, const El::Base<F> &, const F &)"
function template "void El::ApplyTopLeft(El::Int={long long}, const El::Base<F> &, const El::Base<F> &, El::Matrix<F> &, F &, const El::Base<F> &, const El::Base<F> &)"
argument types are: (El::Int, const double, const double, El::Matrix<double>, double, const Real, const Real)
ApplyTopLeft
^
detected during instantiation of "void El::ApplyGivensSequence(El::LeftOrRightNS::LeftOrRight, El::GivensSequenceType, El::ForwardOrBackwardNS::ForwardOrBackward, const El::Matrix<El::Base<F>> &, const El::Matrix<El::Base<F>> &, El::Matrix<F> &) [with F=double]" at line 99 of "/home/jrhammon/Work/Elemental/new/include/El/macros/Instantiate.h"
/home/jrhammon/Work/Elemental/new/src/blas_like/level2/ApplyGivensSequence.cpp(473): error: more than one instance of overloaded function "El::ApplyTopLeft" matches the argument list:
function template "void El::ApplyTopLeft(El::Int={long long}, const El::Base<F> &, const F &, El::Matrix<F> &, F &, const El::Base<F> &, const F &)"
function template "void El::ApplyTopLeft(El::Int={long long}, const El::Base<F> &, const El::Base<F> &, El::Matrix<F> &, F &, const El::Base<F> &, const El::Base<F> &)"
argument types are: (El::Int, const double, const double, El::Matrix<double>, double, const Real, const Real)
ApplyTopLeft
^
detected during instantiation of "void El::ApplyGivensSequence(El::LeftOrRightNS::LeftOrRight, El::GivensSequenceType, El::ForwardOrBackwardNS::ForwardOrBackward, const El::Matrix<El::Base<F>> &, const El::Matrix<El::Base<F>> &, El::Matrix<F> &) [with F=double]" at line 99 of "/home/jrhammon/Work/Elemental/new/include/El/macros/Instantiate.h"
/home/jrhammon/Work/Elemental/new/src/blas_like/level2/ApplyGivensSequence.cpp(484): error: more than one instance of overloaded function "El::ApplyBottomLeft" matches the argument list:
function template "void El::ApplyBottomLeft(El::Int={long long}, const El::Base<F> &, const F &, El::Matrix<F> &, F &, const El::Base<F> &, const F &)"
function template "void El::ApplyBottomLeft(El::Int={long long}, const El::Base<F> &, const El::Base<F> &, El::Matrix<F> &, F &, const El::Base<F> &, const El::Base<F> &)"
argument types are: (El::Int, const double, const double, El::Matrix<double>, double, const Real, const Real)
ApplyBottomLeft
^
detected during instantiation of "void El::ApplyGivensSequence(El::LeftOrRightNS::LeftOrRight, El::GivensSequenceType, El::ForwardOrBackwardNS::ForwardOrBackward, const El::Matrix<El::Base<F>> &, const El::Matrix<El::Base<F>> &, El::Matrix<F> &) [with F=double]" at line 99 of "/home/jrhammon/Work/Elemental/new/include/El/macros/Instantiate.h"
/home/jrhammon/Work/Elemental/new/src/blas_like/level2/ApplyGivensSequence.cpp(492): error: more than one instance of overloaded function "El::ApplyBottomLeft" matches the argument list:
function template "void El::ApplyBottomLeft(El::Int={long long}, const El::Base<F> &, const F &, El::Matrix<F> &, F &, const El::Base<F> &, const F &)"
function template "void El::ApplyBottomLeft(El::Int={long long}, const El::Base<F> &, const El::Base<F> &, El::Matrix<F> &, F &, const El::Base<F> &, const El::Base<F> &)"
argument types are: (El::Int, const double, const double, El::Matrix<double>, double, const Real, const Real)
ApplyBottomLeft
^
detected during instantiation of "void El::ApplyGivensSequence(El::LeftOrRightNS::LeftOrRight, El::GivensSequenceType, El::ForwardOrBackwardNS::ForwardOrBackward, const El::Matrix<El::Base<F>> &, const El::Matrix<El::Base<F>> &, El::Matrix<F> &) [with F=double]" at line 99 of "/home/jrhammon/Work/Elemental/new/include/El/macros/Instantiate.h"
/home/jrhammon/Work/Elemental/new/src/blas_like/level2/ApplyGivensSequence.cpp(506): error: more than one instance of overloaded function "El::ApplyVariableRight" matches the argument list:
function template "void El::ApplyVariableRight(El::Int={long long}, const El::Base<F> &, const F &, El::Matrix<F> &, F &, const El::Base<F> &, const F &)"
function template "void El::ApplyVariableRight(El::Int={long long}, const El::Base<F> &, const El::Base<F> &, El::Matrix<F> &, F &, const El::Base<F> &, const El::Base<F> &)"
argument types are: (El::Int, const double, const double, El::Matrix<double>, double, const Real, const Real)
ApplyVariableRight
^
detected during instantiation of "void El::ApplyGivensSequence(El::LeftOrRightNS::LeftOrRight, El::GivensSequenceType, El::ForwardOrBackwardNS::ForwardOrBackward, const El::Matrix<El::Base<F>> &, const El::Matrix<El::Base<F>> &, El::Matrix<F> &) [with F=double]" at line 99 of "/home/jrhammon/Work/Elemental/new/include/El/macros/Instantiate.h"
/home/jrhammon/Work/Elemental/new/src/blas_like/level2/ApplyGivensSequence.cpp(514): error: more than one instance of overloaded function "El::ApplyVariableRight" matches the argument list:
function template "void El::ApplyVariableRight(El::Int={long long}, const El::Base<F> &, const F &, El::Matrix<F> &, F &, const El::Base<F> &, const F &)"
function template "void El::ApplyVariableRight(El::Int={long long}, const El::Base<F> &, const El::Base<F> &, El::Matrix<F> &, F &, const El::Base<F> &, const El::Base<F> &)"
argument types are: (El::Int, const double, const double, El::Matrix<double>, double, const Real, const Real)
ApplyVariableRight
^
detected during instantiation of "void El::ApplyGivensSequence(El::LeftOrRightNS::LeftOrRight, El::GivensSequenceType, El::ForwardOrBackwardNS::ForwardOrBackward, const El::Matrix<El::Base<F>> &, const El::Matrix<El::Base<F>> &, El::Matrix<F> &) [with F=double]" at line 99 of "/home/jrhammon/Work/Elemental/new/include/El/macros/Instantiate.h"
/home/jrhammon/Work/Elemental/new/src/blas_like/level2/ApplyGivensSequence.cpp(525): error: more than one instance of overloaded function "El::ApplyTopRight" matches the argument list:
function template "void El::ApplyTopRight(El::Int={long long}, const El::Base<F> &, const F &, El::Matrix<F> &, F &, const El::Base<F> &, const F &)"
function template "void El::ApplyTopRight(El::Int={long long}, const El::Base<F> &, const El::Base<F> &, El::Matrix<F> &, F &, const El::Base<F> &, const El::Base<F> &)"
argument types are: (El::Int, const double, const double, El::Matrix<double>, double, const Real, const Real)
ApplyTopRight
^
detected during instantiation of "void El::ApplyGivensSequence(El::LeftOrRightNS::LeftOrRight, El::GivensSequenceType, El::ForwardOrBackwardNS::ForwardOrBackward, const El::Matrix<El::Base<F>> &, const El::Matrix<El::Base<F>> &, El::Matrix<F> &) [with F=double]" at line 99 of "/home/jrhammon/Work/Elemental/new/include/El/macros/Instantiate.h"
/home/jrhammon/Work/Elemental/new/src/blas_like/level2/ApplyGivensSequence.cpp(533): error: more than one instance of overloaded function "El::ApplyTopRight" matches the argument list:
function template "void El::ApplyTopRight(El::Int={long long}, const El::Base<F> &, const F &, El::Matrix<F> &, F &, const El::Base<F> &, const F &)"
function template "void El::ApplyTopRight(El::Int={long long}, const El::Base<F> &, const El::Base<F> &, El::Matrix<F> &, F &, const El::Base<F> &, const El::Base<F> &)"
argument types are: (El::Int, const double, const double, El::Matrix<double>, double, const Real, const Real)
ApplyTopRight
^
detected during instantiation of "void El::ApplyGivensSequence(El::LeftOrRightNS::LeftOrRight, El::GivensSequenceType, El::ForwardOrBackwardNS::ForwardOrBackward, const El::Matrix<El::Base<F>> &, const El::Matrix<El::Base<F>> &, El::Matrix<F> &) [with F=double]" at line 99 of "/home/jrhammon/Work/Elemental/new/include/El/macros/Instantiate.h"
/home/jrhammon/Work/Elemental/new/src/blas_like/level2/ApplyGivensSequence.cpp(544): error: more than one instance of overloaded function "El::ApplyBottomRight" matches the argument list:
function template "void El::ApplyBottomRight(El::Int={long long}, const El::Base<F> &, const F &, El::Matrix<F> &, F &, const El::Base<F> &, const F &)"
function template "void El::ApplyBottomRight(El::Int={long long}, const El::Base<F> &, const El::Base<F> &, El::Matrix<F> &, F &, const El::Base<F> &, const El::Base<F> &)"
argument types are: (El::Int, const double, const double, El::Matrix<double>, double, const Real, const Real)
ApplyBottomRight
^
detected during instantiation of "void El::ApplyGivensSequence(El::LeftOrRightNS::LeftOrRight, El::GivensSequenceType, El::ForwardOrBackwardNS::ForwardOrBackward, const El::Matrix<El::Base<F>> &, const El::Matrix<El::Base<F>> &, El::Matrix<F> &) [with F=double]" at line 99 of "/home/jrhammon/Work/Elemental/new/include/El/macros/Instantiate.h"
/home/jrhammon/Work/Elemental/new/src/blas_like/level2/ApplyGivensSequence.cpp(552): error: more than one instance of overloaded function "El::ApplyBottomRight" matches the argument list:
function template "void El::ApplyBottomRight(El::Int={long long}, const El::Base<F> &, const F &, El::Matrix<F> &, F &, const El::Base<F> &, const F &)"
function template "void El::ApplyBottomRight(El::Int={long long}, const El::Base<F> &, const El::Base<F> &, El::Matrix<F> &, F &, const El::Base<F> &, const El::Base<F> &)"
argument types are: (El::Int, const double, const double, El::Matrix<double>, double, const Real, const Real)
ApplyBottomRight
^
detected during instantiation of "void El::ApplyGivensSequence(El::LeftOrRightNS::LeftOrRight, El::GivensSequenceType, El::ForwardOrBackwardNS::ForwardOrBackward, const El::Matrix<El::Base<F>> &, const El::Matrix<El::Base<F>> &, El::Matrix<F> &) [with F=double]" at line 99 of "/home/jrhammon/Work/Elemental/new/include/El/macros/Instantiate.h"
compilation aborted for /home/jrhammon/Work/Elemental/new/src/blas_like/level2/ApplyGivensSequence.cpp (code 2)
make[2]: *** [CMakeFiles/El.dir/src/blas_like/level2/ApplyGivensSequence.cpp.o] Error 2
make[1]: *** [CMakeFiles/El.dir/all] Error 2
make: *** [all] Error 2 |
@mukunthh All I know is |
@jeffhammond There is no As for |
…ssenbergSchurCtrl; fixing a mistake in the previous, overzealous commit to fix an Intel compilation issue reported in Issue #177
@jeffhammond The last two commits should work around that compilation issue. I am not enough of a language lawyer to know if the previous code was ISO C++ compliant, but it was an easy fix to add a constraint on the template types to avoid any ambiguity. |
@poulson I think the PMRRR issues were the result of a rather old git directory. A clean checkout resolved them ( Thanks for resolving the template ambiguity. I don't know enough C++ to know what is right and not, and I am reluctant to file bugs without developer attestation of correctness (even thought this is unreliable) in hopes of not reducing my standing with the Intel compiler team. |
Unfortunately, there is a new template issue 😭 $ make
[ 9%] Built target pmrrr
[ 11%] Built target ElSuiteSparse
[ 11%] Built target El_config
[ 12%] Building CXX object CMakeFiles/El.dir/src/blas_like/level1/Instantiate.cpp.o
[ 12%] Building CXX object CMakeFiles/El.dir/src/core/FlamePart/Merge.cpp.o
[ 12%] Building CXX object CMakeFiles/El.dir/src/core/DistMatrix/Block/MR_STAR.cpp.o
[ 12%] Building CXX object CMakeFiles/El.dir/src/core/DistMatrix/Block/STAR_VR.cpp.o
[ 12%] Building CXX object CMakeFiles/El.dir/src/core/DistMatrix/Block/MC_MR.cpp.o
[ 13%] Building CXX object CMakeFiles/El.dir/src/core/DistMatrix/Block/MR_MC.cpp.o
[ 13%] Building CXX object CMakeFiles/El.dir/src/core/DistMatrix/Block/STAR_VC.cpp.o
[ 13%] Building CXX object CMakeFiles/El.dir/src/core/DistMatrix/Block.cpp.o
[ 13%] Building CXX object CMakeFiles/El.dir/src/core/DistMatrix/Element.cpp.o
[ 13%] Building CXX object CMakeFiles/El.dir/src/core/Instantiate.cpp.o
[ 14%] Building CXX object CMakeFiles/El.dir/src/core/imports/blas.cpp.o
In file included from /home/jrhammon/Work/Elemental/new/src/core/imports/blas.cpp(29):
/home/jrhammon/Work/Elemental/new/src/core/imports/./blas/Syr.hpp(90): error: no instance of overloaded function "El::blas::Her" matches the specified type
template void Her
^
In file included from /home/jrhammon/Work/Elemental/new/src/core/imports/blas.cpp(37):
/home/jrhammon/Work/Elemental/new/src/core/imports/./blas/Syrk.hpp(166): error: no instance of overloaded function "El::blas::Herk" matches the specified type
template void Herk
^
In file included from /home/jrhammon/Work/Elemental/new/src/core/imports/blas.cpp(38):
/home/jrhammon/Work/Elemental/new/src/core/imports/./blas/Syr2k.hpp(202): error: no instance of overloaded function "El::blas::Her2k" matches the specified type
template void Her2k
^
compilation aborted for /home/jrhammon/Work/Elemental/new/src/core/imports/blas.cpp (code 2)
make[2]: *** [CMakeFiles/El.dir/src/core/imports/blas.cpp.o] Error 2
make[1]: *** [CMakeFiles/El.dir/all] Error 2
make: *** [all] Error 2 |
The first issue seems to be caused by the following code segment starting at line 49 of
It would appear that the compiler is not recognizing that
So I am going to assume that this is related to the already-reported issue that the Intel compiler has issues with resolving template aliases in arguments to template functions. |
I created IPS6000162739 for this issue. I will post an update when I hear back from the compiler support people. |
@jeffhammond @poulson I have the Intel compilers working for Elemental, a compromised solution by removing the support for hermitian matrices. |
@mukunthh I see multiple template errors when compiling Intel support is working on these. I do not have an ETA yet. |
@jeffhammond |
This bug has been fixed in the upcoming Intel 17.0 update 1 compiler. I have verified with the engineering build. I do not have an estimate for when it will be released. |
@jeffhammond |
All 141 tests are passing with Intel 17.0.1. I am going to close this ticket now. If we discover that the Intel 17 update 1 release does not compile Elemental, we can reopen the ticket. |
@mukunthh Intel 17 update 1 is now available: https://software.intel.com/en-us/articles/intel-parallel-studio-xe-release-notes. Please try it with Elemental and let me know if you have any issues. |
@jeffhammond - Great news, thank you for the timely update. Update - Compiled it flawlessly. Special thanks, great working with you..! @jeffhammond |
I still have problems with the intel compiler, now not in the core routines butIn file included from /homea/software/mathprod/JURECA/Elemental/Elemental-0.87.7/src/optimization/prox/SVT.cpp(100): In file included from /homea/software/mathprod/JURECA/Elemental/Elemental-0.87.7/src/optimization/prox/SVT.cpp(100): In file included from /homea/software/mathprod/JURECA/Elemental/Elemental-0.87.7/src/optimization/prox/SVT.cpp(100): In file included from /homea/software/mathprod/JURECA/Elemental/Elemental-0.87.7/src/optimization/prox/SVT.cpp(100): |
I don't know what SVT is but can you live without it? I will reproduce and report as soon as possible but it might be a while. |
SVT is Singular Value soft-Thresholding and is the soft-thresholding function applied to each singular value (which results from minimizing the nuclear norm plus a Frobenius norm penalty centered about the input matrix). Think of it as a "soft" alternative to projecting onto the highest modes. But my assumption is that Inge is not making use of this routine. |
I'm going to close this in favor of #215, which focuses on more recent compilers. For posterity, #215 (comment) notes that Elemental 0.87.7 compiles with Intel 18 beta. That is the newest working pairing of Elemental and Intel compiler versions. |
Greetings,
Intel 2015 compilers with GNU headers (4.4.6) as well as GNU (4.9.1) headers produced different compilation errors during Elemental build.
However, the below compilation error is with latest Intel 2016 (precisely 2016.2.181 with GNU headers 5.3.0).
It is greatly appreciated for your time in bringing a fix towards this. Let me know if you need more information about the build environments.
Thank you.
@jeffhammond @poulson
The text was updated successfully, but these errors were encountered: