Skip to content

{ai,lib,tools}[GCCcore/14.2.0] CTranslate2 v4.8.1, CCCL v2.7.0, cpu_features v0.10.1 w/ CUDA 12.8.0 - #26603

Open
pavelToman wants to merge 3 commits into
easybuilders:developfrom
pavelToman:20260805163335_new_pr_CTranslate2481
Open

{ai,lib,tools}[GCCcore/14.2.0] CTranslate2 v4.8.1, CCCL v2.7.0, cpu_features v0.10.1 w/ CUDA 12.8.0#26603
pavelToman wants to merge 3 commits into
easybuilders:developfrom
pavelToman:20260805163335_new_pr_CTranslate2481

Conversation

@pavelToman

@pavelToman pavelToman commented Aug 5, 2026

Copy link
Copy Markdown
Collaborator

(created using eb --new-pr)
resolves vscentrum/vsc-software-stack#613

…-2.7.0-GCCcore-14.2.0-CUDA-12.8.0.eb, cpu_features-0.10.1-GCCcore-14.2.0.eb and patches: CTranslate2-4.8.1_fix-tests.patch, CTranslate2-4.8.1_use-system-dependencies.patch
@github-actions github-actions Bot added the 2025a issues & PRs related to 2025a common toolchains label Aug 5, 2026
@github-actions

github-actions Bot commented Aug 5, 2026

Copy link
Copy Markdown

Updated software CTranslate2-4.8.1-foss-2025a-CUDA-12.8.0.eb

Diff against CTranslate2-4.5.0-foss-2023a-CUDA-12.6.0.eb

easybuild/easyconfigs/c/CTranslate2/CTranslate2-4.5.0-foss-2023a-CUDA-12.6.0.eb

diff --git a/easybuild/easyconfigs/c/CTranslate2/CTranslate2-4.5.0-foss-2023a-CUDA-12.6.0.eb b/easybuild/easyconfigs/c/CTranslate2/CTranslate2-4.8.1-foss-2025a-CUDA-12.8.0.eb
index a6376dba2e..984084a402 100644
--- a/easybuild/easyconfigs/c/CTranslate2/CTranslate2-4.5.0-foss-2023a-CUDA-12.6.0.eb
+++ b/easybuild/easyconfigs/c/CTranslate2/CTranslate2-4.8.1-foss-2025a-CUDA-12.8.0.eb
@@ -1,13 +1,13 @@
 easyblock = 'CMakeMake'
 
 name = 'CTranslate2'
-version = '4.5.0'
+version = '4.8.1'
 versionsuffix = '-CUDA-%(cudaver)s'
 
 homepage = 'https://opennmt.net/CTranslate2/'
 description = "Fast inference engine for Transformer models."
 
