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

Closed
mukunthh opened this Issue Aug 29, 2016 · 30 comments

Comments

Projects
None yet
4 participants
@mukunthh

mukunthh commented Aug 29, 2016

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).

[ 13%] /home/mselvam/tools/cmake/cmake-3.0.2/bin/cmake:Building CXX object CMakeFiles/El.dir/src/blas_like/blocksizes.cpp.o
In file included from /home/mselvam/Elemental/include/El/core.hpp(259),
from /home/mselvam/Elemental/include/El-lite.hpp(13),
from /home/mselvam/Elemental/src/blas_like/blocksizes.cpp(9):
/home/mselvam/Elemental/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/mselvam/Elemental/include/El/core.hpp(259),
from /home/mselvam/Elemental/include/El-lite.hpp(13),
from /home/mselvam/Elemental/src/blas_like/blocksizes.cpp(9):
/home/mselvam/Elemental/include/El/core/random/decl.hpp(92): error: no instance of overloaded function "El::SampleNormal" mat
ches the specified type
Complex SampleNormal( const Complex& mean, const Quad& stddev );
^

compilation aborted for /home/mselvam/Elemental/src/blas_like/blocksizes.cpp (code 2)
make[2]: *** [CMakeFiles/El.dir/src/blas_like/blocksizes.cpp.o] Error 2
make[1]: *** [CMakeFiles/El.dir/all] Error 2
make: *** [all] Error 2

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

@jeffhammond jeffhammond self-assigned this Aug 29, 2016

@poulson

This comment has been minimized.

Show comment
Hide comment
@poulson

poulson Aug 31, 2016

Member

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).

Member

poulson commented Aug 31, 2016

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).

@jeffhammond

This comment has been minimized.

Show comment
Hide comment
@jeffhammond

jeffhammond Aug 31, 2016

Member

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 src/blas_like/level1-C.cpp.

Note that the error I reported appears to be different from yours, although they may have the same root cause.

level1-C.cpp.i.txt
level1-C.cpp.log.txt

Member

jeffhammond commented Aug 31, 2016

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 src/blas_like/level1-C.cpp.

Note that the error I reported appears to be different from yours, although they may have the same root cause.

level1-C.cpp.i.txt
level1-C.cpp.log.txt

@jeffhammond

This comment has been minimized.

Show comment
Hide comment
@jeffhammond

jeffhammond Aug 31, 2016

Member

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
Member

jeffhammond commented Aug 31, 2016

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
@jeffhammond

This comment has been minimized.

Show comment
Hide comment
@jeffhammond

jeffhammond Aug 31, 2016

Member

Also, I configured as follows:

cd build-intel16 && rm -rf * ; cmake .. \
-DCMAKE_C_COMPILER=/opt/mpich/dev/intel/default/bin/mpicc \
-DCMAKE_CXX_COMPILER=/opt/mpich/dev/intel/default/bin/mpicxx \
-DCMAKE_Fortran_COMPILER=/opt/mpich/dev/intel/default/bin/mpif90 \
-DMPI_C_COMPILER=/opt/mpich/dev/intel/default/bin/mpicc \
-DMPI_CXX_COMPILER=/opt/mpich/dev/intel/default/bin/mpicxx \
-DMPI_Fortran_COMPILER=/opt/mpich/dev/intel/default/bin/mpif90 \
-DMATH_LIBS="-mkl" -DCMAKE_BUILD_TYPE=HybridRelease \
-DCXX_FLAGS="-O3 -qopenmp -xHOST" \
-DCMAKE_INSTALL_PREFIX=$HOME/Work/Elemental/install-intel16
Member

jeffhammond commented Aug 31, 2016

Also, I configured as follows:

cd build-intel16 && rm -rf * ; cmake .. \
-DCMAKE_C_COMPILER=/opt/mpich/dev/intel/default/bin/mpicc \
-DCMAKE_CXX_COMPILER=/opt/mpich/dev/intel/default/bin/mpicxx \
-DCMAKE_Fortran_COMPILER=/opt/mpich/dev/intel/default/bin/mpif90 \
-DMPI_C_COMPILER=/opt/mpich/dev/intel/default/bin/mpicc \
-DMPI_CXX_COMPILER=/opt/mpich/dev/intel/default/bin/mpicxx \
-DMPI_Fortran_COMPILER=/opt/mpich/dev/intel/default/bin/mpif90 \
-DMATH_LIBS="-mkl" -DCMAKE_BUILD_TYPE=HybridRelease \
-DCXX_FLAGS="-O3 -qopenmp -xHOST" \
-DCMAKE_INSTALL_PREFIX=$HOME/Work/Elemental/install-intel16
@poulson

