Skip to content

{lib}[GCC/14.2.0] pocl v7.0#23615

Merged
Crivella merged 6 commits intoeasybuilders:developfrom
sara-nl:20250808143338_new_pr_pocl70
Sep 15, 2025
Merged

{lib}[GCC/14.2.0] pocl v7.0#23615
Crivella merged 6 commits intoeasybuilders:developfrom
sara-nl:20250808143338_new_pr_pocl70

Conversation

@paulmelis
Copy link
Copy Markdown
Contributor

@paulmelis paulmelis commented Aug 8, 2025

@github-actions github-actions bot added the update label Aug 8, 2025
@github-actions
Copy link
Copy Markdown

github-actions bot commented Aug 8, 2025

Updated software pocl-7.0-GCC-14.2.0.eb

Diff against pocl-6.0-GCC-13.3.0.eb

easybuild/easyconfigs/p/pocl/pocl-6.0-GCC-13.3.0.eb

diff --git a/easybuild/easyconfigs/p/pocl/pocl-6.0-GCC-13.3.0.eb b/easybuild/easyconfigs/p/pocl/pocl-7.0-GCC-14.2.0.eb
index 246d646e38..ef7aa1a8aa 100644
--- a/easybuild/easyconfigs/p/pocl/pocl-6.0-GCC-13.3.0.eb
+++ b/easybuild/easyconfigs/p/pocl/pocl-7.0-GCC-14.2.0.eb
@@ -3,38 +3,37 @@
 easyblock = 'CMakeNinja'
 
 name = 'pocl'
-version = '6.0'
+version = '7.0'
 
 homepage = 'http://portablecl.org'
-description = """PoCL is a portable open source (MIT-licensed) implementation
-of the OpenCL standard (1.2 with some 2.0 features supported)."""
+description = """PoCL is a conformant implementation (for CPU and Level Zero GPU targets) of
+the OpenCL 3.0 standard which can be easily adapted for new targets."""
 
-toolchain = {'name': 'GCC', 'version': '13.3.0'}
+toolchain = {'name': 'GCC', 'version': '14.2.0'}
 
 source_urls = ['https://github.com/pocl/pocl/archive/']
 sources = ['v%(version)s.tar.gz']
-patches = []
 checksums = [
-    'de9710223fc1855f833dbbf42ea2681e06aa8ec0464f0201104dc80a74dfd1f2',  # v6.0.tar.gz
+    'f55caba8c3ce12bec7b683ce55104c7555e19457fc2ac72c6f035201e362be08',  # v7.0.tar.gz
 ]
 
 builddependencies = [
-    ('CMake', '3.29.3'),
+    ('CMake', '3.31.3'),
     ('Ninja', '1.12.1'),
-    ('pkgconf', '2.2.0'),
+    ('pkgconf', '2.3.0'),
+    ('LLVM', '20.1.7'),
 ]
 
 dependencies = [
-    ('Clang', '18.1.8'),
-    ('hwloc', '2.10.0'),
-    ('libtool', '2.4.7'),
-    ('libxml2', '2.12.7'),
+    ('hwloc', '2.11.2'),
+    ('libtool', '2.5.4'),
+    ('libxml2', '2.13.4'),
 ]
 
 # disable attempt to find an ICD loader, always build libOpenCL.so
 configopts = "-DENABLE_ICD=0 -DINSTALL_OPENCL_HEADERS=1 "
 # make sure we use the easybuild Clang
-configopts += "-DWITH_LLVM_CONFIG=$EBROOTCLANG/bin/llvm-config -DSTATIC_LLVM=ON "
+configopts += "-DWITH_LLVM_CONFIG=$EBROOTLLVM/bin/llvm-config -DSTATIC_LLVM=ON "
 # avoid host CPU auto-detection (which may fail on recent CPUs)
 configopts += "-DLLC_HOST_CPU=native "
 
@@ -43,4 +42,8 @@ sanity_check_paths = {
     'dirs': ['include/CL', 'lib64/pkgconfig'],
 }
 
+sanity_check_commands = [
+    'poclcc -h',
+]
+
 moduleclass = 'lib'
Diff against pocl-4.0-GCC-12.3.0-CUDA-12.1.1.eb

easybuild/easyconfigs/p/pocl/pocl-4.0-GCC-12.3.0-CUDA-12.1.1.eb

diff --git a/easybuild/easyconfigs/p/pocl/pocl-4.0-GCC-12.3.0-CUDA-12.1.1.eb b/easybuild/easyconfigs/p/pocl/pocl-7.0-GCC-14.2.0.eb
index c2962daa2e..ef7aa1a8aa 100644
--- a/easybuild/easyconfigs/p/pocl/pocl-4.0-GCC-12.3.0-CUDA-12.1.1.eb
+++ b/easybuild/easyconfigs/p/pocl/pocl-7.0-GCC-14.2.0.eb
@@ -3,40 +3,37 @@
 easyblock = 'CMakeNinja'
 
 name = 'pocl'
-version = '4.0'
-versionsuffix = '-CUDA-%(cudaver)s'
+version = '7.0'
 
 homepage = 'http://portablecl.org'
-description = """PoCL is a portable open source (MIT-licensed) implementation
-of the OpenCL standard (1.2 with some 2.0 features supported)."""
+description = """PoCL is a conformant implementation (for CPU and Level Zero GPU targets) of
+the OpenCL 3.0 standard which can be easily adapted for new targets."""
 
-toolchain = {'name': 'GCC', 'version': '12.3.0'}
+toolchain = {'name': 'GCC', 'version': '14.2.0'}
 
 source_urls = ['https://github.com/pocl/pocl/archive/']
 sources = ['v%(version)s.tar.gz']
-patches = []
 checksums = [
-    '7f4e8ab608b3191c2b21e3f13c193f1344b40aba7738f78762f7b88f45e8ce03',  # v4.0.tar.gz
+    'f55caba8c3ce12bec7b683ce55104c7555e19457fc2ac72c6f035201e362be08',  # v7.0.tar.gz
 ]
 
 builddependencies = [
-    ('CMake', '3.26.3'),
-    ('Ninja', '1.11.1'),
-    ('pkgconf', '1.9.5'),
+    ('CMake', '3.31.3'),
+    ('Ninja', '1.12.1'),
+    ('pkgconf', '2.3.0'),
+    ('LLVM', '20.1.7'),
 ]
 
 dependencies = [
-    ('CUDA', '12.1.1', '', SYSTEM),
-    ('Clang', '16.0.6', versionsuffix),
-    ('hwloc', '2.9.1'),
-    ('libtool', '2.4.7'),
-    ('libxml2', '2.11.4'),
+    ('hwloc', '2.11.2'),
+    ('libtool', '2.5.4'),
+    ('libxml2', '2.13.4'),
 ]
 
-# disable attempt to find an ICD loader, always build libOpenCL.so, enable CUDA
-configopts = "-DENABLE_ICD=0 -DINSTALL_OPENCL_HEADERS=1 -DENABLE_CUDA=1 "
+# disable attempt to find an ICD loader, always build libOpenCL.so
+configopts = "-DENABLE_ICD=0 -DINSTALL_OPENCL_HEADERS=1 "
 # make sure we use the easybuild Clang
-configopts += "-DWITH_LLVM_CONFIG=$EBROOTCLANG/bin/llvm-config -DSTATIC_LLVM=ON "
+configopts += "-DWITH_LLVM_CONFIG=$EBROOTLLVM/bin/llvm-config -DSTATIC_LLVM=ON "
 # avoid host CPU auto-detection (which may fail on recent CPUs)
 configopts += "-DLLC_HOST_CPU=native "
 
@@ -45,4 +42,8 @@ sanity_check_paths = {
     'dirs': ['include/CL', 'lib64/pkgconfig'],
 }
 
+sanity_check_commands = [
+    'poclcc -h',
+]
+
 moduleclass = 'lib'
Diff against pocl-1.8-GCC-11.3.0-CUDA-11.7.0.eb

easybuild/easyconfigs/p/pocl/pocl-1.8-GCC-11.3.0-CUDA-11.7.0.eb

diff --git a/easybuild/easyconfigs/p/pocl/pocl-1.8-GCC-11.3.0-CUDA-11.7.0.eb b/easybuild/easyconfigs/p/pocl/pocl-7.0-GCC-14.2.0.eb
index f2547d7d1a..ef7aa1a8aa 100644
--- a/easybuild/easyconfigs/p/pocl/pocl-1.8-GCC-11.3.0-CUDA-11.7.0.eb
+++ b/easybuild/easyconfigs/p/pocl/pocl-7.0-GCC-14.2.0.eb
@@ -1,40 +1,39 @@
+# https://github.com/pocl/pocl/issues/1219
+# "PoCL 3.1 supports LLVM only up to 15", so need 4.0 for working with Clang 16
 easyblock = 'CMakeNinja'
 
 name = 'pocl'
-version = '1.8'
-versionsuffix = '-CUDA-%(cudaver)s'
+version = '7.0'
 
 homepage = 'http://portablecl.org'
-description = "Pocl is a portable open source (MIT-licensed) implementation of the OpenCL standard"
+description = """PoCL is a conformant implementation (for CPU and Level Zero GPU targets) of
+the OpenCL 3.0 standard which can be easily adapted for new targets."""
 
-toolchain = {'name': 'GCC', 'version': '11.3.0'}
+toolchain = {'name': 'GCC', 'version': '14.2.0'}
 
 source_urls = ['https://github.com/pocl/pocl/archive/']
 sources = ['v%(version)s.tar.gz']
-patches = ['pocl-%(version)s_fix-header-install.patch']
 checksums = [
-    '0f63377ae1826e16e90038fc8e7f65029be4ff6f9b059f6907174b5c0d1f8ab2',  # v1.8.tar.gz
-    '97dc45437ae7464bda9f13088720482804b8a19a4e71067196daa86af487222d',  # pocl-1.8_fix-header-install.patch
+    'f55caba8c3ce12bec7b683ce55104c7555e19457fc2ac72c6f035201e362be08',  # v7.0.tar.gz
 ]
 
 builddependencies = [
-    ('CMake', '3.23.1'),
-    ('Ninja', '1.10.2'),
-    ('pkgconf', '1.8.0'),
+    ('CMake', '3.31.3'),
+    ('Ninja', '1.12.1'),
+    ('pkgconf', '2.3.0'),
+    ('LLVM', '20.1.7'),
 ]
 
 dependencies = [
-    ('CUDA', '11.7.0', '', SYSTEM),
-    ('Clang', '13.0.1', versionsuffix),
-    ('hwloc', '2.7.1'),
-    ('libtool', '2.4.7'),
-    ('libxml2', '2.9.13'),
+    ('hwloc', '2.11.2'),
+    ('libtool', '2.5.4'),
+    ('libxml2', '2.13.4'),
 ]
 
-# disable attempt to find an ICD loader, always build libOpenCL.so, enable CUDA
-configopts = "-DENABLE_ICD=0 -DINSTALL_OPENCL_HEADERS=1 -DENABLE_CUDA=1 "
+# disable attempt to find an ICD loader, always build libOpenCL.so
+configopts = "-DENABLE_ICD=0 -DINSTALL_OPENCL_HEADERS=1 "
 # make sure we use the easybuild Clang
-configopts += "-DWITH_LLVM_CONFIG=$EBROOTCLANG/bin/llvm-config -DSTATIC_LLVM=ON "
+configopts += "-DWITH_LLVM_CONFIG=$EBROOTLLVM/bin/llvm-config -DSTATIC_LLVM=ON "
 # avoid host CPU auto-detection (which may fail on recent CPUs)
 configopts += "-DLLC_HOST_CPU=native "
 
@@ -43,4 +42,8 @@ sanity_check_paths = {
     'dirs': ['include/CL', 'lib64/pkgconfig'],
 }
 
+sanity_check_commands = [
+    'poclcc -h',
+]
+
 moduleclass = 'lib'

Comment on lines +25 to +29
('LLVM', '20.1.5'), # for llvm-config
]

dependencies = [
('LLVM', '20.1.5'),
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Suggested change
('LLVM', '20.1.5'), # for llvm-config
]
dependencies = [
('LLVM', '20.1.5'),
('LLVM', '20.1.5'), # for llvm-config
]
dependencies = [

We only need to pass LLVM once here. Since we're using static LLVM libraries, having LLVM as a build dependency only might work (if pocl isn't using stuff like libomp.so or libclang-cpp.so, which are typically not available as a static variant).

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

I initially had LLVM only as dependency and not a build dependency, but then the build could not find llvm-config. Adding it as build dependency fixed that.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

That's interesting, since EasyBuild should load both the dependencies and builddependencies for the build...

I would try starting with LLVM as a build dependency only. One can then check if we need LLVM as a dependency, i.e. if some shared libraries of LLVM are still used. If that's the case, having LLVM under dependencies should theoretically be enough.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

LLVM only as build dep seems to build fine. I also don't see any dynamic linking to LLVM libs in the resulting pocl binaries

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Great 😄


source_urls = ['https://github.com/pocl/pocl/archive/']
sources = ['v%(version)s.tar.gz']
patches = []
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Suggested change
patches = []

No need to specify patches when we don't have them 😄

@Thyre Thyre added the 2025a issues & PRs related to 2025a common toolchains label Aug 8, 2025
@casparvl
Copy link
Copy Markdown
Contributor

@paulmelis could you please use the newer LLVM from #23144 ? There were two PRs for LLVM for 14.2.0, we've decided to go ahead with 23144.

@Thyre
Copy link
Copy Markdown
Collaborator

Thyre commented Sep 11, 2025

@paulmelis, you'll need to sync your PR with develop for the CI to (hopefully) pass.
You can do that e.g. via eb --sync-pr-with-develop=23615

@Crivella
Copy link
Copy Markdown
Contributor

You can do that e.g. via eb --sync-pr-with-develop=23615

Tried to do it myself but i think they have some weird permission on their repo that does not allow that even if they have the check on Maintainers are allowed to edit this pull request.

This applies to all other PRs from the sara-nl/easybuild-easyconfigs repo

@jfgrimm jfgrimm closed this Sep 12, 2025
@jfgrimm jfgrimm reopened this Sep 12, 2025
@jfgrimm
Copy link
Copy Markdown
Member

jfgrimm commented Sep 12, 2025

(closed + reopened to retrigger the CI)

@Thyre
Copy link
Copy Markdown
Collaborator

Thyre commented Sep 12, 2025

@boegelbot please test @ jsc-zen3

@Thyre
Copy link
Copy Markdown
Collaborator

Thyre commented Sep 12, 2025

Test report by @Thyre
SUCCESS
Build succeeded for 1 out of 1 (1 easyconfigs in total)
Linux - Linux Arch Linux UNKNOWN, x86_64, AMD Ryzen 7 7800X3D 8-Core Processor (zen4), 1 x AMD Navi 48 [Radeon RX 9070/9070 XT/9070 GRE] (device id: 0x7550, gfx: gfx1201, driver: 6.16.5-arch1-1), 1 x AMD Raphael (device id: 0x164e, gfx: gfx1036, driver: 6.16.5-arch1-1), Python 3.13.7
See https://gist.github.com/Thyre/beda09c7881f0e3e6f8d2965e67ea450 for a full test report.

@boegelbot
Copy link
Copy Markdown
Collaborator

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

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

Test results coming soon (I hope)...

Details

- notification for comment with ID 3285848953 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 1 out of 1 (1 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/fe3b50c43a3f270df0965b467526b645 for a full test report.

@Crivella
Copy link
Copy Markdown
Contributor

@boegelbot please test @ jsc-zen3

@Crivella
Copy link
Copy Markdown
Contributor

Test report by @Crivella
SUCCESS
Build succeeded for 1 out of 1 (1 easyconfigs in total)
crivella-desktop - Linux Ubuntu 22.04.5 LTS (Jammy Jellyfish), x86_64, 13th Gen Intel(R) Core(TM) i9-13900K (skylake), Python 3.11.13
See https://gist.github.com/Crivella/037af19940019a933ad53833f1b7adc6 for a full test report.

@boegelbot
Copy link
Copy Markdown
Collaborator

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

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

Test results coming soon (I hope)...

Details

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

Copy link
Copy Markdown
Contributor

@Crivella Crivella left a comment

Choose a reason for hiding this comment

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

LGTM

@boegelbot
Copy link
Copy Markdown
Collaborator

Test report by @boegelbot
SUCCESS
Build succeeded for 1 out of 1 (1 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/8793b59aa4d1d0d46aa62552434f9adc for a full test report.

@Crivella Crivella added this to the next release (5.1.2) milestone Sep 15, 2025
@Crivella
Copy link
Copy Markdown
Contributor

Going in, thanks @paulmelis!

@Crivella Crivella merged commit d22ae68 into easybuilders:develop Sep 15, 2025
8 checks passed
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 update

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants