summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Baumann <mail@andreasbaumann.cc>2018-05-27 08:20:24 +0200
committerAndreas Baumann <mail@andreasbaumann.cc>2018-05-27 08:20:24 +0200
commit24c30f5e9479142383a8f43a3a2fb252ae518634 (patch)
tree97d652ffb7dba23d6173233f8220d6be7f46e122
parent01cf34e3f4a411326359941ded36d5664e4e1c3a (diff)
downloadpackages-24c30f5e9479142383a8f43a3a2fb252ae518634.tar.xz
community/arrayfire: patched for non-OpenCL testing and dim_t casts
-rw-r--r--community/arrayfire/PKGBUILD21
-rw-r--r--community/arrayfire/arrayfire-full-3.6.0-dim-cast.patch36
-rw-r--r--community/arrayfire/arrayfire-full-3.6.0-no-cuda-backend-testing.patch16
3 files changed, 73 insertions, 0 deletions
diff --git a/community/arrayfire/PKGBUILD b/community/arrayfire/PKGBUILD
index 95128825..dbc3d30d 100644
--- a/community/arrayfire/PKGBUILD
+++ b/community/arrayfire/PKGBUILD
@@ -1,5 +1,7 @@
+# modern cuda is no longer available for 32-bit
makedepends=(${makedepends[@]//cuda/})
+# force 32-bit compilation
eval "$(
declare -f build | \
sed '
@@ -10,3 +12,22 @@ eval "$(
}
'
)"
+
+# compilation issues around dim_t casts, see https://github.com/arrayfire/arrayfire/issues/2161
+source+=(arrayfire-full-3.6.0-dim-cast.patch)
+sha512sums+=('0db9eaac34c0d1126bb771ed62bbafe9aef0373ef947f54f308ed943f77cb81e543fbe9c107a781d76168fbb8effb6a4c3005b7c6dae4a2a0395ed26c9a2f33d')
+eval "$(
+ declare -f prepare | \
+ sed '
+ /cd /a patch -Np1 -i ${srcdir}/arrayfire-full-3.6.0-dim-cast.patch
+ '
+)"
+
+source+=(arrayfire-full-3.6.0-no-cuda-backend-testing.patch)
+sha512sums+=('7c5912ecf59932a4c00f859190174b5b88f01010d131dfef4b013940543f157698d048297eb8c86e1d5289df8f7eb6d769fd39f069b7bf3262800ceca98d09fc')
+eval "$(
+ declare -f prepare | \
+ sed '
+ /cd /a patch -Np1 -i ${srcdir}/arrayfire-full-3.6.0-no-cuda-backend-testing.patch
+ '
+)"
diff --git a/community/arrayfire/arrayfire-full-3.6.0-dim-cast.patch b/community/arrayfire/arrayfire-full-3.6.0-dim-cast.patch
new file mode 100644
index 00000000..d0ba0faa
--- /dev/null
+++ b/community/arrayfire/arrayfire-full-3.6.0-dim-cast.patch
@@ -0,0 +1,36 @@
+diff -rauN arrayfire-full-3.6.0/src/api/c/homography.cpp arrayfire-full-3.6.0-dim-cast-patch/src/api/c/homography.cpp
+--- arrayfire-full-3.6.0/src/api/c/homography.cpp 2018-05-02 20:53:08.000000000 +0200
++++ arrayfire-full-3.6.0-dim-cast-patch/src/api/c/homography.cpp 2018-05-26 17:12:16.120826525 +0200
+@@ -30,7 +30,7 @@
+ Array<T> bestH = createEmptyArray<T>(af::dim4(3, 3));
+ af_array initial;
+ unsigned d = (iterations + 256 - 1) / 256;
+- dim_t rdims[] = {4, d * 256};
++ dim_t rdims[] = {4, static_cast<dim_t>(d) * 256};
+ AF_CHECK(af_randu(&initial, 2, rdims, f32));
+ inliers = homography<T>(bestH,
+ getArray<float>(x_src), getArray<float>(y_src),
+diff -rauN arrayfire-full-3.6.0/src/backend/opencl/kernel/ireduce.hpp arrayfire-full-3.6.0-dim-cast-patch/src/backend/opencl/kernel/ireduce.hpp
+--- arrayfire-full-3.6.0/src/backend/opencl/kernel/ireduce.hpp 2018-05-02 20:53:08.000000000 +0200
++++ arrayfire-full-3.6.0-dim-cast-patch/src/backend/opencl/kernel/ireduce.hpp 2018-05-26 17:11:37.880234104 +0200
+@@ -361,7 +361,7 @@
+
+ uint groups_x = divup(in.info.dims[0], threads_x * REPEAT);
+ uint groups_y = divup(in.info.dims[1], threads_y);
+- Array<T> tmp = createEmptyArray<T>({groups_x, in.info.dims[1], in.info.dims[2], in.info.dims[3]});
++ Array<T> tmp = createEmptyArray<T>({static_cast<dim_t>(groups_x), in.info.dims[1], in.info.dims[2], in.info.dims[3]});
+
+ int tmp_elements = tmp.elements();
+ cl::Buffer *tidx = bufferAlloc(tmp_elements * sizeof(uint));
+diff -rauN arrayfire-full-3.6.0/src/backend/opencl/kernel/reduce.hpp arrayfire-full-3.6.0-dim-cast-patch/src/backend/opencl/kernel/reduce.hpp
+--- arrayfire-full-3.6.0/src/backend/opencl/kernel/reduce.hpp 2018-05-02 20:53:08.000000000 +0200
++++ arrayfire-full-3.6.0-dim-cast-patch/src/backend/opencl/kernel/reduce.hpp 2018-05-26 17:11:55.600508641 +0200
+@@ -301,7 +301,7 @@
+
+ uint groups_x = divup(in.info.dims[0], threads_x * REPEAT);
+ uint groups_y = divup(in.info.dims[1], threads_y);
+- Array<To> tmp = createEmptyArray<To>({groups_x, in.info.dims[1], in.info.dims[2], in.info.dims[3]});
++ Array<To> tmp = createEmptyArray<To>({static_cast<dim_t>(groups_x), in.info.dims[1], in.info.dims[2], in.info.dims[3]});
+
+ int tmp_elements = tmp.elements();
+
diff --git a/community/arrayfire/arrayfire-full-3.6.0-no-cuda-backend-testing.patch b/community/arrayfire/arrayfire-full-3.6.0-no-cuda-backend-testing.patch
new file mode 100644
index 00000000..f6904302
--- /dev/null
+++ b/community/arrayfire/arrayfire-full-3.6.0-no-cuda-backend-testing.patch
@@ -0,0 +1,16 @@
+diff -rauN arrayfire-full-3.6.0/test/CMakeLists.txt arrayfire-full-3.6.0-no-cuda-backend-testing-patch/test/CMakeLists.txt
+--- arrayfire-full-3.6.0/test/CMakeLists.txt 2018-05-02 20:53:08.000000000 +0200
++++ arrayfire-full-3.6.0-no-cuda-backend-testing-patch/test/CMakeLists.txt 2018-05-26 17:23:02.097495405 +0200
+@@ -49,9 +49,9 @@
+ list(APPEND enabled_backends "cuda")
+ endif(AF_BUILD_CUDA)
+
+-if(AF_BUILD_OPENCL)
+- list(APPEND enabled_backends "opencl")
+-endif(AF_BUILD_OPENCL)
++#if(AF_BUILD_OPENCL)
++# list(APPEND enabled_backends "opencl")
++#endif(AF_BUILD_OPENCL)
+
+ if(AF_BUILD_UNIFIED)
+ list(APPEND enabled_backends "unified")