This comment has been minimized.

Show comment
Hide comment
@poulson

poulson Aug 31, 2016

Member

@jeffhammond The log file you posted seems to be a separate compilation issue related to std::function. This also looks to be an icpc issue, but I haven't had a chance to investigate it closely yet.

Member

poulson commented Aug 31, 2016

@jeffhammond The log file you posted seems to be a separate compilation issue related to std::function. This also looks to be an icpc issue, but I haven't had a chance to investigate it closely yet.

@mukunthh

This comment has been minimized.

Show comment
Hide comment
@mukunthh

mukunthh Aug 31, 2016

@poulson
Thank you, I wanted to address those issues to you so that we could put a ticket to Intel once you reproduce it on your end.

@jeffhammond
Thank you for reporting it under Intel 16.0.2. We strongly hope that these patches are applied in the future updates/releases as well. As i mentioned earlier, each Intel compiler version (15,16) combined with different GNU headers (4.7.3, 4.9.1, 5.3.0) produced different errors. However, it is much greatly appreciated if Intel 16.0.2 can make it work flawless.

For the record, here is my cmake build command.
cmake .. -G"Unix Makefiles" -DCMAKE_INSTALL_PREFIX=/home/mselvam/Elemental/intel_debug -DCMAKE_CXX_COMPILER=/opt/intel/compilers_and_libraries_2016.2.181/linux/bin/intel64/icpc -DCMAKE_C_COMPILER=/opt/intel/compilers_and_libraries_2016.2.181/linux/bin/intel64/icc -DCMAKE_Fortran_COMPILER=/opt/intel/compilers_and_libraries_2016.2.181/linux/bin/intel64/ifort -DCMAKE_CXX_FLAGS="-DMKL_ILP64 -qopenmp -mkl=parallel " -DCMAKE_C_FLAGS="-DMKL_ILP64 -qopenmp -mkl=parallel " -DMPI_CXX_COMPILER=/opt/intel/compilers_and_libraries_2016.1.150/linux/mpi/intel64/bin/mpiicpc -DMPI_C_COMPILER=/opt/intel/compilers_and_libraries_2016.1.150/linux/mpi/intel64/bin/mpiicc -DMPI_Fortran_COMPILER=/opt/intel/compilers_and_libraries_2016.1.150/linux/mpi/intel64/bin/mpiifort -DEL_HYBRID=TRUE -DEL_DISABLE_PARMETIS=TRUE -DCMAKE_BUILD_TYPE=Debug -DEL_USE_64BIT_INTS=ON -DEL_USE_64BIT_BLAS_INTS=ON -DINSTALL_PYTHON_PACKAGE=OFF -DMATH_LIBS="-lmkl_scalapack_ilp64 -lmkl_blacs_intelmpi_ilp64 -lpthread -lm -ldl"

mukunthh commented Aug 31, 2016

@poulson
Thank you, I wanted to address those issues to you so that we could put a ticket to Intel once you reproduce it on your end.

@jeffhammond
Thank you for reporting it under Intel 16.0.2. We strongly hope that these patches are applied in the future updates/releases as well. As i mentioned earlier, each Intel compiler version (15,16) combined with different GNU headers (4.7.3, 4.9.1, 5.3.0) produced different errors. However, it is much greatly appreciated if Intel 16.0.2 can make it work flawless.

