pkgsrc-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[pkgsrc/trunk]: pkgsrc/parallel add parallel/pocl



details:   https://anonhg.NetBSD.org/pkgsrc/rev/0bb3323adcf5
branches:  trunk
changeset: 454365:0bb3323adcf5
user:      nia <nia%pkgsrc.org@localhost>
date:      Thu Jun 10 09:57:39 2021 +0000

description:
add parallel/pocl

OpenCL (Open Computing Language) is an open, royalty-free standard for
cross-platform, parallel programming of diverse accelerators found in
supercomputers, cloud servers, personal computers, mobile devices and embedded
platforms.

PoCL is a portable open source (MIT-licensed) implementation of the OpenCL
standard (1.2 with some 2.0 features supported). In addition to being an easily
portable multi-device (truely heterogeneous) open-source OpenCL implementation,
a major goal of this project is improving interoperability of diversity of
OpenCL-capable devices by integrating them to a single centrally orchestrated
platform.

diffstat:

 parallel/Makefile                                            |   4 +-
 parallel/pocl/DESCR                                          |  11 ++
 parallel/pocl/Makefile                                       |  55 ++++++++++
 parallel/pocl/distinfo                                       |  14 ++
 parallel/pocl/patches/patch-CMakeLists.txt                   |  32 +++++
 parallel/pocl/patches/patch-config.h.in.cmake                |  24 ++++
 parallel/pocl/patches/patch-lib_CL_devices_basic_basic.c     |  17 +++
 parallel/pocl/patches/patch-lib_CL_devices_common.c          |  15 ++
 parallel/pocl/patches/patch-lib_CL_devices_devices.c         |  66 ++++++++++++
 parallel/pocl/patches/patch-lib_CL_devices_hsa_pocl-hsa.c    |  17 +++
 parallel/pocl/patches/patch-lib_CL_devices_pthread_pthread.c |  17 +++
 parallel/pocl/patches/patch-lib_CL_pocl__timing.c            |  15 ++
 12 files changed, 286 insertions(+), 1 deletions(-)

diffs (truncated from 352 to 300 lines):

diff -r 1d3a0cc30974 -r 0bb3323adcf5 parallel/Makefile
--- a/parallel/Makefile Thu Jun 10 08:17:58 2021 +0000
+++ b/parallel/Makefile Thu Jun 10 09:57:39 2021 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.33 2021/06/09 20:49:58 nia Exp $
+# $NetBSD: Makefile,v 1.34 2021/06/10 09:57:39 nia Exp $
 #
 
 COMMENT=       Applications dealing with parallelism in computing
@@ -14,6 +14,7 @@
 SUBDIR+=       linda
 SUBDIR+=       lua-lanes
 SUBDIR+=       mpi-ch
+SUBDIR+=       ocl-icd
 SUBDIR+=       opencl-clang
 SUBDIR+=       opencl-clhpp
 SUBDIR+=       opencl-headers
@@ -24,6 +25,7 @@
 SUBDIR+=       paexec
 SUBDIR+=       parallel
 SUBDIR+=       pdsh
+SUBDIR+=       pocl
 SUBDIR+=       pvm3
 SUBDIR+=       py-billiard
 SUBDIR+=       sge
