New port: java/aparapi

aparapi is an open source API for expressing data parallel workflows in Java.

Originally an AMD product, Aparapi was released to open source on September
14, 2011. Aparapi is an API for expressing data parallel workloads in Java
and a runtime component capable of converting the Java# bytecode of compatible
workloads into OpenCL# so that it can be executed on a variety of GPU devices.

WWW: https://github.com/aparapi/aparapi

PR:		204024
Submitted by:	dieterich@ogolem.org
This commit is contained in:
Kurt Jaeger 2016-06-26 11:51:09 +00:00
parent b55fce5dc3
commit f8f66d777f
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=417519
9 changed files with 243 additions and 0 deletions

View file

@ -3,6 +3,7 @@
COMMENT = Java language support
SUBDIR += aparapi
SUBDIR += avis
SUBDIR += berkeley-db
SUBDIR += bluej

34
java/aparapi/Makefile Normal file
View file

@ -0,0 +1,34 @@
# Created by: Johannes Dieterich <dieterich@ogolem.org>
# $FreeBSD$
PORTNAME= aparapi
PORTVERSION= 1.0.0
DISTVERSIONSUFFIX= -SNAPSHOT
CATEGORIES= java lang
MAINTAINER= dieterich@ogolem.org
COMMENT= Open source API for expressing data parallel workflows in Java
LICENSE= BSD3CLAUSE
LICENSE_FILE= ${WRKSRC}/LICENSE.TXT
BUILD_DEPENDS= opencl>=0:devel/opencl
LIB_DEPENDS= libOpenCL.so:devel/ocl-icd
RUN_DEPENDS= opencl>=0:devel/opencl
ONLY_FOR_ARCHS= amd64 i386
USE_GITHUB= yes
USE_JAVA= yes
JAVA_VERSION= 1.7+
USE_ANT= yes
ALL_TARGET= dist
USES= dos2unix
do-install:
(cd ${WRKSRC}/dist_freebsd && ${INSTALL_DATA} aparapi.jar ${STAGEDIR}${JAVAJARDIR})
(cd ${WRKSRC}/dist_freebsd && ${INSTALL_LIB} libaparapi.so ${STAGEDIR}${PREFIX}/lib)
.include <bsd.port.mk>

3
java/aparapi/distinfo Normal file
View file

@ -0,0 +1,3 @@
TIMESTAMP = 1466929753
SHA256 (aparapi-aparapi-1.0.0-SNAPSHOT_GH0.tar.gz) = 4b3a4662476746406f2138e372730a64e566b87a464a767dd878e9794f30101a
SIZE (aparapi-aparapi-1.0.0-SNAPSHOT_GH0.tar.gz) = 5431817

View file

@ -0,0 +1,13 @@
--- build.xml.orig 2015-09-21 01:20:25 UTC
+++ build.xml
@@ -5,8 +5,9 @@
<condition property="x86_or_x86_64" value="x86" else="x86_64"> <or><os arch="x86" /><os arch="i386"/></or> </condition>
<condition property="dist" value="dist_windows_${x86_or_x86_64}"><os family="windows" /></condition>
- <condition property="dist" value="dist_linux_${x86_or_x86_64}"><and><not><os family="mac"/></not><os family="unix" /></and></condition>
+ <condition property="dist" value="dist_linux_${x86_or_x86_64}"><and><not><os family="mac"/></not><not><os name="FreeBSD"/></not><os family="unix" /></and></condition>
<condition property="dist" value="dist_mac_${x86_or_x86_64}"><os family="mac" /></condition>
+ <condition property="dist" value="dist_freebsd"><os name="FreeBSD" /></condition>
<target name="help">
<echo message="Available targets are:-"/>

View file

