Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

error while running make command #81

Open
cris111222 opened this issue Jan 16, 2025 · 8 comments
Open

error while running make command #81

cris111222 opened this issue Jan 16, 2025 · 8 comments

Comments

@cris111222
Copy link

Hello, first, thank you for developing this tool.
I am having a problem while installing it. When running make I receive the following error. I hope it is not much trouble to help me identify how to solve it. Thanks.

[clslj-5@sylogin2 src]$ ./configure
Checking for 64 bits compiler...
use CXX=g++ CFLAGS=-O3 -march=native
binaries install to /dssg/home/acct-clslj/clslj-5/bin
tables install to /dssg/home/acct-clslj/clslj-5/table
alndbs install to /dssg/home/acct-clslj/clslj-5/seqdb
wrote Makefile
wrote files
OK. try make and make install. good luck!

[clslj-5@sylogin2 src]$ make
g++ -O3 -march=native -DM_THREAD=1 -c dbs.cc
g++ -O3 -march=native -DM_THREAD=1 -c fwd2b1.cc
In file included from fwd2s1_simd.h:39,
                 from fwd2b1.cc:34:
simd_functions.h:227:2: error: expected ‘;’ after struct definition
 }
  ^
  ;
simd_functions.h: In member function ‘Simd_functions::int_v Simd_functions::load(const char*)’:
simd_functions.h:184:13: error: ‘_mm512_loadu_epi8’ was not declared in this scope
      return _mm512_loadu_epi8(a);
             ^~~~~~~~~~~~~~~~~
simd_functions.h:184:13: note: suggested alternative: ‘_mm512_add_epi8’
      return _mm512_loadu_epi8(a);
             ^~~~~~~~~~~~~~~~~
             _mm512_add_epi8
simd_functions.h: In member function ‘void Simd_functions::store(char*, Simd_functions::int_v)’:
simd_functions.h:186:32: error: ‘_mm512_storeu_epi8’ was not declared in this scope
  void store(char* a, int_v v) {_mm512_storeu_epi8(a, v);}
                                ^~~~~~~~~~~~~~~~~~
simd_functions.h:186:32: note: suggested alternative: ‘_mm512_storeu_ps’
  void store(char* a, int_v v) {_mm512_storeu_epi8(a, v);}
simd_functions.h:186:32: note: suggested alternative: ‘_mm512_storeu_ps’
  void store(char* a, int_v v) {_mm512_storeu_epi8(a, v);}
                                ^~~~~~~~~~~~~~~~~~
                                _mm512_storeu_ps
simd_functions.h: In member function ‘Simd_functions::int_v Simd_functions::load(const CHAR*)’:
simd_functions.h:239:13: error: ‘_mm512_loadu_epi8’ was not declared in this scope
      return _mm512_loadu_epi8(a);
             ^~~~~~~~~~~~~~~~~
simd_functions.h:239:13: note: suggested alternative: ‘_mm512_add_epi8’
      return _mm512_loadu_epi8(a);
             ^~~~~~~~~~~~~~~~~
             _mm512_add_epi8
simd_functions.h: In member function ‘void Simd_functions::store(CHAR*, Simd_functions::int_v)’:
simd_functions.h:241:32: error: ‘_mm512_storeu_epi8’ was not declared in this scope
  void store(CHAR* a, int_v v) {_mm512_storeu_epi8(a, v);}
                                ^~~~~~~~~~~~~~~~~~
simd_functions.h:241:32: note: suggested alternative: ‘_mm512_storeu_ps’
  void store(CHAR* a, int_v v) {_mm512_storeu_epi8(a, v);}
                                ^~~~~~~~~~~~~~~~~~
                                _mm512_storeu_ps
simd_functions.h: In member function ‘Simd_functions::int_v Simd_functions::load(const short int*)’:
simd_functions.h:294:13: error: ‘_mm512_loadu_epi16’ was not declared in this scope
      return _mm512_loadu_epi16(a);
             ^~~~~~~~~~~~~~~~~~
simd_functions.h:294:13: note: suggested alternative: ‘_mm512_madd_epi16’
      return _mm512_loadu_epi16(a);
             ^~~~~~~~~~~~~~~~~~
             _mm512_madd_epi16

simd_functions.h: In member function ‘void Simd_functions::store(short int*, Simd_functions::int_v)’:
simd_functions.h:296:33: error: ‘_mm512_storeu_epi16’ was not declared in this scope
  void store(short* a, int_v v) {_mm512_storeu_epi16(a, v);}
                                 ^~~~~~~~~~~~~~~~~~~
simd_functions.h:296:33: note: suggested alternative: ‘_mm512_store_epi32’
  void store(short* a, int_v v) {_mm512_storeu_epi16(a, v);}
                                 ^~~~~~~~~~~~~~~~~~~
                                 _mm512_store_epi32
simd_functions.h: In member function ‘Simd_functions::int_v Simd_functions::cast16to8(Simd_functions::int_v)’:
simd_functions.h:336:18: error: ‘_mm512_loadu_epi8’ was not declared in this scope
      int_v b_v = _mm512_loadu_epi8(b64s2c_a);
                  ^~~~~~~~~~~~~~~~~