For the record, here is my cmake build command.
cmake .. -G"Unix Makefiles" -DCMAKE_INSTALL_PREFIX=/home/mselvam/Elemental/intel_debug -DCMAKE_CXX_COMPILER=/opt/intel/compilers_and_libraries_2016.2.181/linux/bin/intel64/icpc -DCMAKE_C_COMPILER=/opt/intel/compilers_and_libraries_2016.2.181/linux/bin/intel64/icc -DCMAKE_Fortran_COMPILER=/opt/intel/compilers_and_libraries_2016.2.181/linux/bin/intel64/ifort -DCMAKE_CXX_FLAGS="-DMKL_ILP64 -qopenmp -mkl=parallel " -DCMAKE_C_FLAGS="-DMKL_ILP64 -qopenmp -mkl=parallel " -DMPI_CXX_COMPILER=/opt/intel/compilers_and_libraries_2016.1.150/linux/mpi/intel64/bin/mpiicpc -DMPI_C_COMPILER=/opt/intel/compilers_and_libraries_2016.1.150/linux/mpi/intel64/bin/mpiicc -DMPI_Fortran_COMPILER=/opt/intel/compilers_and_libraries_2016.1.150/linux/mpi/intel64/bin/mpiifort -DEL_HYBRID=TRUE -DEL_DISABLE_PARMETIS=TRUE -DCMAKE_BUILD_TYPE=Debug -DEL_USE_64BIT_INTS=ON -DEL_USE_64BIT_BLAS_INTS=ON -DINSTALL_PYTHON_PACKAGE=OFF -DMATH_LIBS="-lmkl_scalapack_ilp64 -lmkl_blacs_intelmpi_ilp64 -lpthread -lm -ldl"

@jeffhammond

This comment has been minimized.

Show comment
Hide comment
@jeffhammond

jeffhammond Aug 31, 2016

Member

@poulson https://github.com/poulson Yeah I know it's not the same bug but
I reported the first bug I saw using my laptop. I have to switch machines
to reproduce Linux issues. Sorry. I was hoping I could reproduce without
ssh but it seems not.

Member

jeffhammond commented Aug 31, 2016

@poulson https://github.com/poulson Yeah I know it's not the same bug but
I reported the first bug I saw using my laptop. I have to switch machines
to reproduce Linux issues. Sorry. I was hoping I could reproduce without
ssh but it seems not.

@jeffhammond

This comment has been minimized.

Show comment
Hide comment
@jeffhammond

jeffhammond Sep 6, 2016

Member

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
Member

jeffhammond commented Sep 6, 2016

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
@jeffhammond

This comment has been minimized.

Show comment
Hide comment
@jeffhammond

jeffhammond Sep 6, 2016

Member

I did a clean checkout and can reproduce the error.

@mukunthh Do you actually need Quad support?

@poulson What is the CMake option to disable EL_HAVE_QUAD?
(I found -DEL_DISABLE_QUAD=TRUE on http://libelemental.org/documentation/dev/build.html#id6)

$ 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
Member

jeffhammond commented Sep 6, 2016

I did a clean checkout and can reproduce the error.

@mukunthh Do you actually need Quad support?

@poulson What is the CMake option to disable EL_HAVE_QUAD?
(I found -DEL_DISABLE_QUAD=TRUE on http://libelemental.org/documentation/dev/build.html#id6)

$ 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
@mukunthh

This comment has been minimized.

Show comment
Hide comment
@mukunthh

mukunthh Sep 6, 2016

@jeffhammond
Thank you, we don't need QUAD support now. However, I am unable to find the EL_DISABLE_QUAD in the latest cmakelists.txt

mukunthh commented Sep 6, 2016

@jeffhammond
Thank you, we don't need QUAD support now. However, I am unable to find the EL_DISABLE_QUAD in the latest cmakelists.txt

@jeffhammond

This comment has been minimized.

Show comment
Hide comment
@jeffhammond

jeffhammond Sep 6, 2016

Member

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
Member

jeffhammond commented Sep 6, 2016

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
@jeffhammond

This comment has been minimized.

Show comment
Hide comment
@jeffhammond

jeffhammond Sep 6, 2016

Member

@mukunthh All I know is -DEL_DISABLE_QUAD=TRUE is documented and has an effect on the latest version, which I cloned from scratch less than an hour ago.

Member

jeffhammond commented Sep 6, 2016

@mukunthh All I know is -DEL_DISABLE_QUAD=TRUE is documented and has an effect on the latest version, which I cloned from scratch less than an hour ago.

@poulson

This comment has been minimized.

Show comment
Hide comment
@poulson

poulson Sep 7, 2016

Member

@jeffhammond There is no src/queue.c in external/pmrrr (see https://github.com/elemental/Elemental/tree/master/external/pmrrr/src), so I'm a bit confused by the build error you were seeing with PMRRR.

As for QUAD: yes, EL_DISABLE_QUADMATH is the right solution and should be documented but isn't.

Member

poulson commented Sep 7, 2016

@jeffhammond There is no src/queue.c in external/pmrrr (see https://github.com/elemental/Elemental/tree/master/external/pmrrr/src), so I'm a bit confused by the build error you were seeing with PMRRR.

As for QUAD: yes, EL_DISABLE_QUADMATH is the right solution and should be documented but isn't.

poulson added a commit that referenced this issue Sep 7, 2016

Adding multi-bulge Hessenberg QR iteration; uniting HessQRCtrl and He…
…ssenbergSchurCtrl; fixing a mistake in the previous, overzealous commit to fix an Intel compilation issue reported in Issue #177
@poulson

This comment has been minimized.

Show comment
Hide comment
@poulson

poulson Sep 7, 2016

Member

@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.

Member

poulson commented Sep 7, 2016

@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.

@jeffhammond

This comment has been minimized.

Show comment
Hide comment
@jeffhammond

jeffhammond Sep 7, 2016

Member

@poulson I think the PMRRR issues were the result of a rather old git directory. A clean checkout resolved them (git clean -dfx did not fix it).

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.

Member

jeffhammond commented Sep 7, 2016

@poulson I think the PMRRR issues were the result of a rather old git directory. A clean checkout resolved them (git clean -dfx did not fix it).

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.

@jeffhammond

This comment has been minimized.

Show comment
Hide comment
@jeffhammond

jeffhammond Sep 7, 2016

Member

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
Member

jeffhammond commented Sep 7, 2016

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
@poulson

This comment has been minimized.

Show comment
Hide comment
@poulson

poulson Sep 7, 2016

Member

The first issue seems to be caused by the following code segment starting at line 49 of src/core/imports/blas/Syr.hpp:

template<typename T>
void Her
( char uplo, BlasInt m,
  const Base<T>& alpha,
  const T* x, BlasInt incx,
        T* A, BlasInt ALDim )
{
    // NOTE: Temporaries are avoided since constructing a BigInt/BigFloat
    //       involves a memory allocation
    T gamma, delta;
    if( std::toupper(uplo) == 'L' )
    {
        for( BlasInt j=0; j<m; ++j )
        {
            Conj( x[j*incx], gamma );
            gamma *= alpha;
            for( BlasInt i=j; i<m; ++i )
            {
                // A[i+j*ALDim] += alpha*x[i*incx]*Conj(x[j*incx]);
                delta = x[i*incx];
                delta *= gamma;
                A[i+j*ALDim] += delta;
            }
        }
    }
    else
    {
        for( BlasInt j=0; j<m; ++j )
        {
            Conj( x[j*incx], gamma );
            gamma *= alpha;
            for( BlasInt i=0; i<=j; ++i )
            {
                // A[i+j*ALDim] += alpha*x[i*incx]*Conj(x[j*incx]);
                delta = x[i*incx];
                delta *= gamma;
                A[i+j*ALDim] += delta;
            }
        }
    }
}
template void Her
( char uplo, BlasInt m,
  const Int& alpha,
  const Int* x, BlasInt incx,
        Int* A, BlasInt ALDim );

It would appear that the compiler is not recognizing that El::Base<El::Int> is equal to El::Int. But, as can be seen from the following segment, which starts at line 591 of include/El/core/Elemental/Complex/decl.hpp, Base<Int> is most certainly a typedef to Int:

// Returning the underlying, or "base", real field
// -----------------------------------------------
// Note: The following is for internal usage only; please use Base
template<typename Real> struct BaseHelper                { typedef Real type; };
template<typename Real> struct BaseHelper<Complex<Real>> { typedef Real type; };

template<typename F> using Base = typename BaseHelper<F>::type;

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.

Member

poulson commented Sep 7, 2016

The first issue seems to be caused by the following code segment starting at line 49 of src/core/imports/blas/Syr.hpp:

template<typename T>
void Her
( char uplo, BlasInt m,
  const Base<T>& alpha,
  const T* x, BlasInt incx,
        T* A, BlasInt ALDim )
{
    // NOTE: Temporaries are avoided since constructing a BigInt/BigFloat
    //       involves a memory allocation
    T gamma, delta;
    if( std::toupper(uplo) == 'L' )
    {
        for( BlasInt j=0; j<m; ++j )
        {
            Conj( x[j*incx], gamma );
            gamma *= alpha;
            for( BlasInt i=j; i<m; ++i )
            {
                // A[i+j*ALDim] += alpha*x[i*incx]*Conj(x[j*incx]);
                delta = x[i*incx];
                delta *= gamma;
                A[i+j*ALDim] += delta;
            }
        }
    }
    else
    {
        for( BlasInt j=0; j<m; ++j )
        {
            Conj( x[j*incx], gamma );
            gamma *= alpha;
            for( BlasInt i=0; i<=j; ++i )
            {
                // A[i+j*ALDim] += alpha*x[i*incx]*Conj(x[j*incx]);
                delta = x[i*incx];
                delta *= gamma;
                A[i+j*ALDim] += delta;
            }
        }
    }
}
template void Her
( char uplo, BlasInt m,
  const Int& alpha,
  const Int* x, BlasInt incx,
        Int* A, BlasInt ALDim );

It would appear that the compiler is not recognizing that El::Base<El::Int> is equal to El::Int. But, as can be seen from the following segment, which starts at line 591 of include/El/core/Elemental/Complex/decl.hpp, Base<Int> is most certainly a typedef to Int:

// Returning the underlying, or "base", real field
// -----------------------------------------------
// Note: The following is for internal usage only; please use Base
template<typename Real> struct BaseHelper                { typedef Real type; };
template<typename Real> struct BaseHelper<Complex<Real>> { typedef Real type; };

template<typename F> using Base = typename BaseHelper<F>::type;

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.

@jeffhammond

This comment has been minimized.

Show comment
Hide comment
@jeffhammond

jeffhammond Sep 7, 2016

Member

I created IPS6000162739 for this issue. I will post an update when I hear back from the compiler support people.

Member

jeffhammond commented Sep 7, 2016

I created IPS6000162739 for this issue. I will post an update when I hear back from the compiler support people.

@mukunthh

This comment has been minimized.

Show comment
Hide comment
@mukunthh

mukunthh Sep 8, 2016

@jeffhammond @poulson
Thank you for your time.!
I created another ticket #6000162697 as i have been stuck in a compilation error in "her" rather than "syr". Despite that, I have the "syr" functions successfully compiled.

I have the Intel compilers working for Elemental, a compromised solution by removing the support for hermitian matrices.

mukunthh commented Sep 8, 2016

@jeffhammond @poulson
Thank you for your time.!
I created another ticket #6000162697 as i have been stuck in a compilation error in "her" rather than "syr". Despite that, I have the "syr" functions successfully compiled.

I have the Intel compilers working for Elemental, a compromised solution by removing the support for hermitian matrices.

@jeffhammond

This comment has been minimized.

Show comment
Hide comment
@jeffhammond

jeffhammond Sep 8, 2016

Member

@mukunthh I see multiple template errors when compiling blas.cpp with Intel 17. Rot fails on Mac and Syr and others fail on both Mac and Linux.

Intel support is working on these. I do not have an ETA yet.

Member

jeffhammond commented Sep 8, 2016

@mukunthh I see multiple template errors when compiling blas.cpp with Intel 17. Rot fails on Mac and Syr and others fail on both Mac and Linux.

Intel support is working on these. I do not have an ETA yet.

@mukunthh

This comment has been minimized.

Show comment
Hide comment
@mukunthh

mukunthh Sep 8, 2016

@jeffhammond
Unfortunate to hear that, but thanks for reporting it.!

mukunthh commented Sep 8, 2016

@jeffhammond
Unfortunate to hear that, but thanks for reporting it.!

@jeffhammond

This comment has been minimized.

Show comment
Hide comment
@jeffhammond

jeffhammond Sep 23, 2016

Member

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.

Member

jeffhammond commented Sep 23, 2016

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.

@mukunthh

This comment has been minimized.

Show comment
Hide comment
@mukunthh

mukunthh commented Sep 23, 2016

@jeffhammond
Thank you much!

@jeffhammond

This comment has been minimized.

Show comment
Hide comment
@jeffhammond

jeffhammond Oct 8, 2016

Member

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.

Member

jeffhammond commented Oct 8, 2016

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.

@jeffhammond jeffhammond closed this Oct 8, 2016

@jeffhammond

This comment has been minimized.

Show comment
Hide comment
@jeffhammond

jeffhammond Nov 3, 2016

Member

@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.

Member

jeffhammond commented Nov 3, 2016

@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.

@mukunthh

This comment has been minimized.

Show comment
Hide comment
@mukunthh

mukunthh Nov 3, 2016

@jeffhammond - Great news, thank you for the timely update.

Update - Compiled it flawlessly. Special thanks, great working with you..! @jeffhammond

mukunthh commented Nov 3, 2016

@jeffhammond - Great news, thank you for the timely update.

Update - Compiled it flawlessly. Special thanks, great working with you..! @jeffhammond

@ingutheil

This comment has been minimized.

Show comment
Hide comment
@ingutheil

ingutheil Mar 9, 2017

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):
/homea/software/mathprod/JURECA/Elemental/Elemental-0.87.7/include/El/macros/Instantiate.h(96): error: no instance of overloaded function "El::svt::Cross" matches the specified type
PROTO_FLOAT
^

In file included from /homea/software/mathprod/JURECA/Elemental/Elemental-0.87.7/src/optimization/prox/SVT.cpp(100):
/homea/software/mathprod/JURECA/Elemental/Elemental-0.87.7/include/El/macros/Instantiate.h(99): error: no instance of overloaded function "El::svt::Cross" matches the specified type
PROTO_DOUBLE
^

In file included from /homea/software/mathprod/JURECA/Elemental/Elemental-0.87.7/src/optimization/prox/SVT.cpp(100):
/homea/software/mathprod/JURECA/Elemental/Elemental-0.87.7/include/El/macros/Instantiate.h(117): error: no instance of overloaded function "El::svt::Cross" matches the specified type
PROTO_COMPLEX_FLOAT
^

In file included from /homea/software/mathprod/JURECA/Elemental/Elemental-0.87.7/src/optimization/prox/SVT.cpp(100):
/homea/software/mathprod/JURECA/Elemental/Elemental-0.87.7/include/El/macros/Instantiate.h(120): error: no instance of overloaded function "El::svt::Cross" matches the specified type
PROTO_COMPLEX_DOUBLE
^
I use Intel/2017.1.132 on our JURECA cluster at JSC.
log_install_icc_2017a_2.gz
JURECA_install_icc_2017a.sh.gz
Jureca_2017a.cmake.gz

ingutheil commented Mar 9, 2017

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):
/homea/software/mathprod/JURECA/Elemental/Elemental-0.87.7/include/El/macros/Instantiate.h(96): error: no instance of overloaded function "El::svt::Cross" matches the specified type
PROTO_FLOAT
^

In file included from /homea/software/mathprod/JURECA/Elemental/Elemental-0.87.7/src/optimization/prox/SVT.cpp(100):
/homea/software/mathprod/JURECA/Elemental/Elemental-0.87.7/include/El/macros/Instantiate.h(99): error: no instance of overloaded function "El::svt::Cross" matches the specified type
PROTO_DOUBLE
^

In file included from /homea/software/mathprod/JURECA/Elemental/Elemental-0.87.7/src/optimization/prox/SVT.cpp(100):
/homea/software/mathprod/JURECA/Elemental/Elemental-0.87.7/include/El/macros/Instantiate.h(117): error: no instance of overloaded function "El::svt::Cross" matches the specified type
PROTO_COMPLEX_FLOAT
^

In file included from /homea/software/mathprod/JURECA/Elemental/Elemental-0.87.7/src/optimization/prox/SVT.cpp(100):
/homea/software/mathprod/JURECA/Elemental/Elemental-0.87.7/include/El/macros/Instantiate.h(120): error: no instance of overloaded function "El::svt::Cross" matches the specified type
PROTO_COMPLEX_DOUBLE
^
I use Intel/2017.1.132 on our JURECA cluster at JSC.
log_install_icc_2017a_2.gz
JURECA_install_icc_2017a.sh.gz
Jureca_2017a.cmake.gz

@jeffhammond

This comment has been minimized.

Show comment
Hide comment
@jeffhammond

jeffhammond Mar 10, 2017

Member

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.

Member

jeffhammond commented Mar 10, 2017

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.

@jeffhammond jeffhammond reopened this Mar 10, 2017

@poulson

This comment has been minimized.

Show comment
Hide comment
@poulson

poulson Mar 10, 2017

Member

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.

Member

poulson commented Mar 10, 2017

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.

@jeffhammond

This comment has been minimized.

Show comment
Hide comment
@jeffhammond

jeffhammond Aug 10, 2017

Member

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.

Member

jeffhammond commented Aug 10, 2017

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment