Skip to content

use generic version of RAxML v8.2.13 as dependency for bcgTree and Parsnp#23975

Merged
lexming merged 3 commits intoeasybuilders:developfrom
ocaisa:RAxML_update
Nov 18, 2025
Merged

use generic version of RAxML v8.2.13 as dependency for bcgTree and Parsnp#23975
lexming merged 3 commits intoeasybuilders:developfrom
ocaisa:RAxML_update

Conversation

@ocaisa
Copy link
Copy Markdown
Member

@ocaisa ocaisa commented Sep 23, 2025

A custom version of RAxML with AVX2 optimisation was being used as a dependency in some places. This doesn't work on non-x86_64 so rather switch to a more generic build but using the EasyBuild CFLAGS which allows the compiler to use native CPU optimisations.

If there is a concern about performance loss here, RAxML-NG should really be used anyway in that scenario.

@ocaisa
Copy link
Copy Markdown
Member Author

ocaisa commented Sep 23, 2025

@boegelbot please test @ jsc-zen3

@boegelbot
Copy link
Copy Markdown
Collaborator

@ocaisa: 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=23975 EB_ARGS= EB_CONTAINER= EB_REPO=easybuild-easyconfigs EB_BRANCH=develop /opt/software/slurm/bin/sbatch --job-name test_PR_23975 --ntasks=8 ~/boegelbot/eb_from_pr_upload_jsc-zen3.sh' executed!

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

Test results coming soon (I hope)...

Details

- notification for comment with ID 3324059812 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).

@boegelbot
Copy link
Copy Markdown
Collaborator

Test report by @boegelbot
SUCCESS
Build succeeded for 5 out of 5 (5 easyconfigs in total)
jsczen3c1.int.jsc-zen3.fz-juelich.de - Linux Rocky Linux 9.6, x86_64, AMD EPYC-Milan Processor (zen3), Python 3.9.21
See https://gist.github.com/boegelbot/7910fe6e5211446847e06a8379a16992 for a full test report.

@boegel boegel added this to the release after 5.1.2 (5.2.0?) milestone Sep 24, 2025
@boegel boegel changed the title {bio}[foss/2023a,foss/2023b] Create and use generic version of RAxML v8.2.13 {bio}[foss/2023a,foss/2023b] Create and use generic version of RAxML v8.2.13 as dependency for bcgTree and Parsnp Sep 24, 2025

buildopts = '-f Makefile.AVX2.gcc CC="$CC" && rm *.o && '
buildopts += 'make -j %(parallel)s -f Makefile.AVX2.PTHREADS.gcc CC="$CC" && rm *.o && '
buildopts += 'make -j %(parallel)s -f Makefile.AVX2.HYBRID.gcc CC="$CC"'
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ocaisa Did you check how these Makefiles differ from Makefile.PTHREADS.gcc and Makefile.HYBRID.gcc?

Is it really only changes in compiler options?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes I checked them and there are two things done differently:

avxLikelihood.o : avxLikelihood.c $(GLOBAL_DEPS)
		$(CC) $(CFLAGS) -mavx2 -D_FMA -march=core-avx2 -c -o avxLikelihood.o avxLikelihood.c

fastDNAparsimony.o : fastDNAparsimony.c $(GLOBAL_DEPS)
		   $(CC) $(CFLAGS) -mavx -c -o fastDNAparsimony.o fastDNAparsimony.c

The second is only an additional compilation flag.

The first is a complete file with optimisations which gets picked up via a make flag. However, that file is 10+ years old, I'm sure it does what is was intended for (AVX2 optimisations) but if you are really looking for performance RAxML-NG claims to have the upper hand.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't have any way to test the performance between the two builds, but I really wonder if it is worth our while to introduce dependency branching for something that (right now) doesn't even use our standard compiler optimisations.

@boegel boegel changed the title {bio}[foss/2023a,foss/2023b] Create and use generic version of RAxML v8.2.13 as dependency for bcgTree and Parsnp use generic version of RAxML v8.2.13 as dependency for bcgTree and Parsnp Sep 24, 2025
@boegel
Copy link
Copy Markdown
Member

boegel commented Oct 8, 2025

I totally forgot about @lexming's easyblock PR that tackles the same problem in a different way:

@github-actions github-actions Bot added the update label Oct 8, 2025
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Oct 8, 2025

Updated software RAxML-8.2.13-gompi-2023b.eb

Diff against RAxML-8.2.13-gompi-2023a.eb

easybuild/easyconfigs/r/RAxML/RAxML-8.2.13-gompi-2023a.eb

diff --git a/easybuild/easyconfigs/r/RAxML/RAxML-8.2.13-gompi-2023a.eb b/easybuild/easyconfigs/r/RAxML/RAxML-8.2.13-gompi-2023b.eb
index 405f5c6857..7f9c007e22 100644
--- a/easybuild/easyconfigs/r/RAxML/RAxML-8.2.13-gompi-2023a.eb
+++ b/easybuild/easyconfigs/r/RAxML/RAxML-8.2.13-gompi-2023b.eb
@@ -6,7 +6,7 @@ version = '8.2.13'
 homepage = 'https://github.com/stamatak/standard-RAxML'
 description = "RAxML search algorithm for maximum likelihood based inference of phylogenetic trees."
 
-toolchain = {'name': 'gompi', 'version': '2023a'}
+toolchain = {'name': 'gompi', 'version': '2023b'}
 
 source_urls = ['https://github.com/stamatak/standard-RAxML/archive/']
 sources = ['v%(version)s.tar.gz']
Diff against RAxML-8.2.12-gompi-2022b-avx2.eb

easybuild/easyconfigs/r/RAxML/RAxML-8.2.12-gompi-2022b-avx2.eb

diff --git a/easybuild/easyconfigs/r/RAxML/RAxML-8.2.12-gompi-2022b-avx2.eb b/easybuild/easyconfigs/r/RAxML/RAxML-8.2.13-gompi-2023b.eb
index 8b13f18b2d..7f9c007e22 100644
--- a/easybuild/easyconfigs/r/RAxML/RAxML-8.2.12-gompi-2022b-avx2.eb
+++ b/easybuild/easyconfigs/r/RAxML/RAxML-8.2.13-gompi-2023b.eb
@@ -1,32 +1,34 @@
 easyblock = 'MakeCp'
 
 name = 'RAxML'
-version = '8.2.12'
-versionsuffix = '-avx2'
+version = '8.2.13'
 
 homepage = 'https://github.com/stamatak/standard-RAxML'
 description = "RAxML search algorithm for maximum likelihood based inference of phylogenetic trees."
 
-toolchain = {'name': 'gompi', 'version': '2022b'}
-toolchainopts = {'usempi': True}
+toolchain = {'name': 'gompi', 'version': '2023b'}
 
 source_urls = ['https://github.com/stamatak/standard-RAxML/archive/']
-sources = ['v%(version)s.zip']
-checksums = ['abe6978c6027e897ebed67066836e4eadd57ecd0d042045634424dd001e86105']
+sources = ['v%(version)s.tar.gz']
+patches = ['raxml_8.2.13_respect_eb_settings.patch']
+checksums = [
+    '28e500793324bd7d330b396ef27ea49c9186fa5e1edb3d5439036dc6c33e6067',
+    '66412303ccbb2720e3dbb5acb1179fe441a2aaa563d033c5f0292f5ba1e08c3b',
+]
+
+buildopts = '-f Makefile.gcc && rm *.o && '
+buildopts += 'make -j %(parallel)s -f  Makefile.PTHREADS.gcc && rm *.o && '
+buildopts += 'make -j %(parallel)s -f  Makefile.MPI.gcc && rm *.o && '
+buildopts += 'make -j %(parallel)s -f Makefile.HYBRID.gcc '
 
-buildopts = '-f Makefile.AVX2.gcc CC="$CC" && rm *.o && '
-buildopts += 'make -j %(parallel)s -f Makefile.AVX2.PTHREADS.gcc CC="$CC" && rm *.o && '
-buildopts += 'make -j %(parallel)s -f Makefile.AVX2.HYBRID.gcc CC="$CC"'
 
 files_to_copy = [
-    (["raxmlHPC-AVX2", "raxmlHPC-PTHREADS-AVX2", "raxmlHPC-HYBRID-AVX2"], "bin"),
-    "usefulScripts", "README", "manual"
+    (["raxmlHPC", "raxmlHPC-PTHREADS", "raxmlHPC-HYBRID", "raxmlHPC-MPI"], "bin"),
+    "usefulScripts", "README.md", "manual",
 ]
 
-postinstallcmds = ["cd %(installdir)s/bin && ln -s raxmlHPC-AVX2 raxmlHPC"]
-
 sanity_check_paths = {
-    'files': ['bin/raxmlHPC'],
+    'files': ['bin/raxmlHPC%s' % x for x in ['', '-PTHREADS', '-HYBRID', '-MPI']],
     'dirs': [],
 }
 
Diff against RAxML-8.2.12-gompi-2021b-hybrid-avx2.eb

easybuild/easyconfigs/r/RAxML/RAxML-8.2.12-gompi-2021b-hybrid-avx2.eb

diff --git a/easybuild/easyconfigs/r/RAxML/RAxML-8.2.12-gompi-2021b-hybrid-avx2.eb b/easybuild/easyconfigs/r/RAxML/RAxML-8.2.13-gompi-2023b.eb
index 7be898198d..7f9c007e22 100644
--- a/easybuild/easyconfigs/r/RAxML/RAxML-8.2.12-gompi-2021b-hybrid-avx2.eb
+++ b/easybuild/easyconfigs/r/RAxML/RAxML-8.2.13-gompi-2023b.eb
@@ -1,27 +1,34 @@
 easyblock = 'MakeCp'
 
 name = 'RAxML'
-version = '8.2.12'
-versionsuffix = '-hybrid-avx2'
+version = '8.2.13'
 
 homepage = 'https://github.com/stamatak/standard-RAxML'
 description = "RAxML search algorithm for maximum likelihood based inference of phylogenetic trees."
 