@ -0,0 +1,156 @@
--- com.amd.aparapi.jni/build.xml.orig 2015-09-21 01:20:25 UTC
+++ com.amd.aparapi.jni/build.xml
@@ -71,6 +71,23 @@ First consider editing the properties in
</and>
</condition>
+ <available property="freebsd.opencl.exists" file="/usr/local/lib/libOpenCL.so" type="file"/>
+ <condition property="amd.app.sdk.dir" value="/usr/local">
+ <and>
+ <os name="FreeBSD" />
+ <isset property="freebsd.opencl.exists" />
+ <not>
+ <isset property="win32.amd.app.sdk.exists" />
+ </not>
+ <not>
+ <isset property="win64.amd.app.sdk.exists" />
+ </not>
+ <not>
+ <isset property="linux.amd.app.sdk.exists" />
+ </not>
+ </and>
+ </condition>
+
<echo message="amd.app.sdk.dir ${amd.app.sdk.dir}"/>
<!-- Check for Visual Studio Compiler -->
@@ -300,9 +317,16 @@ First consider editing the properties in
<not>
<os family="mac" />
</not>
+ <not>
+ <os name="FreeBSD" />
+ </not>
</and>
</condition>
+ <condition property="use.clang_freebsd">
+ <os name="FreeBSD" />
+ </condition>
+
<condition property="use.gcc_mac">
<os family="mac" />
</condition>
@@ -352,6 +376,9 @@ First consider editing the properties in
<os family="mac" />
</not>
<not>
+ <os name="FreeBSD" />
+ </not>
+ <not>
<isset property="amd.app.sdk.dir" />
</not>
</and>
@@ -485,6 +512,45 @@ First consider editing the properties in
</exec>
</target>
+ <target name="clang_freebsd" if="use.clang_freebsd">
+ <mkdir dir="${basedir}/dist"/>
+ <echo message="freebsdcc ${os.arch}" />
+ <exec executable="clang++" failonerror="true">
+ <arg value="-m${gcc.m.value}" />
+ <arg value="-O3" />
+ <arg value="-g" />
+ <arg value="-fPIC" />
+ <arg value="-DCL_USE_DEPRECATED_OPENCL_1_1_APIS"/>
+ <arg value="-I${java.home}/../include" />
+ <arg value="-I${java.home}/../include/freebsd" />
+ <arg value="-Iinclude" />
+ <arg value="-I/usr/local/include" />
+ <arg value="-Isrc/cpp" />
+ <arg value="-Isrc/cpp/runKernel" />
+ <arg value="-Isrc/cpp/invoke" />
+ <arg value="-shared" />
+ <arg value="-o" />
+ <arg value="${basedir}/dist/libaparapi.so" />
+ <arg value="src/cpp/runKernel/Aparapi.cpp" />
+ <arg value="src/cpp/runKernel/ArrayBuffer.cpp" />
+ <arg value="src/cpp/runKernel/AparapiBuffer.cpp" />
+ <arg value="src/cpp/runKernel/Config.cpp" />
+ <arg value="src/cpp/runKernel/JNIContext.cpp" />
+ <arg value="src/cpp/runKernel/KernelArg.cpp" />
+ <arg value="src/cpp/runKernel/ProfileInfo.cpp" />
+ <arg value="src/cpp/runKernel/Range.cpp" />
+ <arg value="src/cpp/invoke/OpenCLJNI.cpp" />
+ <arg value="src/cpp/invoke/OpenCLArgDescriptor.cpp" />
+ <arg value="src/cpp/invoke/OpenCLMem.cpp" />
+ <arg value="src/cpp/CLHelper.cpp" />
+ <arg value="src/cpp/classtools.cpp" />
+ <arg value="src/cpp/JNIHelper.cpp" />
+ <arg value="src/cpp/agent.cpp" />
+ <arg value="-L/usr/local/lib" />
+ <arg value="-lOpenCL" />
+ </exec>
+ </target>
+
<target name="gcc_mac" if="use.gcc_mac">
<mkdir dir="${basedir}/dist"/>
<echo message="gcc ${os.arch}" />
@@ -575,7 +641,7 @@ First consider editing the properties in
</exec>
</target>
- <target name="build" depends="clean, javah, msvc, gcc, gcc_mac" />
+ <target name="build" depends="clean, javah, msvc, gcc, gcc_mac, clang_freebsd" />
<target name="msvc_cltest" if="use.msvc">
<mkdir dir="${basedir}\dist"/>
@@ -627,6 +693,24 @@ First consider editing the properties in
</exec>
</target>
+ <target name="freebsd_cltest" if="use.clang_freebsd">
+ <mkdir dir="${basedir}/dist"/>
+ <echo message="clang cltest ${os.arch}" />
+ <exec executable="clang++" failonerror="true">
+ <arg value="-O3" />
+ <arg value="-g" />
+ <arg value="-fPIC" />
+ <arg value="-DCL_USE_DEPRECATED_OPENCL_1_1_APIS"/>
+ <arg value="-I${java.home}/../include" />
+ <arg value="-I${java.home}/../include/freebsd" />
+ <arg value="-I/usr/local/include" />
+ <arg value="src/cpp/cltest.cpp" />
+ <arg value="-L/usr/local/lib -lOpenCL" />
+ <arg value="-o" />
+ <arg value="${basedir}/dist/cltest" />
+ </exec>
+ </target>
+
<target name="gcc_cltest" if="use.gcc">
<mkdir dir="${basedir}/dist"/>
<echo message="gcc cltest ${os.arch}" />
@@ -674,6 +758,20 @@ First consider editing the properties in
</exec>
</target>
- <target name="cltest" depends="check,msvc_cltest,mac_cltest,gcc_cltest" />
- <target name="clt" depends="check,gcc_clt,mac_clt" />
+ <target name="freebsd_clt" if="use.clang_freebsd">
+ <mkdir dir="${basedir}/dist"/>
+ <echo message="clang clt ${os.arch}" />
+ <exec executable="clang++" failonerror="true">
+ <arg value="-O3" />
+ <arg value="-g" />
+ <arg value="-fPIC" />
+ <arg value="src/cpp/classtools.cpp" />
+ <arg value="src/cpp/classtoolstest.cpp" />
+ <arg value="-o" />
+ <arg value="${basedir}/clt" />
+ </exec>
+ </target>
+
+ <target name="cltest" depends="check,msvc_cltest,mac_cltest,freebsd_cltest,gcc_cltest" />
+ <target name="clt" depends="check,gcc_clt,mac_clt,freebsd_clt" />
</project>