diff -r 1d3a0cc30974 -r 0bb3323adcf5 parallel/pocl/DESCR
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/parallel/pocl/DESCR       Thu Jun 10 09:57:39 2021 +0000
@@ -0,0 +1,11 @@
+OpenCL (Open Computing Language) is an open, royalty-free standard for
+cross-platform, parallel programming of diverse accelerators found in
+supercomputers, cloud servers, personal computers, mobile devices and embedded
+platforms.
+
+PoCL is a portable open source (MIT-licensed) implementation of the OpenCL
+standard (1.2 with some 2.0 features supported). In addition to being an easily
+portable multi-device (truly heterogeneous) open-source OpenCL implementation,
+a major goal of this project is improving interoperability of diversity of
+OpenCL-capable devices by integrating them to a single centrally orchestrated
+platform.
diff -r 1d3a0cc30974 -r 0bb3323adcf5 parallel/pocl/Makefile
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/parallel/pocl/Makefile    Thu Jun 10 09:57:39 2021 +0000
@@ -0,0 +1,55 @@
+# $NetBSD: Makefile,v 1.1 2021/06/10 09:57:40 nia Exp $
+
+DISTNAME=      pocl-1.7
+CATEGORIES=    parallel
+MASTER_SITES=  http://portablecl.org/downloads/
+
+MAINTAINER=    pkgsrc-users%NetBSD.org@localhost
+HOMEPAGE=      http://portablecl.org/
+COMMENT=       Portable implementation of the OpenCL standard
+LICENSE=       mit
+
+USE_CMAKE=     yes
+USE_TOOLS+=    pkg-config
+USE_LANGUAGES= c c++
+
+# C++11
+GCC_REQD+=     4.7
+
+CMAKE_ARGS+=   -DCMAKE_BUILD_TYPE="Release"
+CMAKE_ARGS+=   -DCMAKE_INSTALL_LIBDIR="lib"
+CMAKE_ARGS+=   -DPOCL_INSTALL_ICD_VENDORDIR="${PREFIX}/share/examples/OpenCL/vendor"
+CMAKE_ARGS+=   -DKERNELLIB_HOST_CPU_VARIANTS="distro"
+CMAKE_ARGS+=   -DLLVM_CONFIG=${LLVM_CONFIG_PATH:Q}
+
+LDFLAGS+=      ${COMPILER_RPATH_FLAG}${PREFIX}/lib/pocl
+
+# The PLIST includes target-specific files so needs to be generated.
+GENERATE_PLIST+=       find ${DESTDIR}${PREFIX} \( -type f -o -type l \) -print | \
+                       sed 's,${DESTDIR}${PREFIX}/,,' | ${SORT} ;
+
+.include "../../mk/bsd.prefs.mk"
+
+pre-configure:
+.if empty(PKGSRC_COMPILER:M*clang*)
+# XXX: When using GCC, pkgsrc provides 'clang' wrappers that are actually gcc.
+# XXX: This is copied from Firefox, which also needs this hack...
+       ${LN} -sf ${PREFIX}/bin/clang ${WRKDIR}/.cwrapper/bin/clang
+       ${LN} -sf ${PREFIX}/bin/clang++ ${WRKDIR}/.cwrapper/bin/clang++
+       ${LN} -sf ${PREFIX}/bin/clang-cpp ${WRKDIR}/.cwrapper/bin/clang-cpp
+.endif
+
+OWN_DIRS+=     ${PKG_SYSCONFDIR}/OpenCL/vendor
+
+CONF_FILES+=   ${PREFIX}/share/examples/OpenCL/vendor/pocl.icd \
+               ${PKG_SYSCONFDIR}/OpenCL/vendor/pocl.icd
+
+PKGCONFIG_OVERRIDE+=   pocl.pc.in.cmake
+
+.include "../../lang/clang/buildlink3.mk"
+.include "../../lang/llvm/buildlink3.mk"
+.include "../../parallel/hwloc/buildlink3.mk"
+.include "../../parallel/ocl-icd/buildlink3.mk"
+.include "../../parallel/opencl-headers/buildlink3.mk"
+.include "../../mk/dlopen.buildlink3.mk"
+.include "../../mk/bsd.pkg.mk"
diff -r 1d3a0cc30974 -r 0bb3323adcf5 parallel/pocl/distinfo
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/parallel/pocl/distinfo    Thu Jun 10 09:57:39 2021 +0000
@@ -0,0 +1,14 @@
+$NetBSD: distinfo,v 1.1 2021/06/10 09:57:40 nia Exp $
+
+SHA1 (pocl-1.7.tar.gz) = 7f28546ac51d89ba699cc5adce1ddf2e91bdf230
+RMD160 (pocl-1.7.tar.gz) = 75555c802bf133298d615f5c146174dc0f959a72
+SHA512 (pocl-1.7.tar.gz) = 23bb82b25a222186c001b2ed413f26253e1e0e16518e98c95173f51491e15d107e6ab1b334ffd490b41199743267d9ad64882a22fea327e17ec9604f9847fc38
+Size (pocl-1.7.tar.gz) = 1577676 bytes
+SHA1 (patch-CMakeLists.txt) = 314c492b03d66ab373cc59c926fe3d27aeb3a5a3
+SHA1 (patch-config.h.in.cmake) = 974fad1f19516ef0b73f7db5b3948e677f4aaf98
+SHA1 (patch-lib_CL_devices_basic_basic.c) = 9110d868a305cefc2e19fd7d7482f6ce2b8a6164
+SHA1 (patch-lib_CL_devices_common.c) = c276aa967a1cc79b2bd6029b287b887bdb2b0010
+SHA1 (patch-lib_CL_devices_devices.c) = 17a5bb001086befdf88452b7e1126d2f5f4b1fc1
+SHA1 (patch-lib_CL_devices_hsa_pocl-hsa.c) = b7b4798b6f47f4d60a914f45ba64fe8448accdb9
+SHA1 (patch-lib_CL_devices_pthread_pthread.c) = afc0ab5544300d141d1fbfe5b7fe18af281365fa
+SHA1 (patch-lib_CL_pocl__timing.c) = 93b83613973d8128cd5b93375cadd2f6702de7ba
diff -r 1d3a0cc30974 -r 0bb3323adcf5 parallel/pocl/patches/patch-CMakeLists.txt
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/parallel/pocl/patches/patch-CMakeLists.txt        Thu Jun 10 09:57:39 2021 +0000
@@ -0,0 +1,32 @@
+$NetBSD: patch-CMakeLists.txt,v 1.1 2021/06/10 09:57:40 nia Exp $
+
+Most Unix-like OSes don't need libdl...
+
+--- CMakeLists.txt.orig        2021-05-19 08:12:19.000000000 +0000
++++ CMakeLists.txt
+@@ -787,9 +787,7 @@ elseif(UNIX)
+ 
+     find_library(DL_LIB "dl")
+     find_file(DL_H "dlfcn.h")
+-    if(DL_LIB AND DL_H)
+-      message(STATUS "libdl found")
+-
++    if(DL_H)
+       get_filename_component(DL_H_INCLUDE_DIR "${DL_H}" DIRECTORY)
+       string(FIND "${CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES}" "${DL_H_INCLUDE_DIR}" LTPOSITION)
+       # include the directory of dlfcn.h, if its not in the default system include dirs
+@@ -797,9 +795,11 @@ elseif(UNIX)
+       if((LTPOSITION LESS "0") AND (NOT CMAKE_CROSSCOMPILING))
+         include_directories("${DL_H_INCLUDE_DIR}")
+       endif()
+-      set(HAVE_LIBDL ON CACHE BOOL "dlopen" FORCE)
+-    else()
+-      message(FATAL_ERROR "Could not find DL library!")
++      set(HAVE_DLFCN_H ON)
++    endif()
++
++    if(NOT DL_LIB)
++      set(DL_LIB "")
+     endif()
+ 
+ else()
diff -r 1d3a0cc30974 -r 0bb3323adcf5 parallel/pocl/patches/patch-config.h.in.cmake
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/parallel/pocl/patches/patch-config.h.in.cmake     Thu Jun 10 09:57:39 2021 +0000
@@ -0,0 +1,24 @@
+$NetBSD: patch-config.h.in.cmake,v 1.1 2021/06/10 09:57:40 nia Exp $
+
+dlfcn.h is a separate thing to libdl and should be detected separately.
+
+--- config.h.in.cmake.orig     2021-05-19 08:12:19.000000000 +0000
++++ config.h.in.cmake
+@@ -35,6 +35,8 @@
+ 
+ #cmakedefine ENABLE_SPIRV
+ 
++#cmakedefine HAVE_DLFCN_H
++
+ #cmakedefine HAVE_FORK
+ 
+ #cmakedefine HAVE_VFORK
+@@ -57,8 +59,6 @@
+ 
+ #cmakedefine HAVE_LTTNG_UST
+ 
+-#cmakedefine HAVE_LIBDL
+-
+ #cmakedefine HAVE_OCL_ICD
+ 
+ #cmakedefine HAVE_POSIX_MEMALIGN
diff -r 1d3a0cc30974 -r 0bb3323adcf5 parallel/pocl/patches/patch-lib_CL_devices_basic_basic.c
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/parallel/pocl/patches/patch-lib_CL_devices_basic_basic.c  Thu Jun 10 09:57:39 2021 +0000
@@ -0,0 +1,17 @@
+$NetBSD: patch-lib_CL_devices_basic_basic.c,v 1.1 2021/06/10 09:57:40 nia Exp $
+
+Detect dlfcn.h (portable) instead of libdl (not portable).
+
+--- lib/CL/devices/basic/basic.c.orig  2021-05-19 08:12:19.000000000 +0000
++++ lib/CL/devices/basic/basic.c
+@@ -50,8 +50,8 @@
+ #include "pocl_llvm.h"
+ #endif
+ 
+-#ifndef HAVE_LIBDL
+-#error Basic driver requires DL library
++#ifndef HAVE_DLFCN_H
++#error Basic driver requires dlopen
+ #endif
+ 
+ struct data {
diff -r 1d3a0cc30974 -r 0bb3323adcf5 parallel/pocl/patches/patch-lib_CL_devices_common.c
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/parallel/pocl/patches/patch-lib_CL_devices_common.c       Thu Jun 10 09:57:39 2021 +0000
@@ -0,0 +1,15 @@
+$NetBSD: patch-lib_CL_devices_common.c,v 1.1 2021/06/10 09:57:40 nia Exp $
+
+Test for dlfcn.h instead of libdl.
+
+--- lib/CL/devices/common.c.orig       2021-05-19 08:12:19.000000000 +0000
++++ lib/CL/devices/common.c
+@@ -61,7 +61,7 @@
+ #include <unistd.h>
+ #endif
+ 
+-#ifdef HAVE_LIBDL
++#ifdef HAVE_DLFCN_H
+ #if defined(__APPLE__)
+ #define _DARWIN_C_SOURCE
+ #endif
diff -r 1d3a0cc30974 -r 0bb3323adcf5 parallel/pocl/patches/patch-lib_CL_devices_devices.c
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/parallel/pocl/patches/patch-lib_CL_devices_devices.c      Thu Jun 10 09:57:39 2021 +0000
@@ -0,0 +1,66 @@
+$NetBSD: patch-lib_CL_devices_devices.c,v 1.1 2021/06/10 09:57:40 nia Exp $
+
+Add support for non-Linux unixes.
+
+--- lib/CL/devices/devices.c.orig      2021-05-19 08:12:19.000000000 +0000
++++ lib/CL/devices/devices.c
+@@ -27,7 +27,7 @@
+ #include <string.h>
+ #include <ctype.h>
+ 
+-#ifdef __linux__
++#if !defined(_WIN32) && !defined(__APPLE__)
+ #include <limits.h>
+ #include <signal.h>
+ #include <stdio.h>
+@@ -70,7 +70,7 @@
+ #define PATH_MAX 4096
+ #endif
+ 
+-#ifdef HAVE_LIBDL
++#ifdef HAVE_DLFCN_H
+ #if defined(__APPLE__)
+ #define _DARWIN_C_SOURCE
+ #endif
+@@ -303,7 +303,7 @@ str_toupper(char *out, const char *in)
+  */
+ 
+ #ifdef ENABLE_HOST_CPU_DEVICES
+-#ifdef __linux__
++#if !defined(_WIN32) && !defined(__APPLE__)
+ #ifdef __x86_64__
+ 
+ #define DIV_OPCODE_SIZE 1
+@@ -335,7 +335,11 @@ sigfpe_signal_handler (int signo, siginf
+ {
+   ucontext_t *uc;
+   uc = (ucontext_t *)data;
++#ifdef __NetBSD__
++  unsigned char *eip = (unsigned char *)(uc->uc_mcontext.__gregs[_REG_RIP]);
++#else
+   unsigned char *eip = (unsigned char *)(uc->uc_mcontext.gregs[REG_RIP]);
++#endif
+ 
+   if ((signo == SIGFPE)
+       && ((si->si_code == FPE_INTDIV) || (si->si_code == FPE_INTOVF)))
+@@ -384,7 +388,11 @@ sigfpe_signal_handler (int signo, siginf
+             n += IP_RELATIVE_INDEXING;
+         }
+ 
++#ifdef __NetBSD__
++      uc->uc_mcontext.__gregs[_REG_RIP] += n;
++#else
+       uc->uc_mcontext.gregs[REG_RIP] += n;
++#endif
+       return;
+     }
+   else
+@@ -546,7 +554,7 @@ pocl_init_devices ()
+ 
+ 
+ #ifdef ENABLE_HOST_CPU_DEVICES
+-#ifdef __linux__
++#if !defined(_WIN32) && !defined(__APPLE__)
+ #ifdef __x86_64__
+ 
+   if (pocl_get_bool_option ("POCL_SIGFPE_HANDLER", 1))
diff -r 1d3a0cc30974 -r 0bb3323adcf5 parallel/pocl/patches/patch-lib_CL_devices_hsa_pocl-hsa.c
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/parallel/pocl/patches/patch-lib_CL_devices_hsa_pocl-hsa.c Thu Jun 10 09:57:39 2021 +0000
@@ -0,0 +1,17 @@
+$NetBSD: patch-lib_CL_devices_hsa_pocl-hsa.c,v 1.1 2021/06/10 09:57:40 nia Exp $
+
+Detect dlfcn.h (portable) instead of libdl (not portable).
+
+--- lib/CL/devices/hsa/pocl-hsa.c.orig 2021-05-19 08:12:19.000000000 +0000



Home | Main Index | Thread Index | Old Index