soedinglab / hh-suite

Remote protein homology detection suite.
https://bmcbioinformatics.biomedcentral.com/articles/10.1186/s12859-019-3019-7
GNU General Public License v3.0
515 stars 128 forks source link

build problems on ppce with new version #245

Open asedova opened 3 years ago

asedova commented 3 years ago

Hi all-

Problems on Summit again. Latest clone won't build with gcc 6.4 at all, problems that look like this:

/ccs/home/adaa/HHSuite/hh-suite/lib/simde/simde/x86/sse2.h:4253:62: error: invalid parameter combination for AltiVec intrinsic
       r_.altivec_i16 = vec_mul(a_.altivec_i16, b_.altivec_i16);
                                                              ^
In file included from /ccs/home/adaa/HHSuite/hh-suite/lib/simd/simd.h:316:0,
                 from /ccs/home/adaa/HHSuite/hh-suite/src/util.h:23,
                 from /ccs/home/adaa/HHSuite/hh-suite/src/hhhmm.h:8,
                 from /ccs/home/adaa/HHSuite/hh-suite/src/hhhit.h:19,
                 from /ccs/home/adaa/HHSuite/hh-suite/src/hhviterbi.h:11,
                 from /ccs/home/adaa/HHSuite/hh-suite/src/hhviterbialgorithm.cpp:7:
/ccs/home/adaa/HHSuite/hh-suite/lib/simde/simde/x86/sse4.1.h: In function 'simde__m128i simde_mm_mullo_epi32(simde__m128i, simde__m128i)':
/ccs/home/adaa/HHSuite/hh-suite/lib/simde/simde/x86/sse4.1.h:1846:62: error: invalid parameter combination for AltiVec intrinsic
       r_.altivec_i32 = vec_mul(a_.altivec_i32, b_.altivec_i32);
                                                              ^
make[2]: *** [src/CMakeFiles/hhviterbialgorithm_with_celloff_and_ss.dir/hhviterbialgorithm.cpp.o] Error 1

With gcc 10.2 the code builds but these warnings appear:

[ 89%] Linking CXX executable hhblits_omp
/usr/bin/ld: libhhviterbialgorithm_and_ss.a(hhviterbialgorithm.cpp.o): In function `Viterbi::AlignWithOutCellOffAndSS(HMMSimd*, HMMSimd*, ViterbiMatrix*, int, Viterbi::ViterbiResult*, int)':
hhviterbialgorithm.cpp:(.text+0xa8): toc optimization is not supported for 0xe7a90003 instruction.
/usr/bin/ld: libhhviterbialgorithm_with_celloff_and_ss.a(hhviterbialgorithm.cpp.o): In function `Viterbi::AlignWithCellOffAndSS(HMMSimd*, HMMSimd*, ViterbiMatrix*, int, Viterbi::ViterbiResult*, int)':
hhviterbialgorithm.cpp:(.text+0xac): toc optimization is not supported for 0xe7a90003 instruction.
[ 89%] Built target hhblits_omp

and hhblits_omp is not working correctly. It seems to be mixing up the input args:

./hhblits_omp -cpu 4 -d uniclust30_2017_10/uniclust30_2017_10 -i ./hh_data/query.seq -oa3m stdout -n 1
- 19:50:04.370 ERROR: In /ccs/home/adaa/HHSuite/hh-suite/src/ffindexdatabase.cpp:11: FFindexDatabase:

- 19:50:04.370 ERROR: could not open file './hh_data/query.seq.ffdata'

while without openmp:

./hhblits -d uniclust30_2017_10/uniclust30_2017_10 -i ./hh_data/query.seq -oa3m stdout -n 1
- 19:50:32.867 INFO: Search results will be written to ./hh_data/query.hhr

- 19:50:45.304 INFO: Searching 13605227 column state sequences.

- 19:50:45.409 INFO: ./hh_data/query.seq is in A2M, A3M or FASTA format

- 19:50:45.410 INFO: Iteration 1

- 19:50:45.926 INFO: Prefiltering database

....and runs fine and exits.

milot-mirdita commented 3 years ago

I think we require at least GCC8 on powerpc, at least that's what we use everywhere (hh-suite, mmseqs, plass, etc compile with GCC8 in CI) for testing.

The optimization warning: no idea, but it doesn't seem very important (I guess?).

The hhblits_omp issue is actually expected behavior. hhblits_omp only takes databases as input, not single files. Basically it's meant for database vs. database searches.

asedova commented 3 years ago

Ah ok. I am still not getting the tests to all pass, but that may be because I butchered the file (trying to test on login node and don't have access to mpi here, so I removed the MPI parts).

This command is failing

../build/bin/hhblits -i query.a3m -d single -blasttab blits_app_res -n 1

With the following error:

- 22:13:52.082 INFO: HMMs passed 2nd prefilter and not found in previous iterations : 1

- 22:13:52.082 INFO: Scoring 1 HMMs using HMM-HMM Viterbi alignment

- 22:13:52.122 INFO: Alternative alignment: 0

- 22:13:52.122 ERROR: In /ccs/home/adaa/HHSuite/hh-suite/src/hhdatabase.cpp:443: getTemplateHMM:

- 22:13:52.122 ERROR:   Unrecognized HMM file format in 'query.a3m'.

- 22:13:52.122 ERROR:   Context:
'

- 22:13:52.122 ERROR: 

- 22:13:52.122 ERROR: '

The ctranslate command before that seemed to work ok, or at least it didn't give errors, although now I am not sure if it exited cleanly:

../build/bin/cstranslate -i single -o single_cs219 -b -x 0.3 -c 4 -I a3m -f
Reading context library for pseudocounts from internal ...
Reading abstract state alphabet from internal ...
Processing entry: query.a3m
Adding cs-pseudocounts (admix=0.30) ...
[adaa@login1.summit data]$ 
milot-mirdita commented 3 years ago

Did you have any progress with this issue? I just tried it out on the ppc64le machine I have access to and it seems to work fine.

The latest version of the data/test.sh script in git can also run without MPI.