View file

@ -0,0 +1,11 @@
--- com.amd.aparapi.jni/src/cpp/Common.h.orig 2015-09-21 01:20:25 UTC
+++ com.amd.aparapi.jni/src/cpp/Common.h
@@ -44,7 +44,7 @@
#include <string.h>
#include <time.h>
-#ifndef __APPLE__
+#if not defined __APPLE__ && not defined __FreeBSD__
#include <malloc.h>
#endif

View file

@ -0,0 +1,15 @@
--- com.amd.aparapi/src/java/com/amd/aparapi/internal/opencl/OpenCLLoader.java.orig 2015-09-21 01:20:26 UTC
+++ com.amd.aparapi/src/java/com/amd/aparapi/internal/opencl/OpenCLLoader.java
@@ -26,10 +26,8 @@ public class OpenCLLoader extends OpenCL
logger.fine("arch = " + arch);
String aparapiLibraryName = null;
- if (arch.equals("amd64") || arch.equals("x86_64")) {
- aparapiLibraryName = "aparapi_x86_64";
- } else if (arch.equals("x86") || arch.equals("i386")) {
- aparapiLibraryName = "aparapi_x86";
+ if (arch.equals("amd64") || arch.equals("x86_64") || arch.equals("x86") || arch.equals("i386")) {
+ aparapiLibraryName = "aparapi";
} else {
logger.warning("Expected property os.arch to contain amd64, x86_64, x86 or i386 but instead found " + arch
+ " as a result we don't know which aparapi to attempt to load.");

8
java/aparapi/pkg-descr Normal file
View file

@ -0,0 +1,8 @@
aparapi is an open source API for expressing data parallel workflows in Java.
Originally an AMD product, Aparapi was released to open source on September
14, 2011. Aparapi is an API for expressing data parallel workloads in Java
and a runtime component capable of converting the Java# bytecode of compatible
workloads into OpenCL# so that it can be executed on a variety of GPU devices.
WWW: https://github.com/aparapi/aparapi

2
java/aparapi/pkg-plist Normal file
View file

@ -0,0 +1,2 @@
lib/libaparapi.so
%%JAVAJARDIR%%/aparapi.jar