From 84b0f065da7886d8a0b4a839bf6898471f65de3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jurij=20Pe=C4=8Dar?= Date: Thu, 17 Jul 2025 11:15:17 +0200 Subject: [PATCH 1/4] adding easyconfigs: dorado-1.0.2-foss-2024a-CUDA-12.6.0.eb --- .../dorado-1.0.2-foss-2024a-CUDA-12.6.0.eb | 116 ++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 easybuild/easyconfigs/d/dorado/dorado-1.0.2-foss-2024a-CUDA-12.6.0.eb diff --git a/easybuild/easyconfigs/d/dorado/dorado-1.0.2-foss-2024a-CUDA-12.6.0.eb b/easybuild/easyconfigs/d/dorado/dorado-1.0.2-foss-2024a-CUDA-12.6.0.eb new file mode 100644 index 000000000000..be306183ceec --- /dev/null +++ b/easybuild/easyconfigs/d/dorado/dorado-1.0.2-foss-2024a-CUDA-12.6.0.eb @@ -0,0 +1,116 @@ +easyblock = 'CMakeMake' + +name = 'dorado' +version = '1.0.2' +versionsuffix = '-CUDA-%(cudaver)s' + +homepage = 'https://github.com/nanoporetech/dorado' +description = """Dorado is a high-performance, easy-to-use, open source basecaller for Oxford Nanopore reads.""" + +toolchain = {'name': 'foss', 'version': '2024a'} +toolchainopts = {'usempi': True} + +source_urls = ['https://github.com/nanoporetech/dorado/archive/'] +sources = [{ + 'git_config': { + 'url': 'https://github.com/nanoporetech', + 'repo_name': name, + 'tag': 'v%(version)s', + 'recursive': True, + }, + 'filename': SOURCE_TAR_XZ, +}] +patches = [ + '%(name)s-1.0.0_dont_install_external_libraries.patch', +] +checksums = [ + {'dorado-1.0.2.tar.xz': + '6c07feb001de20f4d6bfc5b6199ecde159c836f67ac9e11002c89833a9d10bd6'}, + {'dorado-1.0.0_dont_install_external_libraries.patch': + 'feaaf0144e4e1c4fc2b6eff55254491b0d0da83833a8e72451b91a7df142f2dd'}, +] + +builddependencies = [ + ('binutils', '2.42'), + ('CMake', '3.29.3'), + ('patchelf', '0.18.0'), + ('git', '2.45.1'), +] + +dependencies = [ + ('CUDA', '12.6.0', '', SYSTEM), + ('PyTorch', '2.6.0', '-CUDA-%(cudaver)s'), + ('HDF5', '1.14.5'), + ('zstd', '1.5.6'), + ('HTSlib', '1.21'), + ('kineto', '20250715'), + ('libaec', '1.1.3'), +] + +# don't link to OpenSSL static libraries +# fix for CMake Error "missing: OPENSSL_CRYPTO_LIBRARY" (if only shared OpenSSL libraries are available) +preconfigopts = "sed -i '/OPENSSL_USE_STATIC_LIBS TRUE/d' ../dorado/cmake/OpenSSL.cmake && " +# link in the ssl and crypto libs, to fix: +# undefined reference to symbol 'SSL_get_peer_certificate@@OPENSSL_1_1_0' +preconfigopts += "sed -i 's/OpenSSL::SSL/ssl\\n crypto/g' ../dorado/dorado/utils/CMakeLists.txt && " + +# don't use vendored HTSlib, use provided HTSlib dependency +preconfigopts += "rm -r ../dorado/dorado/3rdparty/htslib/ && " +preconfigopts += "sed -i '/add_dependencies.*htslib_project/d' ../dorado/CMakeLists.txt && " +preconfigopts += "sed -i '/add_dependencies.*htslib_project/d' ../dorado/dorado/utils/CMakeLists.txt && " +preconfigopts += "sed -i '/Htslib.cmake/d' ../dorado/CMakeLists.txt && " +# link with -lhts, not -lhtslib +preconfigopts += "sed -i 's/htslib/hts/g' ../dorado/CMakeLists.txt && " +preconfigopts += "sed -i 's/htslib/hts/g' ../dorado/dorado/secondary/CMakeLists.txt && " +preconfigopts += "sed -i 's/htslib/hts/g' ../dorado/dorado/utils/CMakeLists.txt && " +preconfigopts += "sed -i 's/htslib/hts/g' ../dorado/dorado/torch_utils/CMakeLists.txt && " + +# disable treating warnings like errors by stripping out -Werror +# cfr. https://github.com/nanoporetech/dorado/issues/779 +preconfigopts += "sed -i 's/-Werror//g' ../dorado/cmake/Warnings.cmake && " +preconfigopts += "sed -i 's/enable_warnings_as_errors.*//g' ../dorado/CMakeLists.txt && " +preconfigopts += "sed -i 's/enable_warnings_as_errors.*//' ../dorado/dorado/utils/CMakeLists.txt && " +preconfigopts += "sed -i 's/enable_warnings_as_errors.*//' ../dorado/dorado/modbase/CMakeLists.txt && " +preconfigopts += "sed -i 's/enable_warnings_as_errors.*//' ../dorado/dorado/torch_utils/CMakeLists.txt && " + +# skip including a nonexistant file +preconfigopts += "head -442 ../dorado/cmake/Torch.cmake > /tmp/a && " +preconfigopts += "tail -31 ../dorado/cmake/Torch.cmake >> /tmp/a && " +preconfigopts += "mv /tmp/a ../dorado/cmake/Torch.cmake && " + +_copts = [ + "-DCUDA_TOOLKIT_ROOT_DIR=$EBROOTCUDA", + "-DCMAKE_CUDA_COMPILER=$EBROOTCUDA/bin/nvcc", + '-DOPENSSL_ROOT_DIR=$EBROOTOPENSSL', + "-DDORADO_LIBTORCH_DIR=$EBROOTPYTORCH/lib", + # add -pthread flag (in addition to -lpthread) to avoid linking error: + # in function `_GLOBAL__sub_I_mutex.cc': mutex.cc:(.text.startup+0x17): undefined reference to `pthread_atfork' + '-DCMAKE_C_FLAGS="$CFLAGS -pthread -lcublas"', +] + +configopts = ' '.join(_copts) + ' ' + +# disable CMake fiddling with RPATH when EasyBuild is configured to use RPATH linking +configopts += "$(if %(rpath_enabled)s; then " +configopts += "echo '-DCMAKE_SKIP_INSTALL_RPATH=YES -DCMAKE_SKIP_RPATH=YES'; fi) " + +# CUDA libraries that are copied to installdir need to be patched to have an RPATH section +# when EasyBuild is configured to use RPATH linking (required to pass RPATH sanity check); +# by default, CMake sets RUNPATH to '$ORIGIN' rather than RPATH (but that's disabled above) +postinstallcmds = [ + "if %(rpath_enabled)s; then " + " for lib in $(ls %(installdir)s/lib/lib{cu,nv}*.so*); do " + " echo setting RPATH in $lib;" + " patchelf --force-rpath --set-rpath '$ORIGIN' $lib;" + " done;" + "fi", +] + +sanity_check_paths = { + 'files': ['bin/dorado'], + 'dirs': [], +} + +sanity_check_commands = ["dorado basecaller --help"] + +moduleclass = 'bio' From 6b832950da03f644b56ea7ec6632d80e60b9dc32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jurij=20Pe=C4=8Dar?= Date: Thu, 17 Jul 2025 14:53:32 +0200 Subject: [PATCH 2/4] forgot to add kineto dependency --- .../k/kineto/kineto-20250715-GCC-13.3.0.eb | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 easybuild/easyconfigs/k/kineto/kineto-20250715-GCC-13.3.0.eb diff --git a/easybuild/easyconfigs/k/kineto/kineto-20250715-GCC-13.3.0.eb b/easybuild/easyconfigs/k/kineto/kineto-20250715-GCC-13.3.0.eb new file mode 100644 index 000000000000..3da0f36a9a03 --- /dev/null +++ b/easybuild/easyconfigs/k/kineto/kineto-20250715-GCC-13.3.0.eb @@ -0,0 +1,37 @@ +easyblock = 'CMakeMake' + +name = 'kineto' +version = '20250715' +local_commit = '16e2a56' + +homepage = 'https://github.com/pytorch/kineto' +description = "A CPU+GPU Profiling library that provides access to timeline traces and hardware performance counters" + +toolchain = {'name': 'GCC', 'version': '13.3.0'} + +source_urls = ['https://github.com/pytorch/kineto/archive/'] +sources = [{ + 'git_config': { + 'url': 'https://github.com/pytorch', + 'repo_name': name, + 'commit': local_commit, + 'recursive': True, + }, + 'filename': SOURCE_TAR_XZ, +}] +checksums = ['e88b59962204d47c944f708ebdc9d49491b4c225134d30f8497ee2cf687138bb'] + +builddependencies = [ + ('CMake', '3.29.3'), + ('Python', '3.12.3'), + ('CUDA', '12.6.0', '', SYSTEM), +] + +start_dir = 'libkineto' + +sanity_check_paths = { + 'files': ['lib/libkineto.a'], + 'dirs': ['include/kineto'], +} + +moduleclass = 'perf' From 915eb622f5dc578f13f71cd948e6a383bb6f36ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jurij=20Pe=C4=8Dar?= Date: Thu, 17 Jul 2025 16:41:55 +0200 Subject: [PATCH 3/4] fix kineto sha256 --- easybuild/easyconfigs/k/kineto/kineto-20250715-GCC-13.3.0.eb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/easybuild/easyconfigs/k/kineto/kineto-20250715-GCC-13.3.0.eb b/easybuild/easyconfigs/k/kineto/kineto-20250715-GCC-13.3.0.eb index 3da0f36a9a03..ff3bbac3472e 100644 --- a/easybuild/easyconfigs/k/kineto/kineto-20250715-GCC-13.3.0.eb +++ b/easybuild/easyconfigs/k/kineto/kineto-20250715-GCC-13.3.0.eb @@ -19,7 +19,7 @@ sources = [{ }, 'filename': SOURCE_TAR_XZ, }] -checksums = ['e88b59962204d47c944f708ebdc9d49491b4c225134d30f8497ee2cf687138bb'] +checksums = ['65e986bfc7664257b09563dceddb1dd0f4c0857af4696597d73b3bf970728db4'] builddependencies = [ ('CMake', '3.29.3'), From c23941f4f9119037994092275d92f686495fc518 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jurij=20Pe=C4=8Dar?= Date: Mon, 28 Jul 2025 09:38:14 +0200 Subject: [PATCH 4/4] add missing patch --- ...dorado-1.0.0_dont_install_external_libraries.patch | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 easybuild/easyconfigs/d/dorado/dorado-1.0.0_dont_install_external_libraries.patch diff --git a/easybuild/easyconfigs/d/dorado/dorado-1.0.0_dont_install_external_libraries.patch b/easybuild/easyconfigs/d/dorado/dorado-1.0.0_dont_install_external_libraries.patch new file mode 100644 index 000000000000..613365ee8a6d --- /dev/null +++ b/easybuild/easyconfigs/d/dorado/dorado-1.0.0_dont_install_external_libraries.patch @@ -0,0 +1,11 @@ +--- cmake/InstallRedistLibs.cmake.orig 2025-06-03 10:40:42.830160000 +0200 ++++ cmake/InstallRedistLibs.cmake 2025-06-03 10:41:52.532350000 +0200 +@@ -54,7 +54,7 @@ + else() + # bundle the libraries from the cuda toolkit + file(GLOB NATIVE_CUDA_LIBS "${CUDAToolkit_TARGET_DIR}/targets/${CMAKE_SYSTEM_PROCESSOR}-linux/lib/${LIB}") +- install(FILES ${NATIVE_CUDA_LIBS} DESTINATION lib COMPONENT redist_libs) ++ #install(FILES ${NATIVE_CUDA_LIBS} DESTINATION lib COMPONENT redist_libs) + endif() + endforeach() +