-toolchain = {'name': 'gompi', 'version': '2021b'}
-toolchainopts = {'usempi': True}
+toolchain = {'name': 'gompi', 'version': '2023b'}
 
 source_urls = ['https://github.com/stamatak/standard-RAxML/archive/']
-sources = ['v%(version)s.zip']
-checksums = ['abe6978c6027e897ebed67066836e4eadd57ecd0d042045634424dd001e86105']
+sources = ['v%(version)s.tar.gz']
+patches = ['raxml_8.2.13_respect_eb_settings.patch']
+checksums = [
+    '28e500793324bd7d330b396ef27ea49c9186fa5e1edb3d5439036dc6c33e6067',
+    '66412303ccbb2720e3dbb5acb1179fe441a2aaa563d033c5f0292f5ba1e08c3b',
+]
 
-buildopts = '-f Makefile.AVX2.HYBRID.gcc CC="$CC"'
+buildopts = '-f Makefile.gcc && rm *.o && '
+buildopts += 'make -j %(parallel)s -f  Makefile.PTHREADS.gcc && rm *.o && '
+buildopts += 'make -j %(parallel)s -f  Makefile.MPI.gcc && rm *.o && '
+buildopts += 'make -j %(parallel)s -f Makefile.HYBRID.gcc '
 
-files_to_copy = [(["raxmlHPC-HYBRID-AVX2"], "bin"), "usefulScripts", "README", "manual"]
 
-postinstallcmds = ["cd %(installdir)s/bin && ln -s raxmlHPC-HYBRID-AVX2 raxmlHPC"]
+files_to_copy = [
+    (["raxmlHPC", "raxmlHPC-PTHREADS", "raxmlHPC-HYBRID", "raxmlHPC-MPI"], "bin"),
+    "usefulScripts", "README.md", "manual",
+]
 
 sanity_check_paths = {
-    'files': ['bin/raxmlHPC'],
+    'files': ['bin/raxmlHPC%s' % x for x in ['', '-PTHREADS', '-HYBRID', '-MPI']],
     'dirs': [],
 }
 

@ocaisa
Copy link
Copy Markdown
Member Author

ocaisa commented Oct 8, 2025

@boegelbot please test @ jsc-zen3

@ocaisa
Copy link
Copy Markdown
Member Author

ocaisa commented Oct 8, 2025

This is (I believe) more correct than what was there before. We now build 4 versions of the package:

  • serial
  • threaded
  • mpi-enabled
  • hybrid (MPI/threaded)

@boegelbot
Copy link
Copy Markdown
Collaborator

@ocaisa: 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=23975 EB_ARGS= EB_CONTAINER= EB_REPO=easybuild-easyconfigs EB_BRANCH=develop /opt/software/slurm/bin/sbatch --job-name test_PR_23975 --ntasks=8 ~/boegelbot/eb_from_pr_upload_jsc-zen3.sh' executed!

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

Test results coming soon (I hope)...

Details

- notification for comment with ID 3381101862 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).

@boegelbot
Copy link
Copy Markdown
Collaborator

Test report by @boegelbot
SUCCESS
Build succeeded for 5 out of 5 (5 easyconfigs in total)
jsczen3c1.int.jsc-zen3.fz-juelich.de - Linux Rocky Linux 9.6, x86_64, AMD EPYC-Milan Processor (zen3), Python 3.9.21
See https://gist.github.com/boegelbot/df9e2e464af857d4189d8d9462697fe0 for a full test report.

@boegel
Copy link
Copy Markdown
Member

boegel commented Oct 22, 2025

@lexming Can you take a look at this?

Comment thread easybuild/easyconfigs/r/RAxML/raxml_8.2.13_respect_eb_settings.patch Outdated
@ocaisa
Copy link
Copy Markdown
Member Author

ocaisa commented Oct 22, 2025

@boegelbot please test @ jsc-zen3

@boegelbot
Copy link
Copy Markdown
Collaborator

@ocaisa: 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=23975 EB_ARGS= EB_CONTAINER= EB_REPO=easybuild-easyconfigs EB_BRANCH=develop /opt/software/slurm/bin/sbatch --job-name test_PR_23975 --ntasks=8 ~/boegelbot/eb_from_pr_upload_jsc-zen3.sh' executed!

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

Test results coming soon (I hope)...

Details

- notification for comment with ID 3432523235 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).

@boegelbot
Copy link
Copy Markdown
Collaborator

Test report by @boegelbot
SUCCESS
Build succeeded for 5 out of 5 (5 easyconfigs in total)
jsczen3c2.int.jsc-zen3.fz-juelich.de - Linux Rocky Linux 9.6, x86_64, AMD EPYC-Milan Processor (zen3), Python 3.9.21
See https://gist.github.com/boegelbot/9ff0ce54b70a301a4509f29b9fa0a00a for a full test report.

Copy link
Copy Markdown
Contributor

@lexming lexming left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@lexming
Copy link
Copy Markdown
Contributor

lexming commented Nov 18, 2025

Merging, thanks @ocaisa !

@lexming lexming merged commit 347d5c2 into easybuilders:develop Nov 18, 2025
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants