SHA256
1
0
forked from pool/pocl

Compare commits

...

2 Commits

Author SHA256 Message Date
Ana Guerrero
491c11a2a9 Accepting request 1233665 from science
OBS-URL: https://build.opensuse.org/request/show/1233665
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/pocl?expand=0&rev=34
2024-12-30 11:51:29 +00:00
Martin Hauke
02c1ed5486 - Use _service file to create tarball from git
- Enable SPIR-V support
- Remove pocl-llvm16.patch
- Remove link_against_libclang-cpp_so.patch
- Update to version 6.0:
- Update to version 5.0:
- Update to version 4.0:

OBS-URL: https://build.opensuse.org/package/show/science/pocl?expand=0&rev=79
2024-12-28 07:50:40 +00:00
8 changed files with 83 additions and 247 deletions

21
_service Normal file
View File

@ -0,0 +1,21 @@
<services>
<service name="format_spec_file" mode="manual" />
<service name="obs_scm" mode="manual">
<param name="filename">pocl</param>
<param name="url">https://github.com/pocl/pocl.git</param>
<param name="scm">git</param>
<param name="revision">v6.0</param>
<param name="versionformat">@PARENT_TAG@</param>
<param name="versionrewrite-pattern">v(.*)</param>
</service>
<service name="set_version" mode="manual" />
<service name="tar" mode="buildtime">
<param name="package-meta">yes</param>
</service>
<service name="recompress" mode="buildtime">
<param name="compression">gz</param>
<param name="file">pocl-*.tar</param>
</service>
</services>

View File

@ -1,13 +0,0 @@
diff --git a/cmake/LLVM.cmake b/cmake/LLVM.cmake
index 2827d64..e186bc1 100644
--- a/cmake/LLVM.cmake
+++ b/cmake/LLVM.cmake
@@ -239,7 +239,7 @@ string(STRIP "${LLVM_SYSLIBS}" LLVM_SYSLIBS)
####################################################################
# llvm-config does not include clang libs
-if((9 LESS LLVM_MAJOR) AND (NOT STATIC_LLVM))
+if((8 LESS LLVM_MAJOR) AND (NOT STATIC_LLVM))
# For Clang 10+, link against a single shared library instead of multiple component shared
# libraries.
if("${LLVM_LIBNAMES}" MATCHES "LLVMTCE")

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:82314362552e050aff417318dd623b18cf0f1d0f84f92d10a7e3750dd12d3a9a
size 1928607

3
pocl-6.0.obscpio Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:1b5ccd6b9b1cb241e5e89f9cb8b327cbc98be977afe4ff71151e7ddac1be8914
size 42336269

View File

@ -1,203 +0,0 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8c8741b6..85de3968 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -520,7 +520,7 @@ if(ENABLE_LLVM)
# of the code, since this macro adds another layer of complexity.
if(LLVM_VERSION VERSION_LESS_EQUAL 14.0)
set(ENABLE_LLVM_OPAQUE_POINTERS OFF CACHE INTERNAL "llvm opaque pointers" FORCE)
- elseif(LLVM_VERSION VERSION_EQUAL 15.0)
+ elseif(LLVM_VERSION VERSION_EQUAL 15.0 OR LLVM_VERSION VERSION_EQUAL 16.0)
option(ENABLE_LLVM_OPAQUE_POINTERS "Handle the change to llvm opaque pointers." ON)
else()
set(ENABLE_LLVM_OPAQUE_POINTERS ON CACHE INTERNAL "llvm opaque pointers" FORCE)
diff --git a/cmake/LLVM.cmake b/cmake/LLVM.cmake
index 18138f36..00ad2186 100644
--- a/cmake/LLVM.cmake
+++ b/cmake/LLVM.cmake
@@ -122,8 +122,10 @@ string(REPLACE "${LLVM_PREFIX}" "${LLVM_PREFIX_CMAKE}" LLVM_LIBDIR "${LLVM_LIBDI
run_llvm_config(LLVM_INCLUDEDIR --includedir)
string(REPLACE "${LLVM_PREFIX}" "${LLVM_PREFIX_CMAKE}" LLVM_INCLUDEDIR "${LLVM_INCLUDEDIR}")
-run_llvm_config(LLVM_SRC_ROOT --src-root)
-run_llvm_config(LLVM_OBJ_ROOT --obj-root)
+if(LLVM_VERSION_MAJOR LESS 16)
+ run_llvm_config(LLVM_SRC_ROOT --src-root)
+ run_llvm_config(LLVM_OBJ_ROOT --obj-root)
+endif()
string(REPLACE "${LLVM_PREFIX}" "${LLVM_PREFIX_CMAKE}" LLVM_OBJ_ROOT "${LLVM_OBJ_ROOT}")
run_llvm_config(LLVM_ALL_TARGETS --targets-built)
run_llvm_config(LLVM_HOST_TARGET --host-target)
@@ -772,12 +774,35 @@ endif()
####################################################################
-if(ENABLE_HOST_CPU_DEVICES AND NOT DEFINED ${CL_DISABLE_HALF})
- set(CL_DISABLE_HALF 0)
- message(STATUS "Checking fp16 support")
- custom_try_compile_clang_silent("__fp16 callfp16(__fp16 a) { return a * (__fp16)1.8; };" "__fp16 x=callfp16((__fp16)argc);" RESV ${CLANG_TARGET_OPTION}${LLC_TRIPLE} ${CLANG_MARCH_FLAG}${LLC_HOST_CPU})
- if(RESV)
+# Clang documentation on Language Extensions:
+# __fp16 is supported on every target, as it is purely a storage format
+# _Float16 is currently only supported on the following targets... SPIR, x86
+# DIsabled for non-x86-64 because of limitations:
+# The _Float16 type requires SSE2 feature and above due to the instruction
+# limitations. When using it on i386 targets, you need to specify -msse2
+# explicitly.
+# For targets without F16C feature or above, please make sure:
+# Use GCC 12.0 and above if you are using libgcc.
+# If you are using compiler-rt, use the same version with the compiler.
+# Early versions provided FP16 builtins in a different ABI. A workaround is
+# to use a small code snippet to check the ABI if you cannot make sure of it.
+
+if(ENABLE_HOST_CPU_DEVICES AND NOT DEFINED CL_DISABLE_HALF)
+ # LLVM <15 doesn't support FP16 emulation
+ # LLVM 15 crashes on some code, with the FP16 emulation
+ # CONFORMANCE disables FP16 b/c it's incomplete
+ # enabled on x86-64 only for now
+ if((LLVM_VERSION_MAJOR LESS 16) OR ENABLE_CONFORMANCE OR (NOT X86_64))
+ message(STATUS "FP16 support disabled")
set(CL_DISABLE_HALF 1)
+ else()
+ set(CL_DISABLE_HALF 0)
+ message(STATUS "Checking fp16 support")
+ custom_try_compile_clang_silent("_Float16 callfp16(_Float16 a) { return a * 1.8f16; };" "_Float16 x=callfp16((_Float16)argc);"
+ RESV ${CLANG_TARGET_OPTION}${LLC_TRIPLE} ${CLANG_MARCH_FLAG}${LLC_HOST_CPU})
+ if(RESV)
+ set(CL_DISABLE_HALF 1)
+ endif()
endif()
endif()
diff --git a/cmake/bitcode_rules.cmake b/cmake/bitcode_rules.cmake
index 3d1a373f..10a309c2 100644
--- a/cmake/bitcode_rules.cmake
+++ b/cmake/bitcode_rules.cmake
@@ -167,7 +167,7 @@ function(compile_ll_to_bc FILENAME SUBDIR BCLIST)
list(APPEND ${BCLIST} "${BC_FILE}")
set(${BCLIST} ${${BCLIST}} PARENT_SCOPE)
- if(LLVM_VERSION VERSION_EQUAL 15.0)
+ if(LLVM_VERSION VERSION_EQUAL 15.0 OR LLVM_VERSION VERSION_EQUAL 16.0)
# both of these are necesssary. some of the files (like barrier.ll)
# don't contain any pointers and thus cannot be guessed; if llvm-as
# produces the wrong opaque-type file, later llvm-link will fail
diff --git a/include/_kernel_c.h b/include/_kernel_c.h
index e1038ea5..73ad9d18 100644
--- a/include/_kernel_c.h
+++ b/include/_kernel_c.h
@@ -112,7 +112,7 @@ typedef uint uint16 __attribute__((__ext_vector_type__(16)));
/* NOTE: the Clang's __fp16 does not work robustly in C mode,
it might produce invalid code at least with half vectors.
Using the native 'half' type in OpenCL C mode works better. */
-typedef __fp16 half;
+typedef _Float16 half;
typedef half half2 __attribute__((__ext_vector_type__(2)));
typedef half half3 __attribute__((__ext_vector_type__(3)));
diff --git a/lib/CL/pocl_llvm_build.cc b/lib/CL/pocl_llvm_build.cc
index 3ef6e0c5..84413a48 100644
--- a/lib/CL/pocl_llvm_build.cc
+++ b/lib/CL/pocl_llvm_build.cc
@@ -263,7 +263,7 @@ int pocl_llvm_build_program(cl_program program,
size_t fastmath_flag = user_options.find("-cl-fast-relaxed-math");
-#if (CLANG_MAJOR == 15)
+#if (CLANG_MAJOR == 15) || (CLANG_MAJOR == 16)
#ifdef LLVM_OPAQUE_POINTERS
ss << "-opaque-pointers ";
#else
diff --git a/lib/CL/pocl_llvm_utils.cc b/lib/CL/pocl_llvm_utils.cc
index 3cc7fcc5..0690af17 100644
--- a/lib/CL/pocl_llvm_utils.cc
+++ b/lib/CL/pocl_llvm_utils.cc
@@ -273,7 +273,9 @@ void InitializeLLVM() {
initializeAnalysis(Registry);
initializeTransformUtils(Registry);
initializeInstCombine(Registry);
+#ifdef LLVM_OLDER_THAN_16_0
initializeInstrumentation(Registry);
+#endif
initializeTarget(Registry);
}
@@ -390,7 +392,7 @@ void pocl_llvm_create_context(cl_context ctx) {
data->Context = new llvm::LLVMContext();
assert(data->Context);
-#if (CLANG_MAJOR == 15)
+#if (CLANG_MAJOR == 15) || (CLANG_MAJOR == 16)
#ifdef LLVM_OPAQUE_POINTERS
data->Context->setOpaquePointers(true);
#else
diff --git a/lib/llvmopencl/BarrierTailReplication.cc b/lib/llvmopencl/BarrierTailReplication.cc
index 98bc0635..43802f73 100644
--- a/lib/llvmopencl/BarrierTailReplication.cc
+++ b/lib/llvmopencl/BarrierTailReplication.cc
@@ -352,7 +352,11 @@ BarrierTailReplication::ReplicateBasicBlocks(BasicBlockVector &new_graph,
i2 != e2; ++i2) {
Instruction *i = i2->clone();
reference_map.insert(std::make_pair(&*i2, i));
+#ifdef LLVM_OLDER_THAN_16_0
new_b->getInstList().push_back(i);
+#else
+ i->insertInto(new_b, new_b->end());
+#endif
}
// Add predicates to PHINodes of basic blocks the replicated
diff --git a/lib/llvmopencl/ParallelRegion.cc b/lib/llvmopencl/ParallelRegion.cc
index dfe56e03..639bd686 100644
--- a/lib/llvmopencl/ParallelRegion.cc
+++ b/lib/llvmopencl/ParallelRegion.cc
@@ -201,12 +201,17 @@ ParallelRegion::chainAfter(ParallelRegion *region)
#endif
BasicBlock *successor = t->getSuccessor(0);
- Function::BasicBlockListType &bb_list =
- successor->getParent()->getBasicBlockList();
-
- for (iterator i = begin(), e = end(); i != e; ++i)
+ Function *F = successor->getParent();
+#ifdef LLVM_OLDER_THAN_16_0
+ Function::BasicBlockListType &bb_list =
+ F->getBasicBlockList();
+ for (iterator i = begin(), e = end(); i != e; ++i)
bb_list.insertAfter(tail->getIterator(), *i);
+#else
+ for (iterator i = begin(), e = end(); i != e; ++i)
+ F->insert(tail->getIterator(), *i);
+#endif
t->setSuccessor(0, entryBB());
t = exitBB()->getTerminator();
diff --git a/lib/llvmopencl/WorkItemAliasAnalysis.cc b/lib/llvmopencl/WorkItemAliasAnalysis.cc
index 02dcd2ec..8a85b25a 100644
--- a/lib/llvmopencl/WorkItemAliasAnalysis.cc
+++ b/lib/llvmopencl/WorkItemAliasAnalysis.cc
@@ -51,6 +51,12 @@ using namespace llvm;
typedef llvm::MemoryLocation Location;
typedef llvm::AliasResult AliasResult;
+#ifdef LLVM_OLDER_THAN_16_0
+#define AAResultB AAResultBase<WorkItemAAResult>
+#else
+#define AAResultB AAResultBase
+#endif
+
/// WorkItemAliasAnalysis - This is a simple alias analysis
/// implementation that uses pocl metadata to make sure memory accesses from
/// different work items are not aliasing.
@@ -58,8 +64,8 @@ typedef llvm::AliasResult AliasResult;
// LLVM 3.8+
-class WorkItemAAResult : public AAResultBase<WorkItemAAResult> {
- friend AAResultBase<WorkItemAAResult>;
+class WorkItemAAResult : public AAResultB {
+ friend AAResultB;
public:
static char ID;

View File

@ -1,3 +1,37 @@
-------------------------------------------------------------------
Sat Dec 28 01:52:48 UTC 2024 - Eyad Issa <eyadlorenzo@gmail.com>
- Use _service file to create tarball from git
- Enable SPIR-V support
- Remove pocl-llvm16.patch
- Remove link_against_libclang-cpp_so.patch
- Update to version 6.0:
* New CPU driver which uses Threading Building Blocks for
task scheduling
* Experimental cl_ext_buffer_device_address prototype
* Multi-device command buffer infrastructure
* Command queue priority/throttle hints
* Support for using OpenMP for task scheduling in the
"cpu" driver
* Improvements to the Remote driver
* Improvements to the Level Zero driver
* Improvements to the CUDA driver
- Update to version 5.0:
* New backend: Remote
* CUDA driver: More OpenCL 3.0 features and extensions
implemented
* RISC-V CPU support improved
* Other CPU improvements
* Experimental built-in-kernel library based FPGA backend
- Update to version 4.0:
* Support for Clang/LLVM 16.0
* CPU driver improvements
* New Level Zero driver
-------------------------------------------------------------------
Thu Feb 29 14:57:59 UTC 2024 - Dominique Leuenberger <dimstar@opensuse.org>
@ -21,7 +55,7 @@ Wed Nov 8 16:12:20 UTC 2023 - Dominique Leuenberger <dimstar@opensuse.org>
Sat May 13 05:43:35 UTC 2023 - Carsten Ziepke <kieltux@gmail.com>
- Add pocl-llvm16.patch, enables support for LLVM 16
- Use BuildRequires ocl-icd-devel instead pkgconfig(OpenCL), fix
- Use BuildRequires ocl-icd-devel instead pkgconfig(OpenCL), fix
have choice for pkgconfig(OpenCL) for SLE
-------------------------------------------------------------------
@ -113,20 +147,20 @@ Fri Dec 25 14:30:16 UTC 2020 - Martin Hauke <mardnh@gmx.de>
-------------------------------------------------------------------
Fri Oct 23 22:46:28 UTC 2020 - Ondřej Súkup <mimi.vx@gmail.com>
- remove broken installation workaround
- remove broken installation workaround
-------------------------------------------------------------------
Fri Jun 26 11:05:12 UTC 2020 - Stefan Dirsch <sndirsch@suse.com>
- moved pocl.icd to /usr/share/OpenCL/vendors for real ...
- moved pocl.icd to /usr/share/OpenCL/vendors for real ...
-------------------------------------------------------------------
Thu Jun 25 09:53:25 UTC 2020 - Stefan Dirsch <sndirsch@suse.com>
- Update to version 1.5
* Added support for LLVM/Clang 10.0
* Added support for LLVM/Clang 10.0
- adjusted link_against_libclang-cpp_so.patch
- move pocl.icd from /usr/etc/OpenCL/vendors to
- move pocl.icd from /usr/etc/OpenCL/vendors to
/usr/share/OpenCL/vendors (boo#1173005)
-------------------------------------------------------------------
@ -202,7 +236,7 @@ Thu Apr 4 19:21:26 UTC 2019 - Martin Hauke <mardnh@gmx.de>
-------------------------------------------------------------------
Wed Oct 31 12:13:35 UTC 2018 - Bernhard Wiedemann <bwiedemann@suse.com>
- Add reproducible.patch to make build result independent of
- Add reproducible.patch to make build result independent of
build system CPU (boo#1110722)
-------------------------------------------------------------------
@ -212,7 +246,7 @@ Tue Sep 25 10:30:51 UTC 2018 - Ondřej Súkup <mimi.vx@gmail.com>
* Support for LLVM/Clang 7.0 and 6.0
* HWLOC 2.0 support
- build kernels with distro support - detect and load cpu
optimized code on runtime
optimized code on runtime
-------------------------------------------------------------------
Mon Jul 30 04:53:06 UTC 2018 - bwiedemann@suse.com
@ -234,7 +268,7 @@ Fri Mar 9 17:17:10 UTC 2018 - mardnh@gmx.de
* Improved kernel compilation speed
- Several tests have problems on some OBS workers while the same
tests run perfectly fine in a local chroot.
Disable tests for now.
Disable tests for now.
-------------------------------------------------------------------
Mon Mar 5 19:34:47 UTC 2018 - mardnh@gmx.de
@ -326,7 +360,7 @@ Mon Jul 3 21:23:21 UTC 2017 - mardnh@gmx.de
-------------------------------------------------------------------
Fri May 19 08:49:22 UTC 2017 - idonmez@suse.com
- Update library name for uthash -> libut2
- Update library name for uthash -> libut2
-------------------------------------------------------------------
Tue May 16 18:59:30 UTC 2017 - mardnh@gmx.de
@ -398,7 +432,7 @@ Mon Oct 26 20:02:35 UTC 2015 - mardnh@gmx.de
kernels with #includes.
* Support for LLVM/Clang 3.7.
* Little endian MIPS32 now passes almost all pocl testsuite tests.
OpenCL Runtime/Platform API support
* Transferred buffer read/write/copy offset calculation to device driver side.
- these driver api functions have changed; got offset as a new argument.
@ -406,15 +440,15 @@ Mon Oct 26 20:02:35 UTC 2015 - mardnh@gmx.de
* Maximum image dimensions grow to fit maximum allocation.
* clGetDeviceInfo() reports better information about CPU vendor and cache.
* experimental clCreateSubDevices() for pthread CPU device.
OpenCL C Builtin Function Implementations
* Implemented get_image_dim().
Bugfixes
* Avoid infinite loops when users recycle an event waiting list.
* Correctly report the base address alignment.
* Lots of others.
Misc
* Tests now using new cl2.hpp, removing dependency on OpenGL headers
@ -445,4 +479,3 @@ Tue Oct 7 19:16:42 UTC 2014 - mardnh@gmx.de
- initial stable package, version 0.10
based on home:mnhauke:opencl:testing/pocl

4
pocl.obsinfo Normal file
View File

@ -0,0 +1,4 @@
name: pocl
version: 6.0
mtime: 1718712945
commit: 952bc559f790e5deb5ae48692c4a19619b53fcdc

View File

@ -1,7 +1,7 @@
#
# spec file for package pocl
#
# Copyright (c) 2023 SUSE LLC
# Copyright (c) 2024 SUSE LLC
# Copyright (c) 2014 Guillaume GARDET <guillaume@opensuse.org>
#
# All modifications and additions to the file contributed by third parties
@ -19,32 +19,25 @@
%define sover 2
Name: pocl
Version: 3.1
Version: 6.0
Release: 0
Summary: Portable Computing Language - an OpenCL implementation
# The whole code is under MIT
# except include/utlist.h which is under BSD (and unbundled)
License: MIT
Group: Development/Tools/Other
URL: http://portablecl.org/
URL: https://portablecl.org/
Source0: https://github.com/pocl/pocl/archive/v%{version}.tar.gz#/%{name}-%{version}.tar.gz
Source99: pocl-rpmlintrc
Patch0: link_against_libclang-cpp_so.patch
# PATCH-FIX-UPSTREAM - pocl-llvm16.patch - enables support for LLVM 16
# https://github.com/pocl/pocl/commit/20d1bfa9bfd301964f7b2fc6d7f4589dd04e1b5c
# https://github.com/pocl/pocl/commit/bf50f0052e4248cd1acfaaa8da95c5e4ca52f815
Patch1: pocl-llvm16.patch
# Version 6.0: Supports LLVM versions 14.0 to 18.0
BuildRequires: ((clang-devel >= 14 with clang-devel < 19) or clang18-devel)
BuildRequires: cmake
BuildRequires: gcc-c++
BuildRequires: libLLVMSPIRVLib-devel
BuildRequires: ninja
BuildRequires: ocl-icd-devel
BuildRequires: opencl-headers
BuildRequires: pkgconfig
%if 0%{?suse_version} <= 1500 && 0%{?sle_version} > 150500
BuildRequires: ((clang-devel >= 6.0.0 with clang-devel < 17) or clang15-devel)
%else
BuildRequires: ((clang-devel >= 6.0.0 with clang-devel < 17) or clang16-devel)
%endif
BuildRequires: pkgconfig(hwloc)
# PPC has limited support/testing from upstream
# s390(x) is also not supported, so use ExclusiveArch
@ -95,7 +88,8 @@ This subpackage provides the development files needed for pocl.
%build
%define __builder ninja
%cmake \
-DENABLE_CUDA=0 \
-DENABLE_CUDA=OFF \
-DENABLE_SPIRV=ON \
-DENABLE_ICD=ON \
-DPOCL_INSTALL_ICD_VENDORDIR=%{_datadir}/OpenCL/vendors \
%ifarch %{ix86} x86_64