From 7dde1cae4dfa8ced0a9bd524894df36e9cd4185b Mon Sep 17 00:00:00 2001 From: voutcn Date: Mon, 14 Oct 2019 23:38:51 -0700 Subject: [PATCH 1/3] keep docker image small --- Dockerfile | 34 ++++++++++++++++++++++++---------- azure-pipelines.yml | 7 +++++++ 2 files changed, 31 insertions(+), 10 deletions(-) diff --git a/Dockerfile b/Dockerfile index 823c6ed..a98a0eb 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,13 +1,27 @@ FROM ubuntu:18.04 -RUN apt-get update -RUN apt-get install -y g++ make zlib1g-dev gzip bzip2 cmake python --no-install-recommends + COPY . /root/megahit WORKDIR /root/megahit -RUN rm -rf build -RUN mkdir -p build -WORKDIR build -RUN cmake -DCMAKE_BUILD_TYPE=Release .. -RUN make -j4 -RUN make install -RUN megahit --test -RUN megahit --test --kmin-1pass + +RUN apt-get update && apt-get install -y --no-install-recommends \ + bzip2 \ + cmake \ + gzip \ + g++ \ + libgomp1 \ + make \ + python \ + zlib1g-dev && \ + rm -rf build && \ + mkdir -p build && \ + cd build && \ + cmake -DCMAKE_BUILD_TYPE=Release .. && \ + make -j4 install && \ + apt-get autoremove --purge -y \ + cmake \ + g++ \ + make \ + zlib1g-dev + +RUN megahit --test && megahit --test --kmin-1pass +ENTRYPOINT ["megahit"] diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 26564ee..5c5c910 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -1,3 +1,10 @@ +trigger: + paths: + exclude: + - '*.md' + - Dockerfile + - .travis.yml + jobs: - job: ubuntu_1604 pool: From 31ecedb0237b911f25295ba854ede53837d8c3ef Mon Sep 17 00:00:00 2001 From: Alex Copeland Date: Mon, 4 Apr 2022 15:08:55 -0700 Subject: [PATCH 2/3] CMakeLists.txt changes to enable/disable bmi2 and popcount at config time --- CMakeLists.txt | 33 ++++++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 172a03d..1308d1f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,6 +7,7 @@ if (CMAKE_VERSION VERSION_LESS "3.1") else () set(CMAKE_CXX_STANDARD 11) endif () +# target_compile_features( PUBLIC cxx_std_11) option(COVERAGE "Generate coverage report" OFF) option(STATIC_BUILD "Build static executation" OFF) @@ -34,7 +35,7 @@ LIST(APPEND OTHER_SOURCE if (STATIC_BUILD) set(CMAKE_FIND_LIBRARY_SUFFIXES ".a") -endif (STATIC_BUILD) +endif () find_package(ZLIB REQUIRED) find_package(OpenMP REQUIRED) @@ -54,18 +55,19 @@ set(CMAKE_CXX_FLAGS_DEBUG "-g -ggdb -O1 -D_LIBCPP_DEBUG -D_GLIBCXX_DEBUG") if (COVERAGE) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O0 --coverage") set(COV_PY "coverage run") -endif (COVERAGE) +endif () if (SANITIZER) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -fsanitize=leak -fsanitize=undefined") -endif (SANITIZER) +endif () if (TSAN) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=thread") -endif (TSAN) +endif () message(STATUS "Build type: ${CMAKE_BUILD_TYPE}: ${CMAKE_CXX_FLAGS}") +message(STATUS "Compiler: ${CMAKE_CXX_COMPILER_ID}" ) add_executable(megahit_core ${OTHER_SOURCE} ${ASMBL_SOURCE} ${IDBA_SOURCE} ${SDBG_SOURCE} ${LCASM_SOURCE} ${SEQ_SOURCE} ${CX1_SOURCE} ${TOOLKIT_SOURCE}) @@ -73,15 +75,32 @@ add_executable(megahit_core_popcnt ${OTHER_SOURCE} ${ASMBL_SOURCE} ${IDBA_SOURCE ${CX1_SOURCE} ${TOOLKIT_SOURCE}) add_executable(megahit_core_no_hw_accel ${OTHER_SOURCE} ${ASMBL_SOURCE} ${IDBA_SOURCE} ${SDBG_SOURCE} ${LCASM_SOURCE} ${SEQ_SOURCE} ${CX1_SOURCE} ${TOOLKIT_SOURCE}) -set_target_properties(megahit_core PROPERTIES COMPILE_FLAGS "-mbmi2 -DUSE_BMI2 -mpopcnt") -set_target_properties(megahit_core_popcnt PROPERTIES COMPILE_FLAGS "-mpopcnt") + +include(CheckCXXCompilerFlag) +#check_cxx_compiler_flag("-march=native" USE_ARCH_NATIVE) +#if(USE_ARCH_NATIVE) +# message(STATUS "Using native tuning (-march=native compiler flag set)") +# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native") +#endif() + +check_cxx_compiler_flag("-mpopcnt" USE_POPCNT) +if(USE_POPCNT) + message(STATUS "Using popcnt instructions (-mpopcnt compiler flag set)") + set_target_properties(megahit_core_popcnt PROPERTIES COMPILE_FLAGS "-mpopcnt") +endif() + +check_cxx_compiler_flag("-mbmi2" USE_BMI2) +if(USE_BMI2 AND USE_POPCNT) + message(STATUS "Using bmi2 instructions (-mbmi2 compiler flag set)") + set_target_properties(megahit_core PROPERTIES COMPILE_FLAGS "-mbmi2 -DUSE_BMI2 -mpopcnt") +endif() if (STATIC_BUILD) # TODO dirty set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--whole-archive -lpthread -Wl,--no-whole-archive -static") set_target_properties(megahit_core megahit_core_popcnt megahit_core_no_hw_accel PROPERTIES LINK_SEARCH_START_STATIC ON) set_target_properties(megahit_core megahit_core_popcnt megahit_core_no_hw_accel PROPERTIES LINK_SEARCH_END_STATIC ON) -endif (STATIC_BUILD) +endif () target_link_libraries(megahit_core ${ZLIB_LIBRARIES}) target_link_libraries(megahit_core_popcnt ${ZLIB_LIBRARIES}) From a410d48f1a84dc9af78a2ff7171f1bf36534c785 Mon Sep 17 00:00:00 2001 From: accopeland Date: Mon, 4 Apr 2022 22:26:26 +0000 Subject: [PATCH 3/3] In CMakeLists.txt, report aarch64/graviton2 case of missing bmi2 and popcount --- CMakeLists.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1308d1f..28513bb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -87,12 +87,16 @@ check_cxx_compiler_flag("-mpopcnt" USE_POPCNT) if(USE_POPCNT) message(STATUS "Using popcnt instructions (-mpopcnt compiler flag set)") set_target_properties(megahit_core_popcnt PROPERTIES COMPILE_FLAGS "-mpopcnt") +else() + message(STATUS "popcnt not found ") endif() check_cxx_compiler_flag("-mbmi2" USE_BMI2) if(USE_BMI2 AND USE_POPCNT) message(STATUS "Using bmi2 instructions (-mbmi2 compiler flag set)") set_target_properties(megahit_core PROPERTIES COMPILE_FLAGS "-mbmi2 -DUSE_BMI2 -mpopcnt") +else() + message(STATUS "bmi2 not found") endif() if (STATIC_BUILD)