-toolchain = {'name': 'foss', 'version': '2023a'}
+toolchain = {'name': 'foss', 'version': '2025a'}
 
 source_urls = ['https://github.com/OpenNMT/CTranslate2/archive/']
 sources = [{
@@ -15,69 +15,81 @@ sources = [{
     "filename": SOURCE_TAR_GZ,
 }]
 patches = [
-    'CTranslate2-4.5.0_fix-third-party.patch',
-    'CTranslate2-4.5.0_fix-tests.patch',
-    'CTranslate2-4.5.0_replace-cxxopts.patch',
+    'CTranslate2-4.8.1_use-system-dependencies.patch',
+    'CTranslate2-4.8.1_fix-tests.patch',
 ]
 checksums = [
-    {'CTranslate2-4.5.0.tar.gz': 'f3040c7c3da5dde022fdc16906c279f3f936c6e79f3df8f998c908bb01a77cfe'},
-    {'CTranslate2-4.5.0_fix-third-party.patch': '45ab6d19954010dc5d515498a0827f0b13992d88b9691ab73ab27fee1114e3e3'},
-    {'CTranslate2-4.5.0_fix-tests.patch': '73123eafe612538354be5aa96c750199e1a219a5316800848c3894c1cc6ca2ad'},
-    {'CTranslate2-4.5.0_replace-cxxopts.patch': 'e378969c2968e2fd57863956a4d2f267731a49d1b890dcc45593d6a310531271'},
+    {'CTranslate2-4.8.1.tar.gz': '05c4e8a42c8573d0c79782e8408037c16db143334b6f4ee1cef23aa3b08a4dfa'},
+    {'CTranslate2-4.8.1_use-system-dependencies.patch':
+     '11efa9d05f9668bc21b09df58e022be0e4fbc974c80f3fcb099cb7df22c7b69d'},
+    {'CTranslate2-4.8.1_fix-tests.patch': 'b5b9c5997c7c00cb457752df74dc262b45e1b871ca9d89d48eecd213b68f9645'},
 ]
 
 builddependencies = [
-    ('CMake', '3.26.3'),
-    ('pybind11', '2.11.1'),
-    ('cxxopts', '3.0.0', '', SYSTEM),
-    ('spdlog', '1.11.0'),
-    ('cpu_features', '0.9.0'),
+    ('CMake', '3.31.3'),
+    ('pybind11', '2.13.6'),
+    ('spdlog', '1.15.3'),
+    ('cpu_features', '0.10.1'),
+    ('googletest', '1.17.0'),
 ]
-
 dependencies = [
-    ('CUDA', '12.6.0', '', SYSTEM),
-    ('Python', '3.11.3'),
-    ('SciPy-bundle', '2023.07'),
-    ('googletest', '1.13.0'),
-    ('PyYAML', '6.0'),
-    ('cuDNN', '9.5.0.50', versionsuffix, SYSTEM),
+    ('CUDA', '12.8.0', '', SYSTEM),
+    ('Python', '3.13.1'),
+    ('SciPy-bundle', '2025.06'),
+    ('PyYAML', '6.0.2'),
 ]
 
-# make sure that CTranslate2 libraries are linked to FlexiBLAS, not OpenBLAS
-preconfigopts = "export CMAKE_INCLUDE_PATH=$EBROOTFLEXIBLAS/include/flexiblas:${CMAKE_INCLUDE_PATH} && "
-preconfigopts += "sed -i 's/openblas/flexiblas/g' %(start_dir)s/CMakeLists.txt && "
-
-configopts = '-DOPENMP_RUNTIME=COMP -DWITH_CUDA=ON -DWITH_MKL=OFF '
-configopts += '-DOPENBLAS_INCLUDE_DIR="$EBROOTFLEXIBLAS/include" -DWITH_OPENBLAS=ON '
-configopts += '-DWITH_CUDNN=ON '
-configopts += '-DENABLE_CPU_DISPATCH=OFF '
-
-prebuildopts = 'export CT2_VERBOSE=3 && '
+configopts = ' '.join([
+    '-DWITH_CUDA=ON',
+    # Since v4.6.3, CTranslate2 has a native CUDA Conv1d implementation
+    '-DWITH_CUDNN=OFF',
+    '-DWITH_MKL=OFF',
+    '-DWITH_OPENBLAS=ON',
+    '-DOPENBLAS_INCLUDE_DIR="$EBROOTFLEXIBLAS/include/flexiblas"',
+    '-DOPENBLAS_LIBRARY="$EBROOTFLEXIBLAS/lib/libflexiblas.so"',
+    '-DOPENMP_RUNTIME=COMP',
+    # toolchain uses -march=native, which conflicts with CTranslate2's per-ISA runtime dispatch objects
+    '-DENABLE_CPU_DISPATCH=OFF',
+    # standalone C++ ct2-translator client is not required
+    '-DBUILD_CLI=OFF',
+    '-DBUILD_TESTS=ON',
+    '-DCUDA_ARCH_LIST="%(cuda_cc_space_sep)s"',
+])
 
 exts_defaultclass = 'PythonPackage'
 exts_default_options = {
-    'source_urls': [PYPI_SOURCE],
     'installopts': '',
     'runtest': False,
 }
 
 exts_list = [
     ('ctranslate2', version, {
+        'preinstallopts': "export CTRANSLATE2_ROOT=%(installdir)s && ",
         'sources': ['CTranslate2-%(version)s.tar.gz'],
         'start_dir': 'python',
-        'checksums': ['f3040c7c3da5dde022fdc16906c279f3f936c6e79f3df8f998c908bb01a77cfe'],
+        'checksums': ['05c4e8a42c8573d0c79782e8408037c16db143334b6f4ee1cef23aa3b08a4dfa'],
     }),
 ]
 
+test_cmd = './tests/ctranslate2_test %(start_dir)s/tests/data'
+runtest = True
+
 sanity_check_paths = {
-    'files': ['bin/ct2-translator', 'lib/libctranslate2.%s' % SHLIB_EXT],
-    'dirs': ['include/ctranslate2', 'lib/python%(pyshortver)s/site-packages'],
+    'files': [
+        'bin/ct2-transformers-converter',
+        'include/ctranslate2/translator.h',
+        'lib/libctranslate2.so',
+    ],
+    'dirs': [
+        'lib/cmake/ctranslate2',
+        'lib/python%(pyshortver)s/site-packages/ctranslate2',
+    ],
 }
 
 sanity_check_commands = [
-    "ct2-translator --help",
-    "python -c 'import ctranslate2'",
-    "python -m pip check",
+    "python -s -c 'import ctranslate2'",
+    "python -s -m pip check",
+    "ldd %(installdir)s/lib/libctranslate2.so | grep -q 'libflexiblas\\.so'",
 ]
 
 moduleclass = 'ai'

Updated software cpu_features-0.10.1-GCCcore-14.2.0.eb

Diff against cpu_features-0.9.0-GCCcore-12.3.0.eb

easybuild/easyconfigs/c/cpu_features/cpu_features-0.9.0-GCCcore-12.3.0.eb

diff --git a/easybuild/easyconfigs/c/cpu_features/cpu_features-0.9.0-GCCcore-12.3.0.eb b/easybuild/easyconfigs/c/cpu_features/cpu_features-0.10.1-GCCcore-14.2.0.eb
index 1d352eaf0a..9ea80dde05 100644
--- a/easybuild/easyconfigs/c/cpu_features/cpu_features-0.9.0-GCCcore-12.3.0.eb
+++ b/easybuild/easyconfigs/c/cpu_features/cpu_features-0.10.1-GCCcore-14.2.0.eb
@@ -1,23 +1,23 @@
 # This file is an EasyBuild reciPY as per https://github.com/easybuilders/easybuild
-# Author: Denis Kristak, update: Pavel Tománek
+# Author: Denis Kristak, update: Pavel Tomanek
 easyblock = 'CMakeMake'
 
 name = 'cpu_features'
-version = '0.9.0'
+version = '0.10.1'
 
 homepage = 'https://github.com/google/cpu_features'
 description = """A cross-platform C library to retrieve CPU features (such as available instructions) at runtime."""
 
-toolchain = {'name': 'GCCcore', 'version': '12.3.0'}
+toolchain = {'name': 'GCCcore', 'version': '14.2.0'}
 toolchainopts = {'pic': True}
 
 source_urls = ['https://github.com/google/cpu_features/archive/']
 sources = ['v%(version)s.tar.gz']
-checksums = ['bdb3484de8297c49b59955c3b22dba834401bc2df984ef5cfc17acbe69c5018e']
+checksums = ['52639b380fced11d738f8b151dbfee63fb94957731d07f1966c812e5b90cbad4']
 
 builddependencies = [
-    ('CMake', '3.26.3'),
-    ('binutils', '2.40'),
+    ('CMake', '3.31.3'),
+    ('binutils', '2.42'),
 ]
 
 modextrapaths = {MODULE_LOAD_ENV_HEADERS: 'include/cpu_features'}

@pavelToman pavelToman added the AI-assisted AI-assisted contributions label Aug 5, 2026
@pavelToman

Copy link
Copy Markdown
Collaborator Author

@boegelbot please test @ jsc-zen3-a100

@boegelbot

Copy link
Copy Markdown
Collaborator

@pavelToman: Request for testing this PR well received on jsczen3l1.int.jsc-zen3.fz-juelich.de

PR test command 'if [[ develop != 'develop' ]]; then EB_BRANCH=develop ./easybuild_develop.sh 2> /dev/null 1>&2; EB_PREFIX=/home/boegelbot/easybuild/develop source init_env_easybuild_develop.sh; fi; EB_PR=26603 EB_ARGS= EB_CONTAINER= EB_REPO=easybuild-easyconfigs EB_BRANCH=develop /opt/software/slurm/bin/sbatch --job-name test_PR_26603 --ntasks=8 --partition=jsczen3g --gres=gpu:1 ~/boegelbot/eb_from_pr_upload_jsc-zen3.sh' executed!

  • exit code: 0
  • output:
Submitted batch job 11098

Test results coming soon (I hope)...

Details

- notification for comment with ID 5193147537 processed

Message to humans: this is just bookkeeping information for me,
it is of no use to you (unless you think I have a bug, which I don't).

@pavelToman

Copy link
Copy Markdown
Collaborator Author

Test report by @pavelToman
SUCCESS
Build succeeded for 3 out of 3 (total: 9 mins 21 secs) (3 easyconfigs in total)
node4004.donphan.os - Linux RHEL 9.6, x86_64, Intel(R) Xeon(R) Gold 6240 CPU @ 2.60GHz, 1 x NVIDIA NVIDIA A2, 595.71.05, Python 3.9.21
See https://gist.github.com/pavelToman/8d10be5ffbac92f7abec21bc667341cc for a full test report.

@boegelbot

Copy link
Copy Markdown
Collaborator

Test report by @boegelbot
SUCCESS
Build succeeded for 3 out of 3 (total: 9 mins 6 secs) (3 easyconfigs in total)
jsczen3g1.int.jsc-zen3.fz-juelich.de - Linux Rocky Linux 9.8, x86_64, AMD EPYC-Milan Processor (zen3), 1 x NVIDIA NVIDIA A100 80GB PCIe, 590.48.01, Python 3.9.25
See https://gist.github.com/boegelbot/6e3edaa5409dd0bc3c6b03f48dca6e65 for a full test report.

@Thyre

Thyre commented Aug 6, 2026

Copy link
Copy Markdown
Collaborator

I'm surprised that we still need CCCL. CUDA v12.8.0 should have everything included already.
Or are we using something that is missing from CUDA v12.8 but present in a newer CCCL version?

Edit: The CCCL version here matches the one bundled with CUDA, see https://docs.nvidia.com/cuda/archive/12.8.0/cuda-toolkit-release-notes/index.html#id4

@pavelToman

pavelToman commented Aug 6, 2026

Copy link
Copy Markdown
Collaborator Author

I'm surprised that we still need CCCL. CUDA v12.8.0 should have everything included already. Or are we using something that is missing from CUDA v12.8 but present in a newer CCCL version?

Edit: The CCCL version here matches the one bundled with CUDA, see https://docs.nvidia.com/cuda/archive/12.8.0/cuda-toolkit-release-notes/index.html#id4

Thank you for the review. You are right, the CCCL is already included in CUDA module so no need to add EC for this.

@pavelToman

Copy link
Copy Markdown
Collaborator Author

@boegelbot please test @ jsc-zen3-a100

@boegelbot

Copy link
Copy Markdown
Collaborator

@pavelToman: Request for testing this PR well received on jsczen3l1.int.jsc-zen3.fz-juelich.de

PR test command 'if [[ develop != 'develop' ]]; then EB_BRANCH=develop ./easybuild_develop.sh 2> /dev/null 1>&2; EB_PREFIX=/home/boegelbot/easybuild/develop source init_env_easybuild_develop.sh; fi; EB_PR=26603 EB_ARGS= EB_CONTAINER= EB_REPO=easybuild-easyconfigs EB_BRANCH=develop /opt/software/slurm/bin/sbatch --job-name test_PR_26603 --ntasks=8 --partition=jsczen3g --gres=gpu:1 ~/boegelbot/eb_from_pr_upload_jsc-zen3.sh' executed!

  • exit code: 0
  • output:
Submitted batch job 11107

Test results coming soon (I hope)...

Details

- notification for comment with ID 5202423423 processed

Message to humans: this is just bookkeeping information for me,
it is of no use to you (unless you think I have a bug, which I don't).

@pavelToman

Copy link
Copy Markdown
Collaborator Author

Test report by @pavelToman
SUCCESS
Build succeeded for 2 out of 2 (total: 6 mins 22 secs) (2 easyconfigs in total)
node4014.donphan.os - Linux RHEL 9.6, x86_64, Intel(R) Xeon(R) Gold 6240 CPU @ 2.60GHz, 1 x NVIDIA NVIDIA A2, 595.71.05, Python 3.9.21
See https://gist.github.com/pavelToman/3a5403757fdbf4f78b182e5dcab58d4b for a full test report.

@boegelbot

Copy link
Copy Markdown
Collaborator

Test report by @boegelbot
SUCCESS
Build succeeded for 2 out of 2 (total: 6 mins 4 secs) (2 easyconfigs in total)
jsczen3g1.int.jsc-zen3.fz-juelich.de - Linux Rocky Linux 9.8, x86_64, AMD EPYC-Milan Processor (zen3), 1 x NVIDIA NVIDIA A100 80GB PCIe, 590.48.01, Python 3.9.25
See https://gist.github.com/boegelbot/5595d2c69e43a4926fbaf330361a4f2e for a full test report.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

2025a issues & PRs related to 2025a common toolchains AI-assisted AI-assisted contributions update

Projects

None yet

Development

Successfully merging this pull request may close these issues.

whisperx

3 participants