gmarcais / Jellyfish

A fast multi-threaded k-mer counter
Other
462 stars 136 forks source link

ppc64le: Unit test fails erroneously #65

Closed jlost closed 10 months ago

jlost commented 8 years ago

Testing on PPC64le, unit tests fail erroneously. The tests should be altered so that they no longer erroneously fail.

The error can be recreated by compiling on an IBM POWER8 Red Hat system with --without-sse and running make check.

[u0017592@sys-82143 jellyfish-2.2.4]$ sudo make check
make  check-am
make[1]: Entering directory `/home/u0017592/projects/jellyfish-2.2.4'
make  libgtest.la libgtest_main.la bin/generate_sequence bin/test_all
make[2]: Entering directory `/home/u0017592/projects/jellyfish-2.2.4'
  CXX      unit_tests/gtest/src/libgtest_la-gtest-all.lo
  CXXLD    libgtest.la
  CXX      unit_tests/gtest/src/libgtest_main_la-gtest_main.lo
  CXXLD    libgtest_main.la
  CXX      jellyfish/generate_sequence.o
  CXX      jellyfish/mersenne.o
  CXX      jellyfish/backtrace.o
  CXX      jellyfish/dbg.o
  CXXLD    bin/generate_sequence
  CXX      unit_tests/bin_test_all-test_main.o
  CXX      unit_tests/bin_test_all-test_misc.o
  CXX      unit_tests/bin_test_all-test_offsets_key_value.o
  CXX      unit_tests/bin_test_all-test_simple_circular_buffer.o
  CXX      unit_tests/bin_test_all-test_rectangular_binary_matrix.o
  CXX      unit_tests/bin_test_all-test_mer_dna.o
  CXX      unit_tests/bin_test_all-test_large_hash_array.o
  CXX      unit_tests/bin_test_all-test_mer_overlap_sequence_parser.o
  CXX      unit_tests/bin_test_all-test_file_header.o
  CXX      unit_tests/bin_test_all-test_mer_iterator.o
  CXX      unit_tests/bin_test_all-test_hash_counter.o
  CXX      unit_tests/bin_test_all-test_mer_heap.o
  CXX      unit_tests/bin_test_all-test_stream_iterator.o
  CXX      unit_tests/bin_test_all-test_token_ring.o
  CXX      unit_tests/bin_test_all-test_text_dumper.o
  CXX      unit_tests/bin_test_all-test_dumpers.o
  CXX      unit_tests/bin_test_all-test_mapped_file.o
  CXX      unit_tests/bin_test_all-test_int128.o
  CXX      unit_tests/bin_test_all-test_mer_dna_bloom_counter.o
  CXX      unit_tests/bin_test_all-test_whole_sequence_parser.o
  CXX      unit_tests/bin_test_all-test_allocators_mmap.o
  CXX      unit_tests/bin_test_all-test_cooperative_pool2.o
  CXX      unit_tests/bin_test_all-test_generator_manager.o
  CXX      unit_tests/bin_test_all-test_atomic_bits_array.o
  CXX      unit_tests/bin_test_all-test_stdio_filebuf.o
  CXX      jellyfish/bin_test_all-backtrace.o
  CXXLD    bin/test_all
make[2]: Leaving directory `/home/u0017592/projects/jellyfish-2.2.4'
make  check-TESTS
make[2]: Entering directory `/home/u0017592/projects/jellyfish-2.2.4'
make[3]: Entering directory `/home/u0017592/projects/jellyfish-2.2.4'
PASS: tests/generate_sequence.sh
PASS: tests/parallel_hashing.sh
PASS: tests/merge.sh
PASS: tests/bloom_filter.sh
SKIP: tests/big.sh
PASS: tests/subset_hashing.sh
PASS: tests/multi_file.sh
PASS: tests/bloom_counter.sh
FAIL: tests/large_key.sh
SKIP: tests/swig_python.sh
SKIP: tests/swig_ruby.sh
SKIP: tests/swig_perl.sh
FAIL: unit_tests/unit_tests.sh
============================================================================
Testsuite summary for jellyfish 2.2.4
============================================================================
# TOTAL: 13
# PASS:  7
# SKIP:  4
# XFAIL: 0
# FAIL:  2
# XPASS: 0
# ERROR: 0
============================================================================
See ./test-suite.log
Please report to gmarcais@umd.edu
============================================================================
make[3]: *** [test-suite.log] Error 1
make[3]: Leaving directory `/home/u0017592/projects/jellyfish-2.2.4'
make[2]: *** [check-TESTS] Error 2
make[2]: Leaving directory `/home/u0017592/projects/jellyfish-2.2.4'
make[1]: *** [check-am] Error 2
make[1]: Leaving directory `/home/u0017592/projects/jellyfish-2.2.4'
make: *** [check] Error 2

The unit testing error can be safely ignored. It occurs when using __int128 as the base type for storing mers, which is an experiment and not done by default. Everywhere else but in these few tests, uint64_t is used, and all the tests with uint64_t are successful. In addition the failure occurs in a method that is only used in the script binding, so it would not affect k-mer counting anyway.

See #63 for details.

rafaeldelucena commented 7 years ago

The unit testing error can be safely ignored. It occurs when using __int128 as the base type for storing mers, which is an experiment and not done by default.

As it is an experiment wouldn't be nice if it's disabled by default? (--without-int128)

rafaeldelucena commented 7 years ago

@gmarcais can you answer this issue too? x)

gmarcais commented 7 years ago

And this one too

rafaeldelucena commented 7 years ago

@gmarcais: Running autoreconf -if using #68 and configure --without-int128 make all tests pass on ppc64le. :)

rafaeldelucena commented 6 years ago

@gmarcais: Hello again :)

When you talks about int128 been an experiment for base type for mers at #63, the int128 must be disable at project level or only for MerDNA scope?

Best regards

rafaeldelucena commented 6 years ago

Do you want to solve it or can I start it?

shawnl commented 5 years ago

This is fixed. WHoeve fixed it should claim the bounty.

rafaeldelucena commented 5 years ago

I think this was fixed by this PR: https://github.com/gmarcais/Jellyfish/commit/958f04918be65785ec626ded68bd0d55ccb76321

And using the --without-128 flag in configure

rafaeldelucena commented 5 years ago

@jlost could you confirm if this is already fixed?

jlost commented 10 months ago

I no longer have access to the hardware to confirm for myself whether this was fixed, so I will defer to @shawnl and close it up.