simd_functions.h:336:18: note: suggested alternative: ‘_mm512_add_epi8’
      int_v b_v = _mm512_loadu_epi8(b64s2c_a);
                  ^~~~~~~~~~~~~~~~~
                  _mm512_add_epi8
simd_functions.h: In member function ‘Simd_functions::int_v Simd_functions::load(const SHORT*)’:
simd_functions.h:362:13: error: ‘_mm512_loadu_epi16’ was not declared in this scope
      return _mm512_loadu_epi16(a);
             ^~~~~~~~~~~~~~~~~~
simd_functions.h:362:13: note: suggested alternative: ‘_mm512_madd_epi16’
      return _mm512_loadu_epi16(a);
             ^~~~~~~~~~~~~~~~~~
             _mm512_madd_epi16
simd_functions.h: In member function ‘void Simd_functions::store(SHORT*, Simd_functions::int_v)’:
simd_functions.h:364:33: error: ‘_mm512_storeu_epi16’ was not declared in this scope
  void store(SHORT* a, int_v v) {_mm512_storeu_epi16(a, v);}
                                 ^~~~~~~~~~~~~~~~~~~
simd_functions.h:364:33: note: suggested alternative: ‘_mm512_store_epi32’
  void store(SHORT* a, int_v v) {_mm512_storeu_epi16(a, v);}
                                 ^~~~~~~~~~~~~~~~~~~
                                 _mm512_store_epi32
simd_functions.h: In member function ‘Simd_functions::int_v Simd_functions::cast16to8(Simd_functions::int_v)’:
simd_functions.h:404:18: error: ‘_mm512_loadu_epi8’ was not declared in this scope
      int_v b_v = _mm512_loadu_epi8(b64s2c_a);
                  ^~~~~~~~~~~~~~~~~
simd_functions.h:404:18: note: suggested alternative: ‘_mm512_add_epi8’
      int_v b_v = _mm512_loadu_epi8(b64s2c_a);
                  ^~~~~~~~~~~~~~~~~
                  _mm512_add_epi8
simd_functions.h: In member function ‘Simd_functions::int_v Simd_functions::load(const int*)’:
simd_functions.h:429:35: error: ‘_mm512_loadu_epi32’ was not declared in this scope
  int_v load(const int* a) {return _mm512_loadu_epi32(a);}
                                   ^~~~~~~~~~~~~~~~~~
simd_functions.h:429:35: note: suggested alternative: ‘_mm512_load_epi32’
  int_v load(const int* a) {return _mm512_loadu_epi32(a);}
                                   ^~~~~~~~~~~~~~~~~~
                                   _mm512_load_epi32
simd_functions.h: In member function ‘void Simd_functions::store(int*, Simd_functions::int_v)’:
simd_functions.h:430:31: error: ‘_mm512_storeu_epi32’ was not declared in this scope
  void store(int* a, int_v v) {_mm512_storeu_epi32(a, v);}
                               ^~~~~~~~~~~~~~~~~~~
simd_functions.h:430:31: note: suggested alternative: ‘_mm512_store_epi32’
void store(int* a, int_v v) {_mm512_storeu_epi32(a, v);}
                               ^~~~~~~~~~~~~~~~~~~
                               _mm512_store_epi32
simd_functions.h: In member function ‘Simd_functions::int_v Simd_functions::cast32to16(Simd_functions::int_v)’:
simd_functions.h:470:18: error: ‘_mm512_loadu_epi8’ was not declared in this scope
      int_v b_v = _mm512_loadu_epi8(b64i2s_a);
                  ^~~~~~~~~~~~~~~~~
simd_functions.h:470:18: note: suggested alternative: ‘_mm512_add_epi8’
      int_v b_v = _mm512_loadu_epi8(b64i2s_a);
                  ^~~~~~~~~~~~~~~~~
                  _mm512_add_epi8
simd_functions.h: In member function ‘Simd_functions::int_v Simd_functions::load(const INT*)’:
simd_functions.h:495:35: error: ‘_mm512_loadu_epi32’ was not declared in this scope
  int_v load(const INT* a) {return _mm512_loadu_epi32(a);}
                                   ^~~~~~~~~~~~~~~~~~
simd_functions.h:495:35: note: suggested alternative: ‘_mm512_load_epi32’
  int_v load(const INT* a) {return _mm512_loadu_epi32(a);}
                                   ^~~~~~~~~~~~~~~~~~
                                   _mm512_load_epi32
simd_functions.h: In member function ‘void Simd_functions::store(INT*, Simd_functions::int_v)’:
simd_functions.h:496:31: error: ‘_mm512_storeu_epi32’ was not declared in this scope
  void store(INT* a, int_v v) {_mm512_storeu_epi32(a, v);}
                               ^~~~~~~~~~~~~~~~~~~
simd_functions.h:496:31: note: suggested alternative: ‘_mm512_store_epi32’
  void store(INT* a, int_v v) {_mm512_storeu_epi32(a, v);}
                               ^~~~~~~~~~~~~~~~~~~
                               _mm512_store_epi32
simd_functions.h: In member function ‘Simd_functions::int_v Simd_functions::cast32to16(Simd_functions::int_v)’:
simd_functions.h:530:18: error: ‘_mm512_loadu_epi8’ was not declared in this scope
      int_v b_v = _mm512_loadu_epi8(b64i2s_a);
                  ^~~~~~~~~~~~~~~~~
simd_functions.h:530:18: note: suggested alternative: ‘_mm512_add_epi8’
      int_v b_v = _mm512_loadu_epi8(b64i2s_a);
                  ^~~~~~~~~~~~~~~~~
                  _mm512_add_epi8
simd_functions.h: At global scope:
simd_functions.h:557:12: error: ‘flt_v’ has not been declared
  var_v add(flt_v u, var_v v) {
            ^~~~~
simd_functions.h: In member function ‘Simd_functions::var_v Simd_functions::add(int, Simd_functions::var_v)’:
simd_functions.h:558:27: error: cannot convert ‘int’ to ‘__m512’ {aka ‘__vector(16) float’}
      return _mm512_add_ps(u, v);
                           ^
In file included from /usr/lib/gcc/x86_64-redhat-linux/8/include/immintrin.h:45,
                 from /usr/lib/gcc/x86_64-redhat-linux/8/include/x86intrin.h:48,
                 from simd_functions.h:30,
                 from fwd2s1_simd.h:39,
                 from fwd2b1.cc:34:
/usr/lib/gcc/x86_64-redhat-linux/8/include/avx512fintrin.h:11544:23: note:   initializing argument 1 of ‘__m512 _mm512_add_ps(__m512, __m512)’
 _mm512_add_ps (__m512 __A, __m512 __B)
                ~~~~~~~^~~
In file included from fwd2s1_simd.h:39,
                 from fwd2b1.cc:34:
simd_functions.h: In member function ‘void Simd_functions::vecadd_c(Simd_functions::var_t*, const var_t&, size_t)’:
simd_functions.h:103:33: error: no matching function for call to ‘Simd_functions::add(Simd_functions::var_v, Simd_functions::var_v&)’
 var_v     v_v = add(load(d), c_v);
                                 ^
simd_functions.h:592:7: note: in expansion of macro ‘VecAdd_c’
      {VecAdd_c(dst, c, n)}
       ^~~~~~~~
simd_functions.h:557:8: note: candidate: ‘Simd_functions::var_v Simd_functions::add(int, Simd_functions::var_v)’
  var_v add(flt_v u, var_v v) {
        ^~~
simd_functions.h:557:8: note:   no known conversion for argument 1 from ‘Simd_functions::var_v’ {aka ‘__vector(16) float’} to ‘int’
make: *** [Makefile:42: fwd2b1.o] Error 1

@ogotoh
Copy link
Owner

ogotoh commented Jan 23, 2025

Thank you for your report.

The primary reason for the problem is that a ‘;’ is missed at the end of the structure definition. The fixed version (Ver.3.0.6c) has just been uploaded. Unfortunately, however, I cannot directly verify whether spaln is compiled and properly run on a machine with AVX512 architecture in my current environment. I am very grateful if you report me your experience on your machine. Thanks in advance for your kind cooperation.

Osamu,

@cris111222
Copy link
Author

Hello, thank you for your efforts to fix it.

I have tried the new version and this time when trying to run configure I am having problems as I get this information:

[clslj-5@sylogin2 src]$ ./configure
-bash: ./configure: Permission denied

I tried using the configure file from the Ver.3.0.6b in the Ver.3.0.6c version. I got the following error

g++ -O3 -march=native -DM_THREAD=1 -c fwd2b1.cc
In file included from fwd2s1_simd.h:39,
                 from fwd2b1.cc:34:
simd_functions.h: In member function ‘Simd_functions::int_v Simd_functions::load(const char*)’:
simd_functions.h:209:13: error: ‘_mm512_loadu_epi8’ was not declared in this scope
      return _mm512_loadu_epi8(a);
             ^~~~~~~~~~~~~~~~~
simd_functions.h:209:13: note: suggested alternative: ‘_mm512_add_epi8’
      return _mm512_loadu_epi8(a);
             ^~~~~~~~~~~~~~~~~
             _mm512_add_epi8
simd_functions.h: In member function ‘void Simd_functions::store(char*, Simd_functions::int_v)’:
simd_functions.h:211:32: error: ‘_mm512_storeu_epi8’ was not declared in this scope
  void store(char* a, int_v v) {_mm512_storeu_epi8(a, v);}
                                ^~~~~~~~~~~~~~~~~~
simd_functions.h:211:32: note: suggested alternative: ‘_mm512_storeu_ps’
  void store(char* a, int_v v) {_mm512_storeu_epi8(a, v);}
                                ^~~~~~~~~~~~~~~~~~
                                _mm512_storeu_ps
simd_functions.h: In member function ‘Simd_functions::int_v Simd_functions::load(const CHAR*)’:
simd_functions.h:264:13: error: ‘_mm512_loadu_epi8’ was not declared in this scope
      return _mm512_loadu_epi8(a);
             ^~~~~~~~~~~~~~~~~
simd_functions.h:264:13: note: suggested alternative: ‘_mm512_add_epi8’
      return _mm512_loadu_epi8(a);
             ^~~~~~~~~~~~~~~~~
             _mm512_add_epi8
simd_functions.h: In member function ‘void Simd_functions::store(CHAR*, Simd_functions::int_v)’:
simd_functions.h:266:32: error: ‘_mm512_storeu_epi8’ was not declared in this scope
  void store(CHAR* a, int_v v) {_mm512_storeu_epi8(a, v);}
                                ^~~~~~~~~~~~~~~~~~
simd_functions.h:266:32: note: suggested alternative: ‘_mm512_storeu_ps’
  void store(CHAR* a, int_v v) {_mm512_storeu_epi8(a, v);}
                                ^~~~~~~~~~~~~~~~~~
                                _mm512_storeu_ps
simd_functions.h: In member function ‘Simd_functions::int_v Simd_functions::load(const short int*)’:
simd_functions.h:319:13: error: ‘_mm512_loadu_epi16’ was not declared in this scope
      return _mm512_loadu_epi16(a);
             ^~~~~~~~~~~~~~~~~~
simd_functions.h:319:13: note: suggested alternative: ‘_mm512_madd_epi16’
      return _mm512_loadu_epi16(a);
             ^~~~~~~~~~~~~~~~~~
             _mm512_madd_epi16
simd_functions.h: In member function ‘void Simd_functions::store(short int*, Simd_functions::int_v)’:
simd_functions.h:321:33: error: ‘_mm512_storeu_epi16’ was not declared in this scope
  void store(short* a, int_v v) {_mm512_storeu_epi16(a, v);}
                                 ^~~~~~~~~~~~~~~~~~~
simd_functions.h:321:33: note: suggested alternative: ‘_mm512_store_epi32’
  void store(short* a, int_v v) {_mm512_storeu_epi16(a, v);}
                                 ^~~~~~~~~~~~~~~~~~~
                                 _mm512_store_epi32
simd_functions.h: In member function ‘Simd_functions::int_v Simd_functions::cast16to8(Simd_functions::int_v)’:
simd_functions.h:361:18: error: ‘_mm512_loadu_epi8’ was not declared in this scope
      int_v b_v = _mm512_loadu_epi8(b64s2c_a);
                  ^~~~~~~~~~~~~~~~~
simd_functions.h:361:18: note: suggested alternative: ‘_mm512_add_epi8’
      int_v b_v = _mm512_loadu_epi8(b64s2c_a);
                  ^~~~~~~~~~~~~~~~~
                  _mm512_add_epi8

simd_functions.h: In member function ‘Simd_functions::int_v Simd_functions::cast32to8(Simd_functions::int_v)’:
simd_functions.h:365:18: error: ‘_mm512_loadu_epi8’ was not declared in this scope
      int_v b_v = _mm512_loadu_epi8(b64i2c_a);
                  ^~~~~~~~~~~~~~~~~
simd_functions.h:365:18: note: suggested alternative: ‘_mm512_add_epi8’
      int_v b_v = _mm512_loadu_epi8(b64i2c_a);
                  ^~~~~~~~~~~~~~~~~
                  _mm512_add_epi8
simd_functions.h: In member function ‘Simd_functions::int_v Simd_functions::load(const SHORT*)’:
simd_functions.h:391:13: error: ‘_mm512_loadu_epi16’ was not declared in this scope
      return _mm512_loadu_epi16(a);
             ^~~~~~~~~~~~~~~~~~
simd_functions.h:391:13: note: suggested alternative: ‘_mm512_madd_epi16’
      return _mm512_loadu_epi16(a);
             ^~~~~~~~~~~~~~~~~~
             _mm512_madd_epi16
simd_functions.h: In member function ‘void Simd_functions::store(SHORT*, Simd_functions::int_v)’:
simd_functions.h:393:33: error: ‘_mm512_storeu_epi16’ was not declared in this scope
  void store(SHORT* a, int_v v) {_mm512_storeu_epi16(a, v);}
                                 ^~~~~~~~~~~~~~~~~~~
simd_functions.h:393:33: note: suggested alternative: ‘_mm512_store_epi32’
  void store(SHORT* a, int_v v) {_mm512_storeu_epi16(a, v);}
                                 ^~~~~~~~~~~~~~~~~~~
                                 _mm512_store_epi32
simd_functions.h: In member function ‘Simd_functions::int_v Simd_functions::cast16to8(Simd_functions::int_v)’:
simd_functions.h:433:18: error: ‘_mm512_loadu_epi8’ was not declared in this scope
      int_v b_v = _mm512_loadu_epi8(b64s2c_a);
                  ^~~~~~~~~~~~~~~~~
simd_functions.h:433:18: note: suggested alternative: ‘_mm512_add_epi8’
      int_v b_v = _mm512_loadu_epi8(b64s2c_a);

                  ^~~~~~~~~~~~~~~~~
                  _mm512_add_epi8
simd_functions.h: In member function ‘Simd_functions::int_v Simd_functions::load(const int*)’:
simd_functions.h:458:35: error: ‘_mm512_loadu_epi32’ was not declared in this scope
  int_v load(const int* a) {return _mm512_loadu_epi32(a);}
                                   ^~~~~~~~~~~~~~~~~~
simd_functions.h:458:35: note: suggested alternative: ‘_mm512_load_epi32’
  int_v load(const int* a) {return _mm512_loadu_epi32(a);}
                                   ^~~~~~~~~~~~~~~~~~
                                   _mm512_load_epi32
simd_functions.h: In member function ‘void Simd_functions::store(int*, Simd_functions::int_v)’:
simd_functions.h:459:31: error: ‘_mm512_storeu_epi32’ was not declared in this scope
  void store(int* a, int_v v) {_mm512_storeu_epi32(a, v);}
                               ^~~~~~~~~~~~~~~~~~~
simd_functions.h:459:31: note: suggested alternative: ‘_mm512_store_epi32’
  void store(int* a, int_v v) {_mm512_storeu_epi32(a, v);}
                               ^~~~~~~~~~~~~~~~~~~
                               _mm512_store_epi32
simd_functions.h: In member function ‘Simd_functions::int_v Simd_functions::cast32to16(Simd_functions::int_v)’:
simd_functions.h:499:18: error: ‘_mm512_loadu_epi8’ was not declared in this scope
      int_v b_v = _mm512_loadu_epi8(b64i2s_a);
                  ^~~~~~~~~~~~~~~~~
simd_functions.h:499:18: note: suggested alternative: ‘_mm512_add_epi8’
      int_v b_v = _mm512_loadu_epi8(b64i2s_a);
                  ^~~~~~~~~~~~~~~~~
                  _mm512_add_epi8
simd_functions.h: In member function ‘Simd_functions::int_v Simd_functions::cast32to8(Simd_functions::int_v)’:
simd_functions.h:503:18: error: ‘_mm512_loadu_epi8’ was not declared in this scope
      int_v b_v = _mm512_loadu_epi8(b64i2c_a);
                  ^~~~~~~~~~~~~~~~~
simd_functions.h:503:18: note: suggested alternative: ‘_mm512_add_epi8’

      int_v b_v = _mm512_loadu_epi8(b64i2c_a);
                  ^~~~~~~~~~~~~~~~~
                  _mm512_add_epi8
simd_functions.h: In member function ‘Simd_functions::int_v Simd_functions::load(const INT*)’:
simd_functions.h:528:35: error: ‘_mm512_loadu_epi32’ was not declared in this scope
  int_v load(const INT* a) {return _mm512_loadu_epi32(a);}
                                   ^~~~~~~~~~~~~~~~~~
simd_functions.h:528:35: note: suggested alternative: ‘_mm512_load_epi32’
  int_v load(const INT* a) {return _mm512_loadu_epi32(a);}
                                   ^~~~~~~~~~~~~~~~~~
                                   _mm512_load_epi32
simd_functions.h: In member function ‘void Simd_functions::store(INT*, Simd_functions::int_v)’:
simd_functions.h:529:31: error: ‘_mm512_storeu_epi32’ was not declared in this scope
  void store(INT* a, int_v v) {_mm512_storeu_epi32(a, v);}
                               ^~~~~~~~~~~~~~~~~~~
simd_functions.h:529:31: note: suggested alternative: ‘_mm512_store_epi32’
  void store(INT* a, int_v v) {_mm512_storeu_epi32(a, v);}
                               ^~~~~~~~~~~~~~~~~~~
                               _mm512_store_epi32
simd_functions.h: In member function ‘Simd_functions::int_v Simd_functions::cast32to16(Simd_functions::int_v)’:
simd_functions.h:563:18: error: ‘_mm512_loadu_epi8’ was not declared in this scope
      int_v b_v = _mm512_loadu_epi8(b64i2s_a);
                  ^~~~~~~~~~~~~~~~~
simd_functions.h:563:18: note: suggested alternative: ‘_mm512_add_epi8’
      int_v b_v = _mm512_loadu_epi8(b64i2s_a);
                  ^~~~~~~~~~~~~~~~~
                  _mm512_add_epi8
simd_functions.h: In member function ‘Simd_functions::int_v Simd_functions::cast32to8(Simd_functions::int_v)’:
simd_functions.h:567:18: error: ‘_mm512_loadu_epi8’ was not declared in this scope
      int_v b_v = _mm512_loadu_epi8(b64i2c_a);
                  ^~~~~~~~~~~~~~~~~
simd_functions.h:567:18: note: suggested alternative: ‘_mm512_add_epi8’
      int_v b_v = _mm512_loadu_epi8(b64i2c_a);
                  ^~~~~~~~~~~~~~~~~
                  _mm512_add_epi8
make: *** [Makefile:42: fwd2b1.o] Error 1

@ogotoh
Copy link
Owner

ogotoh commented Jan 24, 2025

Thank you for your prompt response.

  1. Configure file in Ver.3.0.6c has not been changed from that of Ver.3.0.6b. I don’t know why but the ‘x’ bit of the configure file in Ver.3.0.6c seems to be turned off. Please turn on again by the command ‘chmod a+x configure’.
  2. I am not much familiar with AVX512 architecture, but it is composed of several sub-architectures. Some instructions such as _mm512_loadu_epi8 and _mm512_add_epi8 are available with AVX512BW subfamily, whereas others such as _mm512_storeu_ps and _mm512_store_epi32 are available with AVX512F subfamily. Currently, spaln relies on only AVX512BW subfamily instructions. I am afraid that your machine might support neither subfamily. You may confirm this by consulting with /proc/cpuinfo. Anyway, I will modify simd_functions.h to take care of heterogeneity of AVX512 subfamily architectures.

Osamu,

@ogotoh
Copy link
Owner

ogotoh commented Jan 28, 2025

Hi!

Fortunately, I have found a site with an AVX512 (AVX512F + AVX512BW) architecture where spaln can be compiled and test-run. The simd_function.h of the previous version had a typographical error. After correction of that error, I confirmed normal compilation and run of spaln on that machine. I have just uploaded the corrected version (Ver.3.0.6d). Please try this version at your convenient opportunity.

Osamu,

@cris111222
Copy link
Author

Hi, thank you very much for the changes in the version. Unfortunately, after I tried, the error persists. It seems to be very similar as before. Previously the error report said Simd_functions::int_v Simd_functions::load(const char*). The new one says:. Simd_functions::int_v Simd_functions
I hope I am not being too much of a nuisance. I am not familiar with the programing language used in the code for the compilation.
Since the machine you tried was able to achieve normal compilation, I am starting to be afraid that I am doing something wrong. I am running the command as this:
chmod +x configure
./configure
make
make install

Here is the full error report.

Checking for 64 bits compiler...
use CXX=g++ CFLAGS=-O3 -march=native
binaries install to /dssg/home/acct-clslj/clslj-5/bin
tables install to /dssg/home/acct-clslj/clslj-5/table
alndbs install to /dssg/home/acct-clslj/clslj-5/seqdb
wrote Makefile
wrote files
OK. try make and make install. good luck!
g++ -O3 -march=native -DM_THREAD=1 -c blksrc.cc
g++ -O3 -march=native -DM_THREAD=1 -c aln2.cc
g++ -O3 -march=native -DM_THREAD=1 -c dbs.cc
g++ -O3 -march=native -DM_THREAD=1 -c gaps.cc
g++ -O3 -march=native -DM_THREAD=1 -c codepot.cc
g++ -O3 -march=native -DM_THREAD=1 -c divseq.cc
g++ -O3 -march=native -DM_THREAD=1 -c gsinfo.cc
g++ -O3 -march=native -DM_THREAD=1 -c fwd2b1.cc

In file included from fwd2s1_simd.h:39,
from fwd2b1.cc:34:
simd_functions.h: In member function ‘Simd_functions::int_v Simd_functions::load(const char*)’:
simd_functions.h:209:13: error: ‘_mm512_loadu_epi8’ was not declared in this scope
return _mm512_loadu_epi8(a);
^~~~~~~~~~~~~~~~~
simd_functions.h:209:13: note: suggested alternative: ‘_mm512_add_epi8’
return _mm512_loadu_epi8(a);
^~~~~~~~~~~~~~~~~
_mm512_add_epi8
simd_functions.h: In member function ‘void Simd_functions::store(char*, Simd_functions::int_v)’:
simd_functions.h:211:32: error: ‘_mm512_storeu_epi8’ was not declared in this scope
void store(char* a, int_v v) {_mm512_storeu_epi8(a, v);}
^~~~~~~~~~~~~~~~~~
simd_functions.h:211:32: note: suggested alternative: ‘_mm512_storeu_ps’
void store(char* a, int_v v) {_mm512_storeu_epi8(a, v);}
^~~~~~~~~~~~~~~~~~
_mm512_storeu_ps
simd_functions.h: In member function ‘Simd_functions::int_v Simd_functions::load(const CHAR*)’:
simd_functions.h:264:13: error: ‘_mm512_loadu_epi8’ was not declared in this scope
return _mm512_loadu_epi8(a);
^~~~~~~~~~~~~~~~~
simd_functions.h:264:13: note: suggested alternative: ‘_mm512_add_epi8’
return _mm512_loadu_epi8(a);
^~~~~~~~~~~~~~~~~
_mm512_add_epi8
simd_functions.h: In member function ‘void Simd_functions::store(CHAR*, Simd_functions::int_v)’:
simd_functions.h:266:32: error: ‘_mm512_storeu_epi8’ was not declared in this scope
void store(CHAR* a, int_v v) {_mm512_storeu_epi8(a, v);}
^~~~~~~~~~~~~~~~~~
simd_functions.h:266:32: note: suggested alternative: ‘_mm512_storeu_ps’
void store(CHAR* a, int_v v) {_mm512_storeu_epi8(a, v);}
^~~~~~~~~~~~~~~~~~
_mm512_storeu_ps
simd_functions.h: In member function ‘Simd_functions::int_v Simd_functions::load(const short int*)’:
simd_functions.h:319:13: error: ‘_mm512_loadu_epi16’ was not declared in this scope
return _mm512_loadu_epi16(a);
^~~~~~~~~~~~~~~~~~
simd_functions.h:319:13: note: suggested alternative: ‘_mm512_madd_epi16’
return _mm512_loadu_epi16(a);
^~~~~~~~~~~~~~~~~~
_mm512_madd_epi16
simd_functions.h: In member function ‘void Simd_functions::store(short int*, Simd_functions::int_v)’:
simd_functions.h:321:33: error: ‘_mm512_storeu_epi16’ was not declared in this scope
void store(short* a, int_v v) {_mm512_storeu_epi16(a, v);}
^~~~~~~~~~~~~~~~~~~
simd_functions.h:321:33: note: suggested alternative: ‘_mm512_store_epi32’
void store(short* a, int_v v) {_mm512_storeu_epi16(a, v);}
^~~~~~~~~~~~~~~~~~~
_mm512_store_epi32
simd_functions.h: In member function ‘Simd_functions::int_v Simd_functions::cast16to8(Simd_functions::int_v)’:
simd_functions.h:361:18: error: ‘_mm512_loadu_epi8’ was not declared in this scope
int_v b_v = _mm512_loadu_epi8(b64s2c_a);
^~~~~~~~~~~~~~~~~
simd_functions.h:361:18: note: suggested alternative: ‘_mm512_add_epi8’
int_v b_v = _mm512_loadu_epi8(b64s2c_a);
^~~~~~~~~~~~~~~~~
_mm512_add_epi8
simd_functions.h: In member function ‘Simd_functions::int_v Simd_functions::cast32to8(Simd_functions::int_v)’:
simd_functions.h:365:18: error: ‘_mm512_loadu_epi8’ was not declared in this scope
int_v b_v = _mm512_loadu_epi8(b64i2c_a);
^~~~~~~~~~~~~~~~~
simd_functions.h:365:18: note: suggested alternative: ‘_mm512_add_epi8’
int_v b_v = _mm512_loadu_epi8(b64i2c_a);
^~~~~~~~~~~~~~~~~
_mm512_add_epi8
simd_functions.h: In member function ‘Simd_functions::int_v Simd_functions::load(const SHORT*)’:
simd_functions.h:391:13: error: ‘_mm512_loadu_epi16’ was not declared in this scope
return _mm512_loadu_epi16(a);
^~~~~~~~~~~~~~~~~~
simd_functions.h:391:13: note: suggested alternative: ‘_mm512_madd_epi16’
return _mm512_loadu_epi16(a);
^~~~~~~~~~~~~~~~~~
_mm512_madd_epi16
simd_functions.h: In member function ‘void Simd_functions::store(SHORT*, Simd_functions::int_v)’:
simd_functions.h:393:33: error: ‘_mm512_storeu_epi16’ was not declared in this scope
void store(SHORT* a, int_v v) {_mm512_storeu_epi16(a, v);}
^~~~~~~~~~~~~~~~~~~
simd_functions.h:393:33: note: suggested alternative: ‘_mm512_store_epi32’
void store(SHORT* a, int_v v) {_mm512_storeu_epi16(a, v);}
^~~~~~~~~~~~~~~~~~~
_mm512_store_epi32
simd_functions.h: In member function ‘Simd_functions::int_v Simd_functions::cast16to8(Simd_functions::int_v)’:
simd_functions.h:433:18: error: ‘_mm512_loadu_epi8’ was not declared in this scope
int_v b_v = _mm512_loadu_epi8(b64s2c_a);
^~~~~~~~~~~~~~~~~
simd_functions.h:433:18: note: suggested alternative: ‘_mm512_add_epi8’
int_v b_v = _mm512_loadu_epi8(b64s2c_a);
^~~~~~~~~~~~~~~~~
_mm512_add_epi8
simd_functions.h: In member function ‘Simd_functions::int_v Simd_functions::load(const int*)’:
simd_functions.h:458:35: error: ‘_mm512_loadu_epi32’ was not declared in this scope
int_v load(const int* a) {return _mm512_loadu_epi32(a);}
^~~~~~~~~~~~~~~~~~
simd_functions.h:458:35: note: suggested alternative: ‘_mm512_load_epi32’
int_v load(const int* a) {return _mm512_loadu_epi32(a);}
^~~~~~~~~~~~~~~~~~
_mm512_load_epi32
simd_functions.h: In member function ‘void Simd_functions::store(int*, Simd_functions::int_v)’:
simd_functions.h:459:31: error: ‘_mm512_storeu_epi32’ was not declared in this scope
void store(int* a, int_v v) {_mm512_storeu_epi32(a, v);}
^~~~~~~~~~~~~~~~~~~
simd_functions.h:459:31: note: suggested alternative: ‘_mm512_store_epi32’
void store(int* a, int_v v) {_mm512_storeu_epi32(a, v);}
^~~~~~~~~~~~~~~~~~~
_mm512_store_epi32
simd_functions.h: In member function ‘Simd_functions::int_v Simd_functions::cast32to16(Simd_functions::int_v)’:
simd_functions.h:499:18: error: ‘_mm512_loadu_epi8’ was not declared in this scope
int_v b_v = _mm512_loadu_epi8(b64i2s_a);
^~~~~~~~~~~~~~~~~
simd_functions.h:499:18: note: suggested alternative: ‘_mm512_add_epi8’
int_v b_v = _mm512_loadu_epi8(b64i2s_a);
^~~~~~~~~~~~~~~~~
_mm512_add_epi8
simd_functions.h: In member function ‘Simd_functions::int_v Simd_functions::cast32to8(Simd_functions::int_v)’:
simd_functions.h:503:18: error: ‘_mm512_loadu_epi8’ was not declared in this scope
int_v b_v = _mm512_loadu_epi8(b64i2c_a);
^~~~~~~~~~~~~~~~~
simd_functions.h:503:18: note: suggested alternative: ‘_mm512_add_epi8’
int_v b_v = _mm512_loadu_epi8(b64i2c_a);
^~~~~~~~~~~~~~~~~
_mm512_add_epi8
simd_functions.h: In member function ‘Simd_functions::int_v Simd_functions::load(const INT*)’:
simd_functions.h:528:35: error: ‘_mm512_loadu_epi32’ was not declared in this scope
int_v load(const INT* a) {return _mm512_loadu_epi32(a);}
^~~~~~~~~~~~~~~~~~
simd_functions.h:528:35: note: suggested alternative: ‘_mm512_load_epi32’
int_v load(const INT* a) {return _mm512_loadu_epi32(a);}
^~~~~~~~~~~~~~~~~~
_mm512_load_epi32
simd_functions.h: In member function ‘void Simd_functions::store(INT*, Simd_functions::int_v)’:
simd_functions.h:529:31: error: ‘_mm512_storeu_epi32’ was not declared in this scope
void store(INT* a, int_v v) {_mm512_storeu_epi32(a, v);}
^~~~~~~~~~~~~~~~~~~
simd_functions.h:529:31: note: suggested alternative: ‘_mm512_store_epi32’
void store(INT* a, int_v v) {_mm512_storeu_epi32(a, v);}
^~~~~~~~~~~~~~~~~~~
_mm512_store_epi32
simd_functions.h: In member function ‘Simd_functions::int_v Simd_functions::cast32to16(Simd_functions::int_v)’:
simd_functions.h:563:18: error: ‘_mm512_loadu_epi8’ was not declared in this scope
int_v b_v = _mm512_loadu_epi8(b64i2s_a);
^~~~~~~~~~~~~~~~~
simd_functions.h:563:18: note: suggested alternative: ‘_mm512_add_epi8’
int_v b_v = _mm512_loadu_epi8(b64i2s_a);
^~~~~~~~~~~~~~~~~
_mm512_add_epi8
simd_functions.h: In member function ‘Simd_functions::int_v Simd_functions::cast32to8(Simd_functions::int_v)’:
simd_functions.h:567:18: error: ‘_mm512_loadu_epi8’ was not declared in this scope
int_v b_v = _mm512_loadu_epi8(b64i2c_a);
^~~~~~~~~~~~~~~~~
simd_functions.h:567:18: note: suggested alternative: ‘_mm512_add_epi8’
int_v b_v = _mm512_loadu_epi8(b64i2c_a);
^~~~~~~~~~~~~~~~~
_mm512_add_epi8
make: *** [Makefile:42: fwd2b1.o] Error 1
make: ./makmdm: Command not found
make: *** [Makefile:65: install] Error 127

@ogotoh
Copy link
Owner

ogotoh commented Feb 3, 2025

The CPU of the machine I tried was ‘Intel(R) Xeon(R) Gold 6130 CPU @ 2.10GHz’.
It supports avx512f, avx512dq, avx512cd, avx512bw, and avx512vl sub-architectures.

What is the CPU of your machine? Please run
$ cat /proc/cpuinfo
to see the CPU model and whether avx512bw is present in the output.
If avx512bw is not present, your machine is not suitable for spaln complied with the default option. Please try to compile it with the -mavx2 option instead of the -march=native option.
If present, there might be other factors that I don’t know at present. I will continue to examine other machines for normal compilation on them.

Osamu,

@cris111222
Copy link
Author

Dear Dr. Osamu,
After confirming that avx512bw was not present, by changing the option mavx2 in the configure file the compilation and installation have run successfully. Thank you very much for you invaluable help.

@ogotoh
Copy link
Owner

ogotoh commented Feb 5, 2025

Thank you for your confirmation.

I expected that if avx512bw is not present (AVX512BW is absent or defined as zero in the header file), the compiler automatically chooses the AVX2 instructions even if the -march=native option is used. So, there remains something unresolved. However, anyway, your reports were very helpful for me to improve the usability of Spaln under wider conditions. If I can find a better solution, I will let you know immediately.

Osamu,

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants