Blaze SIMD Types tests cannot compile when BLAZE_USE_VECTORIZATION is 0

Issue #434 new
Branimir Kovacevic created an issue

While testing the v3.8 both with different backends on Ubuntu (5.4.0-120-generic #136~18.04.1-Ubuntu SMP Fri Jun 10 18:00:44 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux), tried to disable BLAZE_USE_VECTORIZATION and to build the tests, but failed, as it can be seen below in the traces.

Steps to reproduce:

git clone https://bitbucket.org/blaze-lib/blaze.git
cd blaze/
git checkout v3.8
# for next gedit's see changes in 001-disable-vectorization.patch
gedit blazetest/Configfile
gedit blaze/config/Vectorization.h
cd blazetest/
./configure
make

The output:

test@test-pc:~/blaze/blazetest$ ./configure 
test@test-pc:~/blaze/blazetest$ make


Building the mathematical shims operation tests...
g++ -isystem /home/test/blaze/blazetest -isystem /home/test/blaze -isystem /usr/include/x86_64-linux-gnu   -c -o OperationTest.o OperationTest.cpp
g++ -isystem /home/test/blaze/blazetest -isystem /home/test/blaze -isystem /usr/include/x86_64-linux-gnu   -c -o IncludeTest.o IncludeTest.cpp

Building the SIMD operation tests...
g++ -isystem /home/test/blaze/blazetest -isystem /home/test/blaze -isystem /usr/include/x86_64-linux-gnu   -c -o ComplexInt.o ComplexInt.cpp
g++ -isystem /home/test/blaze/blazetest -isystem /home/test/blaze -isystem /usr/include/x86_64-linux-gnu   -c -o Double.o Double.cpp
g++ -isystem /home/test/blaze/blazetest -isystem /home/test/blaze -isystem /usr/include/x86_64-linux-gnu   -c -o Int.o Int.cpp
g++ -isystem /home/test/blaze/blazetest -isystem /home/test/blaze -isystem /usr/include/x86_64-linux-gnu   -c -o ComplexSignedChar.o ComplexSignedChar.cpp
g++ -isystem /home/test/blaze/blazetest -isystem /home/test/blaze -isystem /usr/include/x86_64-linux-gnu   -c -o ComplexDouble.o ComplexDouble.cpp
g++ -isystem /home/test/blaze/blazetest -isystem /home/test/blaze -isystem /usr/include/x86_64-linux-gnu   -c -o ComplexShort.o ComplexShort.cpp
g++ -isystem /home/test/blaze/blazetest -isystem /home/test/blaze -isystem /usr/include/x86_64-linux-gnu   -c -o SignedChar.o SignedChar.cpp
g++ -isystem /home/test/blaze/blazetest -isystem /home/test/blaze -isystem /usr/include/x86_64-linux-gnu   -c -o ComplexChar.o ComplexChar.cpp
In file included from /home/test/blaze/blaze/math/simd/Functions.h:84,
                 from /home/test/blaze/blaze/math/SIMD.h:45,
                 from /home/test/blaze/blazetest/blazetest/mathtest/simd/OperationTest.h:87,
                 from ComplexChar.cpp:43:
/home/test/blaze/blaze/math/simd/Set.h: In instantiation of ‘blaze::EnableIf_t<(IsIntegral_v<T> && HasSize_v<T, 1>), typename blaze::If<IsSigned_v<T> >::Type<blaze::SIMDcint8, blaze::SIMDcuint8> > blaze::set(std::complex<_Tp>) [with T = char; blaze::EnableIf_t<(IsIntegral_v<T> && HasSize_v<T, 1>), typename blaze::If<IsSigned_v<T> >::Type<blaze::SIMDcint8, blaze::SIMDcuint8> > = blaze::SIMDcint8]’:
/home/test/blaze/blazetest/blazetest/mathtest/simd/OperationTest.h:623:24:   required from ‘void blazetest::mathtest::simd::OperationTest<T>::testSet() [with T = std::complex<char>]’
/home/test/blaze/blazetest/blazetest/mathtest/simd/OperationTest.h:404:4:   required from ‘blazetest::mathtest::simd::OperationTest<T>::OperationTest() [with T = std::complex<char>]’
/home/test/blaze/blazetest/blazetest/mathtest/simd/OperationTest.h:3718:4:   required from ‘void blazetest::mathtest::simd::runTest() [with T = std::complex<char>]’
ComplexChar.cpp:59:7:   required from here
/home/test/blaze/blaze/math/simd/Set.h:119:11: error: could not convert ‘value’ from ‘std::complex<char>’ to ‘blaze::EnableIf_t<true, blaze::SIMDcint8>’ {aka ‘const blaze::SIMDcint8’}
  119 |    return value;
      |           ^~~~~
      |           |
      |           std::complex<char>
<builtin>: recipe for target 'ComplexChar.o' failed
make[2]: *** [ComplexChar.o] Error 1
Makefile:53: recipe for target 'simd' failed
make[1]: *** [simd] Error 2
Makefile:47: recipe for target 'mathtest' failed
make: *** [mathtest] Error 2

Note that the build is functional by default (with BLAZE_USE_VECTORIZATION defined to 1).

Note sure that this is expected behavior or known issue for v3.8 as based on the https://bitbucket.org/blaze-lib/blaze/wiki/Configuration Files#!vectorization I understood that this feature is functional.

Comments (1)

  1. Klaus Iglberger

    Hi Branimir!

    Thanks for reporting this defect. While we consider this a minor flaw (**Blaze** without vectorization is not of much value) it still is a flaw and will be removed. We’ll fix the issue as soon as possible. Thanks again,

    Best regards,

    Klaus!

  2. Log in to comment