From 443084838ba3bcb44317d166cf152c206389ef4e Mon Sep 17 00:00:00 2001 From: anish Date: Tue, 13 Jun 2023 16:55:11 +0200 Subject: [PATCH 01/10] =?UTF-8?q?[=C3=82SYSTEMDS-3546]=20good=20start?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/cpp/libAnish.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 src/main/cpp/libAnish.cpp diff --git a/src/main/cpp/libAnish.cpp b/src/main/cpp/libAnish.cpp new file mode 100644 index 00000000000..7220975503b --- /dev/null +++ b/src/main/cpp/libAnish.cpp @@ -0,0 +1,18 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ \ No newline at end of file From b07c4989340102a9ee6af906b1eb61dfcf628870 Mon Sep 17 00:00:00 2001 From: anish Date: Fri, 16 Jun 2023 02:13:00 +0200 Subject: [PATCH 02/10] [SYSTEMDS-3546] initial mkl native binding tested --- src/main/cpp/libAnish.cpp | 18 ----- src/main/cpp/systemds.cpp | 59 +++++++++------ src/main/cpp/systemds.h | 10 +++ .../org/apache/sysds/utils/NativeHelper.java | 3 + .../native/NativeBindingTestWithDgemm.java | 74 +++++++++++++++++++ 5 files changed, 125 insertions(+), 39 deletions(-) delete mode 100644 src/main/cpp/libAnish.cpp create mode 100644 src/test/java/org/apache/sysds/test/functions/native/NativeBindingTestWithDgemm.java diff --git a/src/main/cpp/libAnish.cpp b/src/main/cpp/libAnish.cpp deleted file mode 100644 index 7220975503b..00000000000 --- a/src/main/cpp/libAnish.cpp +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ \ No newline at end of file diff --git a/src/main/cpp/systemds.cpp b/src/main/cpp/systemds.cpp index 86ac053ad10..d67f42d1b18 100644 --- a/src/main/cpp/systemds.cpp +++ b/src/main/cpp/systemds.cpp @@ -38,8 +38,8 @@ #define GET_DOUBLE_ARRAY(env, input, numThreads) \ ((double*)env->GetPrimitiveArrayCritical(input, NULL)) // ( maxThreads != -1 && ((int)numThreads) == maxThreads ? ((double*)env->GetPrimitiveArrayCritical(input, NULL)) : env->GetDoubleArrayElements(input,NULL) ) - -// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- // From: https://developer.android.com/training/articles/perf-jni.html // 0 // Actual: the array object is un-pinned. @@ -54,9 +54,9 @@ #define RELEASE_ARRAY(env, input, inputPtr, numThreads) \ env->ReleasePrimitiveArrayCritical(input, inputPtr, 0) // ( maxThreads != -1 && ((int)numThreads) == maxThreads ? env->ReleasePrimitiveArrayCritical(input, inputPtr, 0) : env->ReleaseDoubleArrayElements(input, inputPtr, 0) ) - + // ------------------------------------------------------------------- -JNIEXPORT void JNICALL Java_org_apache_sysds_utils_NativeHelper_setMaxNumThreads +/*JNIEXPORT void JNICALL Java_org_apache_sysds_utils_NativeHelper_setMaxNumThreads (JNIEnv *, jclass, jint jmaxThreads) { setNumThreadsForBLAS(jmaxThreads); } @@ -76,7 +76,7 @@ JNIEXPORT jlong JNICALL Java_org_apache_sysds_utils_NativeHelper_dmmdd( RELEASE_INPUT_ARRAY(env, m1, m1Ptr, numThreads); RELEASE_INPUT_ARRAY(env, m2, m2Ptr, numThreads); - RELEASE_ARRAY(env, ret, retPtr, numThreads); + RELEASE_ARRAY(env, ret, retPtr, numThreads); return static_cast(nnz); } @@ -122,33 +122,33 @@ JNIEXPORT jboolean JNICALL Java_org_apache_sysds_utils_NativeHelper_conv2dSparse double* avalsPtr = GET_DOUBLE_ARRAY(env, avals, numThreads); double* filterPtr = GET_DOUBLE_ARRAY(env, filter, numThreads); double* retPtr = GET_DOUBLE_ARRAY(env, ret, numThreads); - - conv2dSparse((int)apos, (int)alen, aixPtr, avalsPtr, filterPtr, retPtr, (int)N, (int)C, (int)H, (int)W, + + conv2dSparse((int)apos, (int)alen, aixPtr, avalsPtr, filterPtr, retPtr, (int)N, (int)C, (int)H, (int)W, (int)K, (int)R, (int)S, (int)stride_h, (int)stride_w, (int)pad_h, (int)pad_w, (int)P, (int)Q, (int)numThreads); - + RELEASE_INPUT_ARRAY(env, avals, avalsPtr, numThreads); RELEASE_INPUT_ARRAY(env, filter, filterPtr, numThreads); env->ReleasePrimitiveArrayCritical(aix, aixPtr, JNI_ABORT); - RELEASE_ARRAY(env, ret, retPtr, numThreads); + RELEASE_ARRAY(env, ret, retPtr, numThreads); return (jboolean) true; } JNIEXPORT jboolean JNICALL Java_org_apache_sysds_utils_NativeHelper_conv2dBackwardFilterSparseDense - (JNIEnv * env, jclass, jint apos, jint alen, jintArray aix, jdoubleArray avals, jdoubleArray dout, + (JNIEnv * env, jclass, jint apos, jint alen, jintArray aix, jdoubleArray avals, jdoubleArray dout, jdoubleArray ret, jint N, jint C, jint H, jint W, jint K, jint R, jint S, jint stride_h, jint stride_w, jint pad_h, jint pad_w, jint P, jint Q, jint numThreads) { int* aixPtr = ((int*)env->GetPrimitiveArrayCritical(aix, NULL)); double* avalsPtr = GET_DOUBLE_ARRAY(env, avals, numThreads); double* doutPtr = GET_DOUBLE_ARRAY(env, dout, numThreads); double* retPtr = GET_DOUBLE_ARRAY(env, ret, numThreads); - - conv2dBackwardFilterSparseDense((int)apos, (int)alen, aixPtr, avalsPtr, doutPtr, retPtr, (int)N, (int)C, (int)H, (int)W, + + conv2dBackwardFilterSparseDense((int)apos, (int)alen, aixPtr, avalsPtr, doutPtr, retPtr, (int)N, (int)C, (int)H, (int)W, (int)K, (int)R, (int)S, (int)stride_h, (int)stride_w, (int)pad_h, (int)pad_w, (int)P, (int)Q, (int)numThreads); - + RELEASE_INPUT_ARRAY(env, avals, avalsPtr, numThreads); RELEASE_INPUT_ARRAY(env, dout, doutPtr, numThreads); env->ReleasePrimitiveArrayCritical(aix, aixPtr, JNI_ABORT); - RELEASE_ARRAY(env, ret, retPtr, numThreads); + RELEASE_ARRAY(env, ret, retPtr, numThreads); return (jboolean) true; } @@ -162,11 +162,11 @@ JNIEXPORT jlong JNICALL Java_org_apache_sysds_utils_NativeHelper_conv2dDense( double* retPtr = GET_DOUBLE_ARRAY(env, ret, numThreads); if(inputPtr == NULL || filterPtr == NULL || retPtr == NULL) return -1; - + size_t nnz = dconv2dBiasAddDense(inputPtr, 0, filterPtr, retPtr, (int) N, (int) C, (int) H, (int) W, (int) K, (int) R, (int) S, (int) stride_h, (int) stride_w, (int) pad_h, (int) pad_w, (int) P, (int) Q, false, (int) numThreads); - + RELEASE_INPUT_ARRAY(env, input, inputPtr, numThreads); RELEASE_INPUT_ARRAY(env, filter, filterPtr, numThreads); RELEASE_ARRAY(env, ret, retPtr, numThreads); @@ -184,11 +184,11 @@ JNIEXPORT jlong JNICALL Java_org_apache_sysds_utils_NativeHelper_dconv2dBiasAddD double* retPtr = GET_DOUBLE_ARRAY(env, ret, numThreads); if(inputPtr == NULL || biasPtr == NULL || filterPtr == NULL || retPtr == NULL) return -1; - + size_t nnz = dconv2dBiasAddDense(inputPtr, biasPtr, filterPtr, retPtr, (int) N, (int) C, (int) H, (int) W, (int) K, (int) R, (int) S, (int) stride_h, (int) stride_w, (int) pad_h, (int) pad_w, (int) P, (int) Q, true, (int) numThreads); - + RELEASE_INPUT_ARRAY(env, input, inputPtr, numThreads); RELEASE_INPUT_ARRAY(env, bias, biasPtr, numThreads); RELEASE_INPUT_ARRAY(env, filter, filterPtr, numThreads); @@ -199,7 +199,7 @@ JNIEXPORT jlong JNICALL Java_org_apache_sysds_utils_NativeHelper_dconv2dBiasAddD JNIEXPORT jlong JNICALL Java_org_apache_sysds_utils_NativeHelper_sconv2dBiasAddDense( JNIEnv* env, jclass, jobject input, jobject bias, jobject filter, jobject ret, jint N, jint C, jint H, jint W, jint K, jint R, jint S, - jint stride_h, jint stride_w, jint pad_h, jint pad_w, jint P, jint Q, jint numThreads) + jint stride_h, jint stride_w, jint pad_h, jint pad_w, jint P, jint Q, jint numThreads) { float* inputPtr = (float*) env->GetDirectBufferAddress(input); float* biasPtr = (float*) env->GetDirectBufferAddress(bias); @@ -207,7 +207,7 @@ JNIEXPORT jlong JNICALL Java_org_apache_sysds_utils_NativeHelper_sconv2dBiasAddD float* retPtr = (float*) env->GetDirectBufferAddress(ret); if(inputPtr == NULL || biasPtr == NULL || filterPtr == NULL || retPtr == NULL) return -1; - + size_t nnz = sconv2dBiasAddDense(inputPtr, biasPtr, filterPtr, retPtr, (int) N, (int) C, (int) H, (int) W, (int) K, (int) R, (int) S, (int) stride_h, (int) stride_w, (int) pad_h, (int) pad_w, (int) P, (int) Q, true, (int) numThreads); @@ -254,4 +254,21 @@ JNIEXPORT jlong JNICALL Java_org_apache_sysds_utils_NativeHelper_conv2dBackwardF RELEASE_INPUT_ARRAY(env, dout, doutPtr, numThreads); RELEASE_ARRAY(env, ret, retPtr, numThreads); return static_cast(nnz); -} \ No newline at end of file +}*/ + +JNIEXPORT void JNICALL Java_org_apache_sysds_utils_NativeHelper_testNativeBindingWithDgemm + (JNIEnv* env, jclass cls, jchar transa, jchar transb, jint m, jint n, jint k, jdouble alpha, jdoubleArray A, jint lda, jdoubleArray B, jint ldb, jdouble beta, jdoubleArray C, jint ldc) { + + // Obtain native pointers to Java arrays + jdouble* nativeA = env->GetDoubleArrayElements(A, NULL); + jdouble* nativeB = env->GetDoubleArrayElements(B, NULL); + jdouble* nativeC = env->GetDoubleArrayElements(C, NULL); + + // Perform matrix multiplication using Intel MKL library + cblas_dgemm(CblasRowMajor, CblasNoTrans, CblasNoTrans, m, n, k, alpha, nativeA, lda, nativeB, ldb, beta, nativeC, ldc); + + // Release the native pointers + env->ReleaseDoubleArrayElements(A, nativeA, 0); + env->ReleaseDoubleArrayElements(B, nativeB, 0); + env->ReleaseDoubleArrayElements(C, nativeC, 0); +} diff --git a/src/main/cpp/systemds.h b/src/main/cpp/systemds.h index b4f741f2904..b3dd4b7504a 100644 --- a/src/main/cpp/systemds.h +++ b/src/main/cpp/systemds.h @@ -114,6 +114,16 @@ JNIEXPORT jboolean JNICALL Java_org_apache_sysds_utils_NativeHelper_conv2dSparse JNIEXPORT void JNICALL Java_org_apache_sysds_utils_NativeHelper_setMaxNumThreads (JNIEnv *, jclass, jint); + /* + * Class: org_apache_sysds_utils_NativeHelper + * Method: testNativeBindingWithDgemm + * Signature: (CCIIID[DI[DID[DI)V + */ + +JNIEXPORT void JNICALL Java_org_apache_sysds_utils_NativeHelper_testNativeBindingWithDgemm + (JNIEnv *, jclass, jchar, jchar, jint, jint, jint, jdouble, jdoubleArray, jint, jdoubleArray, jint, jdouble, jdoubleArray, jint); + + #ifdef __cplusplus } #endif diff --git a/src/main/java/org/apache/sysds/utils/NativeHelper.java b/src/main/java/org/apache/sysds/utils/NativeHelper.java index f673ba4e4e0..50a2c7d69a2 100644 --- a/src/main/java/org/apache/sysds/utils/NativeHelper.java +++ b/src/main/java/org/apache/sysds/utils/NativeHelper.java @@ -416,4 +416,7 @@ public static native boolean conv2dSparse(int apos, int alen, int[] aix, double[ // different tradeoffs. In current implementation, we always use GetPrimitiveArrayCritical as it has proven to be // fastest. We can revisit this decision later and hence I would not recommend removing this method. private static native void setMaxNumThreads(int numThreads); + + //test interface for native binding + public static native void testNativeBindingWithDgemm(char transa, char transb, int m, int n, int k, double alpha, double[] A, int lda, double[] B, int ldb, double beta, double[] C, int ldc); } diff --git a/src/test/java/org/apache/sysds/test/functions/native/NativeBindingTestWithDgemm.java b/src/test/java/org/apache/sysds/test/functions/native/NativeBindingTestWithDgemm.java new file mode 100644 index 00000000000..14b64927f7e --- /dev/null +++ b/src/test/java/org/apache/sysds/test/functions/native/NativeBindingTestWithDgemm.java @@ -0,0 +1,74 @@ +import java.util.Random; +import org.apache.sysds.utils.NativeHelper; + +public class NativeBindingTestWithDgemm { + static { + System.loadLibrary("systemds_mkl-Darwin-x86_64"); + } + // Helper method to flatten a 2D matrix into a 1D array + private double[] flattenMatrix(double[][] matrix) { + int rows = matrix.length; + int columns = matrix[0].length; + double[] flattened = new double[rows * columns]; + + for (int i = 0; i < rows; i++) { + for (int j = 0; j < columns; j++) { + flattened[i * columns + j] = matrix[i][j]; + } + } + + return flattened; + } + + // Helper method to generate a random matrix + private double[][] generateRandomMatrix(int rows, int columns) { + Random random = new Random(); + double[][] matrix = new double[rows][columns]; + + for (int i = 0; i < rows; i++) { + for (int j = 0; j < columns; j++) { + matrix[i][j] = random.nextDouble(); + } + } + + return matrix; + } + + // Method to test the dgemm function + public void testDgemm() { + char transa = 'N'; + char transb = 'N'; + int m = 2000; + int n = 200; + int k = 1000; + double alpha = 1.0; + double beta = 0.0; + + // Generate random input matrices A, B, and C + double[][] A = generateRandomMatrix(m, k); + double[][] B = generateRandomMatrix(k, n); + double[][] C = new double[m][n]; + + // Convert matrices to 1D arrays + double[] flatA = flattenMatrix(A); + double[] flatB = flattenMatrix(B); + double[] flatC = flattenMatrix(C); + + // Call the native dgemm method + + NativeHelper.testNativeBindingWithDgemm(transa, transb, m, n, k, alpha, flatA, k, flatB, n, beta, flatC, n); + + // Print the result matrix C + System.out.println("Result Matrix C:"); + for (int i = 0; i < m; i++) { + for (int j = 0; j < n; j++) { + System.out.print(flatC[i * n + j] + " "); + } + System.out.println(); + } + } + + public static void main(String[] args) { + new NativeBindingTestWithDgemm().testDgemm(); + } +} From a222abbfdd020943074b66db997d0d424d14c74b Mon Sep 17 00:00:00 2001 From: anish Date: Fri, 14 Jul 2023 13:43:13 +0200 Subject: [PATCH 03/10] image rotation using mkl lib initial implementation --- src/main/cpp/imgUtils.cpp | 130 ++++++++++++++++ src/main/cpp/imgUtils.h | 30 ++++ src/main/cpp/lib/libhe-Linux-x86_64.so | Bin 168696 -> 0 bytes .../cpp/lib/libsystemds_mkl-Linux-x86_64.so | Bin 39384 -> 0 bytes .../cpp/lib/libsystemds_mkl-Windows-AMD64.dll | Bin 28160 -> 0 bytes .../lib/libsystemds_openblas-Linux-x86_64.so | Bin 43144 -> 0 bytes .../libsystemds_openblas-Windows-AMD64.dll | Bin 29696 -> 0 bytes .../libsystemds_spoof_cuda-Linux-x86_64.so | Bin 290480 -> 0 bytes .../libsystemds_spoof_cuda-Windows-AMD64.dll | Bin 244736 -> 0 bytes .../test/functions/native/ImgUtilsTest.java | 143 ++++++++++++++++++ 10 files changed, 303 insertions(+) create mode 100644 src/main/cpp/imgUtils.cpp create mode 100644 src/main/cpp/imgUtils.h delete mode 100644 src/main/cpp/lib/libhe-Linux-x86_64.so delete mode 100644 src/main/cpp/lib/libsystemds_mkl-Linux-x86_64.so delete mode 100644 src/main/cpp/lib/libsystemds_mkl-Windows-AMD64.dll delete mode 100644 src/main/cpp/lib/libsystemds_openblas-Linux-x86_64.so delete mode 100644 src/main/cpp/lib/libsystemds_openblas-Windows-AMD64.dll delete mode 100644 src/main/cpp/lib/libsystemds_spoof_cuda-Linux-x86_64.so delete mode 100644 src/main/cpp/lib/libsystemds_spoof_cuda-Windows-AMD64.dll create mode 100644 src/test/java/org/apache/sysds/test/functions/native/ImgUtilsTest.java diff --git a/src/main/cpp/imgUtils.cpp b/src/main/cpp/imgUtils.cpp new file mode 100644 index 00000000000..987ef1f8b5f --- /dev/null +++ b/src/main/cpp/imgUtils.cpp @@ -0,0 +1,130 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +#include +#include +#include "mkl.h" + +using namespace std; + +void printImage(const double* image, int rows, int cols) { + for (int i = 0; i < rows; i++) { + for (int j = 0; j < cols; j++) { + cout << image[i * cols + j] << " "; + } + cout << endl; + } +} + +void m_img_transform(const double* img_in, int orig_w, int orig_h, int out_w, int out_h, double a, double b, double c, double d, + double e, double f, double fill_value, double* img_out) { + double divisor = a * e - b * d; + if (divisor == 0) { + std::cout << "Inverse matrix does not exist! Returning input." << std::endl; + for (int i = 0; i < orig_h; i++) { + for (int j = 0; j < orig_w; j++) { + img_out[i * orig_w + j] = img_in[i * orig_w + j]; + } + } + } else { + // Create the inverted transformation matrix + double T_inv[9]; + T_inv[0] = e / divisor; + T_inv[1] = -b / divisor; + T_inv[2] = (b * f - c * e) / divisor; + T_inv[3] = -d / divisor; + T_inv[4] = a / divisor; + T_inv[5] = (c * d - a * f) / divisor; + T_inv[6] = 0.0; + T_inv[7] = 0.0; + T_inv[8] = 1.0; + + // Create the coordinates of output pixel centers linearized in row-major order + double* coords = new double[2 * out_w * out_h]; + for (int i = 0; i < out_h; i++) { + for (int j = 0; j < out_w; j++) { + coords[2 * (i * out_w + j)] = j + 0.5; + coords[2 * (i * out_w + j) + 1] = i + 0.5; + } + } + + // Perform matrix multiplication to compute sampling pixel indices + double* transformed_coords = new double[2 * out_w * out_h]; + for (int i = 0; i < out_w * out_h; i++) { + double x = coords[2 * i]; + double y = coords[2 * i + 1]; + transformed_coords[2 * i] = std::floor(T_inv[0] * x + T_inv[1] * y + T_inv[2]) + 1; + transformed_coords[2 * i + 1] = std::floor(T_inv[3] * x + T_inv[4] * y + T_inv[5]) + 1; + } + + // Fill output image + for (int i = 0; i < out_h; i++) { + for (int j = 0; j < out_w; j++) { + int inx = static_cast(transformed_coords[2 * (i * out_w + j)]) - 1; + int iny = static_cast(transformed_coords[2 * (i * out_w + j) + 1]) - 1; + if (inx >= 0 && inx < orig_w && iny >= 0 && iny < orig_h) { + img_out[i * out_w + j] = img_in[iny * orig_w + inx]; + } else { + img_out[i * out_w + j] = fill_value; + } + } + } + + delete[] coords; + delete[] transformed_coords; + } +} + +void imageRotate(double* img_in, int rows, int cols, double radians, double fill_value, double* img_out) { + // Translation matrix for moving the origin to the center of the image + double t1_data[] = { + 1, 0, static_cast(-cols / 2), + 0, 1, static_cast(-rows / 2), + 0, 0, 1 + }; + double* t1 = t1_data; + + // Translation matrix for moving the origin back to the top left corner + double t2_data[] = { + 1, 0, static_cast(cols / 2), + 0, 1, static_cast(rows / 2), + 0, 0, 1 + }; + double* t2 = t2_data; + + // The rotation matrix around the origin + double rot_data[] = { + cos(radians), sin(radians), 0, + -sin(radians), cos(radians), 0, + 0, 0, 1 + }; + double* rot = rot_data; + + // Combined transformation matrix + int matrix_size = std::max(rows, cols); + double m_data[matrix_size * matrix_size]; + cblas_dgemm(CblasRowMajor, CblasNoTrans, CblasNoTrans, 3, 3, 3, 1.0, t2, 3, rot, 3, 0.0, m_data, 3); + cblas_dgemm(CblasRowMajor, CblasNoTrans, CblasNoTrans, 3, 3, 3, 1.0, m_data, 3, t1, 3, 0.0, m_data, 3); + double* m = m_data; + + + // Transform image + //imgTransform(img_in, rows, cols, m[0], m[1], m[2], m[3], m[4], m[5], fill_value, img_out); + m_img_transform(img_in,rows,cols,rows,cols,m[0], m[1], m[2], m[3], m[4], m[5], fill_value, img_out); +} diff --git a/src/main/cpp/imgUtils.h b/src/main/cpp/imgUtils.h new file mode 100644 index 00000000000..6f964b2f422 --- /dev/null +++ b/src/main/cpp/imgUtils.h @@ -0,0 +1,30 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +#ifndef IMAGE_UTILS_H +#define IMAGE_UTILS_H + +void printImage(const double* image, int rows, int cols); + +void m_img_transform(const double* img_in, int orig_w, int orig_h, int out_w, int out_h, double a, double b, double c, double d, + double e, double f, double fill_value, double* img_out); + +void imageRotate(double* img_in, int rows, int cols, double radians, double fill_value, double* img_out); + +#endif /* IMAGE_UTILS_H */ diff --git a/src/main/cpp/lib/libhe-Linux-x86_64.so b/src/main/cpp/lib/libhe-Linux-x86_64.so deleted file mode 100644 index 5d55922788b8ab95c41042ce8bce3e5b7d6e784e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 168696 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

Ucf>);)~S9o(DJWl6d-UnZ;@q|9V8{*K; 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 RfZ^iLxmxirBtpn5`#)N@cp(4) diff --git a/src/main/cpp/lib/libsystemds_mkl-Linux-x86_64.so b/src/main/cpp/lib/libsystemds_mkl-Linux-x86_64.so deleted file mode 100644 index a677b9401380474a09a18b919558cef0fd266276..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39384 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 diff --git a/src/main/cpp/lib/libsystemds_mkl-Windows-AMD64.dll b/src/main/cpp/lib/libsystemds_mkl-Windows-AMD64.dll deleted file mode 100644 index ca4c24ed2a0cf2012aa996b9604169321c3c13c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28160 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 T!lN~w)@#DUIvXRHSoi)fh)O`q diff --git a/src/main/cpp/lib/libsystemds_openblas-Windows-AMD64.dll b/src/main/cpp/lib/libsystemds_openblas-Windows-AMD64.dll deleted file mode 100644 index 78d7ac119c675574d0f3a2b7d02566559d85bcc3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29696 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 M0KfYD8FJu%0K)$k$p8QV diff --git a/src/main/cpp/lib/libsystemds_spoof_cuda-Linux-x86_64.so b/src/main/cpp/lib/libsystemds_spoof_cuda-Linux-x86_64.so deleted file mode 100644 index 70f0d81275316eb31e393460840bf901ffc70fa9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 290480 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 diff --git a/src/main/cpp/lib/libsystemds_spoof_cuda-Windows-AMD64.dll b/src/main/cpp/lib/libsystemds_spoof_cuda-Windows-AMD64.dll deleted file mode 100644 index b005c1b2c55b02a9ca58d5c581a5822865122765..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 244736 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

ObS}ZZ8bY=rDF)!144ByloCk@#CAe2QX?5rAM&9 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�MEtKGK--wxT#Jfv8D7|)Ve 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 PEw-(be2_@~zyJLo(K<+D diff --git a/src/test/java/org/apache/sysds/test/functions/native/ImgUtilsTest.java b/src/test/java/org/apache/sysds/test/functions/native/ImgUtilsTest.java new file mode 100644 index 00000000000..6218ca359a4 --- /dev/null +++ b/src/test/java/org/apache/sysds/test/functions/native/ImgUtilsTest.java @@ -0,0 +1,143 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import org.apache.sysds.utils.NativeHelper; +import org.junit.Assert; + +import org.junit.Test; + +public class ImgUtilsTest { + + static { + System.loadLibrary("systemds_mkl-Darwin-x86_64"); + } + @Test + public void testImageRotation90() { + // Input image dimensions + int rows = 4; + int cols = 4; + + // Input image + double[] img_in = { + 1.0, 2.0, 3.0, 4.0, + 5.0, 6.0, 7.0, 8.0, + 9.0, 10.0, 11.0, 12.0, + 13.0, 14.0, 15.0, 16.0 + }; + + // Rotation angle in radians + double radians = Math.PI / 2; + + // Fill value for the output image + double fill_value = 0.0; + + // Expected output image + double[] expected_img_out = { + 4.0, 8.0, 12.0, 16.0, + 3.0, 7.0, 11.0, 15.0, + 2.0, 6.0, 10.0, 14.0, + 1.0, 5.0, 9.0, 13.0 + }; + + // Create the output image array + double[] img_out = new double[rows * cols]; + NativeHelper.imageRotate(img_in, rows, cols, radians, fill_value, img_out); + Assert.assertArrayEquals(expected_img_out, img_out, 0.0001); + } + + @Test + public void testImageRotation45() { + // Input image dimensions + int rows = 6; + int cols = 6; + + // Input image + double[] img_in = { + 1.0, 2.0, 3.0, 4.0,5.0,6.0, + 5.0, 6.0, 7.0, 8.0,9.0,10.0, + 9.0, 10.0, 11.0, 12.0,13.0,14.0, + 13.0, 14.0, 15.0, 16.0,17.0,18.0, + 17.0, 18.0, 19.0, 20.0, 21.0, 22.0, + 21.0,22.0,23.0,24.0,25.0,26.0 + }; + + // Rotation angle in radians + double radians = Math.PI / 4; + + // Fill value for the output image + double fill_value = 0.0; + + // Expected output image + double[] expected_img_out = { + 0, 4, 5, 10 ,14, 0, + 3, 4, 8 ,13 ,18 ,18, + 2, 7, 12 ,16 ,17 ,22, + 5, 10, 15 ,16, 20 ,25, + 9, 13, 14, 19, 24 ,24, + 0, 13, 17 ,22, 23 ,0 + }; + + // Create the output image array + double[] img_out = new double[rows * cols]; + + // Rotate the image + NativeHelper.imageRotate(img_in, rows, cols, radians, fill_value, img_out); + + // Compare the output image with the expected image + Assert.assertArrayEquals(expected_img_out, img_out, 0.0001); + } + + @Test + public void testImageRotation180() { + // Input image dimensions + int rows = 4; + int cols = 4; + + // Input image + double[] img_in = { + 1.0, 2.0, 3.0, 4.0, + 5.0, 6.0, 7.0, 8.0, + 9.0, 10.0, 11.0, 12.0, + 13.0, 14.0, 15.0, 16.0 + }; + + // Rotation angle in radians + double radians = Math.PI; + + // Fill value for the output image + double fill_value = 0.0; + + // Expected output image + double[] expected_img_out = { + 16.0, 15.0, 14.0, 13.0, + 12.0, 11.0, 10.0, 9.0, + 8.0, 7.0, 6.0, 5.0, + 4.0, 3.0, 2.0, 1.0 + }; + + // Create the output image array + double[] img_out = new double[rows * cols]; + + // Rotate the image + NativeHelper.imageRotate(img_in, rows, cols, radians, fill_value, img_out); + + // Compare the output image with the expected image + Assert.assertArrayEquals(expected_img_out, img_out, 0.0001); + } +} From 4ce1d42b87cd204271155797540f6bd4523b8809 Mon Sep 17 00:00:00 2001 From: anish Date: Fri, 14 Jul 2023 13:49:57 +0200 Subject: [PATCH 04/10] image rotation using mkl lib initial implementation --- src/main/cpp/systemds.cpp | 26 +++++++++++++++++++++++--- src/main/cpp/systemds.h | 8 ++++++++ 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/src/main/cpp/systemds.cpp b/src/main/cpp/systemds.cpp index d67f42d1b18..6e39795fcb1 100644 --- a/src/main/cpp/systemds.cpp +++ b/src/main/cpp/systemds.cpp @@ -27,7 +27,7 @@ #include "libmatrixdnn.h" #include "libmatrixmult.h" #include "systemds.h" - +#include "imgUtils.h" // Results from Matrix-vector/vector-matrix 1M x 1K, dense show that GetDoubleArrayElements creates a copy on OpenJDK. // Logic: @@ -254,8 +254,8 @@ JNIEXPORT jlong JNICALL Java_org_apache_sysds_utils_NativeHelper_conv2dBackwardF RELEASE_INPUT_ARRAY(env, dout, doutPtr, numThreads); RELEASE_ARRAY(env, ret, retPtr, numThreads); return static_cast(nnz); -}*/ - +} +*/ JNIEXPORT void JNICALL Java_org_apache_sysds_utils_NativeHelper_testNativeBindingWithDgemm (JNIEnv* env, jclass cls, jchar transa, jchar transb, jint m, jint n, jint k, jdouble alpha, jdoubleArray A, jint lda, jdoubleArray B, jint ldb, jdouble beta, jdoubleArray C, jint ldc) { @@ -272,3 +272,23 @@ JNIEXPORT void JNICALL Java_org_apache_sysds_utils_NativeHelper_testNativeBindin env->ReleaseDoubleArrayElements(B, nativeB, 0); env->ReleaseDoubleArrayElements(C, nativeC, 0); } + +JNIEXPORT void JNICALL Java_org_apache_sysds_utils_NativeHelper_imageRotate(JNIEnv* env, jclass clazz, jdoubleArray img_in, jint rows, jint cols, jdouble radians, jdouble fill_value, jdoubleArray img_out) { + // Get input image data + + jsize num_pixels = env->GetArrayLength(img_in); + jdouble* img_in_data = env->GetDoubleArrayElements(img_in, NULL); + + // Create output image array + jdouble* img_out_data = new jdouble[num_pixels]; + + // Rotate the image + imageRotate(img_in_data, rows, cols, radians, fill_value, img_out_data); + + // Set the output image data + env->SetDoubleArrayRegion(img_out, 0, num_pixels, img_out_data); + + // Clean up + delete[] img_out_data; + env->ReleaseDoubleArrayElements(img_in, img_in_data, JNI_ABORT); +} \ No newline at end of file diff --git a/src/main/cpp/systemds.h b/src/main/cpp/systemds.h index b3dd4b7504a..98f4de5bd79 100644 --- a/src/main/cpp/systemds.h +++ b/src/main/cpp/systemds.h @@ -123,6 +123,14 @@ JNIEXPORT void JNICALL Java_org_apache_sysds_utils_NativeHelper_setMaxNumThreads JNIEXPORT void JNICALL Java_org_apache_sysds_utils_NativeHelper_testNativeBindingWithDgemm (JNIEnv *, jclass, jchar, jchar, jint, jint, jint, jdouble, jdoubleArray, jint, jdoubleArray, jint, jdouble, jdoubleArray, jint); +/* + * Class: org_apache_sysds_utils_NativeHelper + * Method: imageRotate + * Signature: ([DIIIDD[D)V + */ +JNIEXPORT void JNICALL Java_org_apache_sysds_utils_NativeHelper_imageRotate + (JNIEnv *, jclass, jdoubleArray, jint, jint, jdouble, jdouble, jdoubleArray); + #ifdef __cplusplus } From 7698dfe993b1818dedf1d23620a261d3982173e7 Mon Sep 17 00:00:00 2001 From: anish Date: Fri, 14 Jul 2023 15:41:07 +0200 Subject: [PATCH 05/10] image rotation using mkl lib initial implementation --- src/main/java/org/apache/sysds/utils/NativeHelper.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/org/apache/sysds/utils/NativeHelper.java b/src/main/java/org/apache/sysds/utils/NativeHelper.java index 50a2c7d69a2..e217dee8a2d 100644 --- a/src/main/java/org/apache/sysds/utils/NativeHelper.java +++ b/src/main/java/org/apache/sysds/utils/NativeHelper.java @@ -419,4 +419,8 @@ public static native boolean conv2dSparse(int apos, int alen, int[] aix, double[ //test interface for native binding public static native void testNativeBindingWithDgemm(char transa, char transb, int m, int n, int k, double alpha, double[] A, int lda, double[] B, int ldb, double beta, double[] C, int ldc); + + //image rotation + public static native void imageRotate(double[] img_in, int rows, int cols, double radians, double fill_value, double[] img_out); + } From a8934f3c02e374712ab79043e089aaf44197b99a Mon Sep 17 00:00:00 2001 From: anish Date: Fri, 14 Jul 2023 18:42:34 +0200 Subject: [PATCH 06/10] image rotation using mkl lib initial implementation --- .../{native => nativ}/ImgUtilsTest.java | 2 +- .../nativ/NativeBindingTestWithDgemm.java | 140 ++++++++++++++++++ 2 files changed, 141 insertions(+), 1 deletion(-) rename src/test/java/org/apache/sysds/test/functions/{native => nativ}/ImgUtilsTest.java (98%) create mode 100644 src/test/java/org/apache/sysds/test/functions/nativ/NativeBindingTestWithDgemm.java diff --git a/src/test/java/org/apache/sysds/test/functions/native/ImgUtilsTest.java b/src/test/java/org/apache/sysds/test/functions/nativ/ImgUtilsTest.java similarity index 98% rename from src/test/java/org/apache/sysds/test/functions/native/ImgUtilsTest.java rename to src/test/java/org/apache/sysds/test/functions/nativ/ImgUtilsTest.java index 6218ca359a4..6f34df06b6b 100644 --- a/src/test/java/org/apache/sysds/test/functions/native/ImgUtilsTest.java +++ b/src/test/java/org/apache/sysds/test/functions/nativ/ImgUtilsTest.java @@ -16,10 +16,10 @@ * specific language governing permissions and limitations * under the License. */ +package org.apache.sysds.test.functions.nativ; import org.apache.sysds.utils.NativeHelper; import org.junit.Assert; - import org.junit.Test; public class ImgUtilsTest { diff --git a/src/test/java/org/apache/sysds/test/functions/nativ/NativeBindingTestWithDgemm.java b/src/test/java/org/apache/sysds/test/functions/nativ/NativeBindingTestWithDgemm.java new file mode 100644 index 00000000000..6a985dcfca9 --- /dev/null +++ b/src/test/java/org/apache/sysds/test/functions/nativ/NativeBindingTestWithDgemm.java @@ -0,0 +1,140 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.sysds.test.functions.nativ; + +import java.util.Random; +import org.apache.sysds.utils.NativeHelper; +import org.junit.Assert; +import org.junit.Test; + +public class NativeBindingTestWithDgemm { + static { + System.loadLibrary("systemds_openblas-Darwin-x86_64"); + } + // Helper method to flatten a 2D matrix into a 1D array + private double[] flattenMatrix(double[][] matrix) { + int rows = matrix.length; + int columns = matrix[0].length; + double[] flattened = new double[rows * columns]; + + for (int i = 0; i < rows; i++) { + for (int j = 0; j < columns; j++) { + flattened[i * columns + j] = matrix[i][j]; + } + } + + return flattened; + } + + // Helper method to generate a random matrix + private double[][] generateRandomMatrix(int rows, int columns) { + Random random = new Random(); + double[][] matrix = new double[rows][columns]; + + for (int i = 0; i < rows; i++) { + for (int j = 0; j < columns; j++) { + matrix[i][j] = random.nextDouble(); + } + } + + return matrix; + } + + public void testImageRotation() { + // Input image dimensions + int rows = 4; + int cols = 4; + + // Input image + double[] img_in = { + 1, 1, 1, 0, + 0, 3, 1, 2, + 2, 3, 1, 0, + 1, 0, 2, 1 + }; + + // Rotation angle in radians + double radians = Math.PI / 2; + + // Fill value for the output image + double fill_value = 0.0; + + // Expected output image + double[] expected_img_out = { + 0, 2, 0, 1, + 1, 1, 1, 2, + 1, 3, 3, 0, + 1, 0, 2, 1 + }; + + // Create the output image array + double[] img_out = new double[rows * cols]; + + // Rotate the image + NativeHelper.imageRotate(img_in, rows, cols, radians, fill_value, img_out); + + // Compare the output image with the expected image + Assert.assertArrayEquals(expected_img_out, img_out, 0.0001); + } + + // Method to test the dgemm function + public void testDgemm() { + char transa = 'N'; + char transb = 'N'; + int m = 2000; + int n = 100; + int k = 1000; + double alpha = 1.0; + double beta = 0.0; + + // Generate random input matrices A, B, and C + double[][] A = generateRandomMatrix(m, k); + double[][] B = generateRandomMatrix(k, n); + double[][] C = new double[m][n]; + + // Convert matrices to 1D arrays + double[] flatA = flattenMatrix(A); + double[] flatB = flattenMatrix(B); + double[] flatC = flattenMatrix(C); + + // Call the native dgemm method + long startTime = System.currentTimeMillis(); + NativeHelper.testNativeBindingWithDgemm(transa, transb, m, n, k, alpha, flatA, k, flatB, n, beta, flatC, n); + long endTime = System.currentTimeMillis(); + long executionTime = (endTime - startTime); + + + + // Print the result matrix C + /*System.out.println("Result Matrix C:"); + for (int i = 0; i < m; i++) { + for (int j = 0; j < n; j++) { + System.out.print(flatC[i * n + j] + " "); + } + System.out.println(); + }*/ + System.out.println("Execution time: " + executionTime + " ms"); + } + + public static void main(String[] args) { + new NativeBindingTestWithDgemm().testDgemm(); + new NativeBindingTestWithDgemm().testImageRotation(); + } +} From 8f9689157434e255df195c7bf6c2201172f068be Mon Sep 17 00:00:00 2001 From: anishsapkota <68165368+anishsapkota@users.noreply.github.com> Date: Sun, 16 Jul 2023 12:32:49 +0200 Subject: [PATCH 07/10] Delete src/test/java/org/apache/sysds/test/functions/native directory --- .../native/NativeBindingTestWithDgemm.java | 74 ------------------- 1 file changed, 74 deletions(-) delete mode 100644 src/test/java/org/apache/sysds/test/functions/native/NativeBindingTestWithDgemm.java diff --git a/src/test/java/org/apache/sysds/test/functions/native/NativeBindingTestWithDgemm.java b/src/test/java/org/apache/sysds/test/functions/native/NativeBindingTestWithDgemm.java deleted file mode 100644 index 14b64927f7e..00000000000 --- a/src/test/java/org/apache/sysds/test/functions/native/NativeBindingTestWithDgemm.java +++ /dev/null @@ -1,74 +0,0 @@ -import java.util.Random; -import org.apache.sysds.utils.NativeHelper; - -public class NativeBindingTestWithDgemm { - static { - System.loadLibrary("systemds_mkl-Darwin-x86_64"); - } - // Helper method to flatten a 2D matrix into a 1D array - private double[] flattenMatrix(double[][] matrix) { - int rows = matrix.length; - int columns = matrix[0].length; - double[] flattened = new double[rows * columns]; - - for (int i = 0; i < rows; i++) { - for (int j = 0; j < columns; j++) { - flattened[i * columns + j] = matrix[i][j]; - } - } - - return flattened; - } - - // Helper method to generate a random matrix - private double[][] generateRandomMatrix(int rows, int columns) { - Random random = new Random(); - double[][] matrix = new double[rows][columns]; - - for (int i = 0; i < rows; i++) { - for (int j = 0; j < columns; j++) { - matrix[i][j] = random.nextDouble(); - } - } - - return matrix; - } - - // Method to test the dgemm function - public void testDgemm() { - char transa = 'N'; - char transb = 'N'; - int m = 2000; - int n = 200; - int k = 1000; - double alpha = 1.0; - double beta = 0.0; - - // Generate random input matrices A, B, and C - double[][] A = generateRandomMatrix(m, k); - double[][] B = generateRandomMatrix(k, n); - double[][] C = new double[m][n]; - - // Convert matrices to 1D arrays - double[] flatA = flattenMatrix(A); - double[] flatB = flattenMatrix(B); - double[] flatC = flattenMatrix(C); - - // Call the native dgemm method - - NativeHelper.testNativeBindingWithDgemm(transa, transb, m, n, k, alpha, flatA, k, flatB, n, beta, flatC, n); - - // Print the result matrix C - System.out.println("Result Matrix C:"); - for (int i = 0; i < m; i++) { - for (int j = 0; j < n; j++) { - System.out.print(flatC[i * n + j] + " "); - } - System.out.println(); - } - } - - public static void main(String[] args) { - new NativeBindingTestWithDgemm().testDgemm(); - } -} From ce2cd829edbc04cb38da8df8401c48ade555e6da Mon Sep 17 00:00:00 2001 From: anish Date: Sun, 30 Jul 2023 02:13:10 +0200 Subject: [PATCH 08/10] image cutout and crop initial implementation / img rotate bug fixed --- src/main/cpp/imgUtils.cpp | 126 +++++++++++-- src/main/cpp/imgUtils.h | 5 + src/main/cpp/systemds.cpp | 54 +++++- src/main/cpp/systemds.h | 14 ++ .../org/apache/sysds/utils/NativeHelper.java | 6 + .../test/functions/nativ/ImgUtilsTest.java | 172 ++++++++++++++++-- 6 files changed, 345 insertions(+), 32 deletions(-) diff --git a/src/main/cpp/imgUtils.cpp b/src/main/cpp/imgUtils.cpp index 987ef1f8b5f..b3b0f1c6b8b 100644 --- a/src/main/cpp/imgUtils.cpp +++ b/src/main/cpp/imgUtils.cpp @@ -28,11 +28,12 @@ void printImage(const double* image, int rows, int cols) { for (int j = 0; j < cols; j++) { cout << image[i * cols + j] << " "; } - cout << endl; + cout << endl; } + cout << "\n"<< endl; } -void m_img_transform(const double* img_in, int orig_w, int orig_h, int out_w, int out_h, double a, double b, double c, double d, +void img_transform(const double* img_in, int orig_w, int orig_h, int out_w, int out_h, double a, double b, double c, double d, double e, double f, double fill_value, double* img_out) { double divisor = a * e - b * d; if (divisor == 0) { @@ -73,6 +74,8 @@ void m_img_transform(const double* img_in, int orig_w, int orig_h, int out_w, in transformed_coords[2 * i + 1] = std::floor(T_inv[3] * x + T_inv[4] * y + T_inv[5]) + 1; } + + // Fill output image for (int i = 0; i < out_h; i++) { for (int j = 0; j < out_w; j++) { @@ -94,20 +97,18 @@ void m_img_transform(const double* img_in, int orig_w, int orig_h, int out_w, in void imageRotate(double* img_in, int rows, int cols, double radians, double fill_value, double* img_out) { // Translation matrix for moving the origin to the center of the image double t1_data[] = { - 1, 0, static_cast(-cols / 2), - 0, 1, static_cast(-rows / 2), + 1, 0, static_cast(-cols)/2, + 0, 1, static_cast(-rows)/2, 0, 0, 1 }; double* t1 = t1_data; - // Translation matrix for moving the origin back to the top left corner double t2_data[] = { - 1, 0, static_cast(cols / 2), - 0, 1, static_cast(rows / 2), + 1, 0, static_cast(cols)/2, + 0, 1, static_cast(rows)/2, 0, 0, 1 }; double* t2 = t2_data; - // The rotation matrix around the origin double rot_data[] = { cos(radians), sin(radians), 0, @@ -117,14 +118,113 @@ void imageRotate(double* img_in, int rows, int cols, double radians, double fill double* rot = rot_data; // Combined transformation matrix - int matrix_size = std::max(rows, cols); - double m_data[matrix_size * matrix_size]; + // int matrix_size = std::max(3, 3); + double m_data[3 * 3]; cblas_dgemm(CblasRowMajor, CblasNoTrans, CblasNoTrans, 3, 3, 3, 1.0, t2, 3, rot, 3, 0.0, m_data, 3); cblas_dgemm(CblasRowMajor, CblasNoTrans, CblasNoTrans, 3, 3, 3, 1.0, m_data, 3, t1, 3, 0.0, m_data, 3); double* m = m_data; + // Transform image + img_transform(img_in,rows,cols,rows,cols,m[0], m[1], m[2], m[3], m[4], m[5], fill_value, img_out); +} +/* +double* imageCutout(double* img_in, int rows, int cols, int x, int y, int width, int height, double fill_value) { + // Allocate memory for the output image + double* img_out = new double[rows * cols]; + if (width < 1 || height < 1) { + // Invalid width or height, return the input image as it is + std::copy(img_in, img_in + rows * cols, img_out); + } else { + int end_x = x + width - 1; + int end_y = y + height - 1; - // Transform image - //imgTransform(img_in, rows, cols, m[0], m[1], m[2], m[3], m[4], m[5], fill_value, img_out); - m_img_transform(img_in,rows,cols,rows,cols,m[0], m[1], m[2], m[3], m[4], m[5], fill_value, img_out); + int start_x = std::max(1, x); + int start_y = std::max(1, y); + end_x = std::min(cols, end_x); + end_y = std::min(rows, end_y); + + // Copy the input image to the output image + std::copy(img_in, img_in + rows * cols, img_out); + + // Fill the cutout region with the fill_value + for (int i = start_y - 1; i < end_y; ++i) { + for (int j = start_x - 1; j < end_x; ++j) { + img_out[i * cols + j] = fill_value; + } + } + } + + printImage(img_out,rows,cols); + return img_out; +} +*/ + +double* imageCutout(double* img_in, int rows, int cols, int x, int y, int width, int height, double fill_value) { + // Allocate memory for the output image using MKL + double* img_out = new double[rows * cols]; + + if (width < 1 || height < 1) { + // Invalid width or height, return the input image as it is + cblas_dcopy(rows * cols, img_in, 1, img_out, 1); + } else { + int end_x = x + width - 1; + int end_y = y + height - 1; + + int start_x = std::max(1, x); + int start_y = std::max(1, y); + end_x = std::min(cols, end_x); + end_y = std::min(rows, end_y); + + // Copy the input image to the output image using MKL + cblas_dcopy(rows * cols, img_in, 1, img_out, 1); + + // Fill the cutout region with the fill_value + for (int i = start_y - 1; i < end_y; ++i) { + for (int j = start_x - 1; j < end_x; ++j) { + img_out[i * cols + j] = fill_value; + } + } + } + + return img_out; +} + +double* imageCrop(double* img_in, int orig_w, int orig_h, int w, int h, int x_offset, int y_offset) { + // Allocate memory for the output image + double* img_out = new double[w * h]; + + int start_h = (std::ceil((orig_h - h) / 2)) + y_offset - 1 ; + int end_h = (start_h + h - 1); + int start_w = (std::ceil((orig_w - w) / 2)) + x_offset - 1; + int end_w = (start_w + w - 1); + + // Create a mask to identify the cropped region + double* mask = new double[orig_w * orig_h]; + double* temp_mask = new double[w * h]; + + // Set mask elements to 0 outside the cropped region and 1 inside + std::memset(mask, 0, orig_w * orig_h * sizeof(double)); + for(int i = 0; i < h * w; i++) { + temp_mask[i] = 1; + } + + for (int i = start_h; i <= end_h; ++i) { + for (int j = start_w; j <= end_w; ++j) { + mask[i * orig_w + j] = temp_mask[(i - start_h) * w + (j - start_w)]; + } + } + + // Apply the mask to crop the image + for (int i = 0; i < h; ++i) { + for (int j = 0; j < w; ++j) { + img_out[i * w + j] = img_in[(start_h + i) * orig_w + (start_w + j)] * mask[(start_h + i) * orig_w + (start_w + j)]; + } + } + + // Free memory for the mask + delete[] mask; + delete[] temp_mask; + + return img_out; } + diff --git a/src/main/cpp/imgUtils.h b/src/main/cpp/imgUtils.h index 6f964b2f422..5f2056b8090 100644 --- a/src/main/cpp/imgUtils.h +++ b/src/main/cpp/imgUtils.h @@ -19,6 +19,7 @@ #ifndef IMAGE_UTILS_H #define IMAGE_UTILS_H +#include void printImage(const double* image, int rows, int cols); @@ -27,4 +28,8 @@ void m_img_transform(const double* img_in, int orig_w, int orig_h, int out_w, in void imageRotate(double* img_in, int rows, int cols, double radians, double fill_value, double* img_out); +double* imageCutout(double* img_in, int rows, int cols, int x, int y, int width, int height, double fill_value); + +double* imageCrop(double* img_in, int orig_w, int orig_h, int w, int h, int x_offset, int y_offset); + #endif /* IMAGE_UTILS_H */ diff --git a/src/main/cpp/systemds.cpp b/src/main/cpp/systemds.cpp index 6e39795fcb1..af9aef81aec 100644 --- a/src/main/cpp/systemds.cpp +++ b/src/main/cpp/systemds.cpp @@ -273,7 +273,8 @@ JNIEXPORT void JNICALL Java_org_apache_sysds_utils_NativeHelper_testNativeBindin env->ReleaseDoubleArrayElements(C, nativeC, 0); } -JNIEXPORT void JNICALL Java_org_apache_sysds_utils_NativeHelper_imageRotate(JNIEnv* env, jclass clazz, jdoubleArray img_in, jint rows, jint cols, jdouble radians, jdouble fill_value, jdoubleArray img_out) { +JNIEXPORT void JNICALL Java_org_apache_sysds_utils_NativeHelper_imageRotate + (JNIEnv* env, jclass clazz, jdoubleArray img_in, jint rows, jint cols, jdouble radians, jdouble fill_value, jdoubleArray img_out) { // Get input image data jsize num_pixels = env->GetArrayLength(img_in); @@ -291,4 +292,55 @@ JNIEXPORT void JNICALL Java_org_apache_sysds_utils_NativeHelper_imageRotate(JNIE // Clean up delete[] img_out_data; env->ReleaseDoubleArrayElements(img_in, img_in_data, JNI_ABORT); +} + +JNIEXPORT jdoubleArray JNICALL Java_org_apache_sysds_utils_NativeHelper_imageCutout + (JNIEnv* env, jclass cls, jdoubleArray img_in, jint rows, jint cols, jint x, jint y, jint width, jint height, jdouble fill_value) { + // Convert the Java 1D array to a double* + jdouble* img_in_arr = env->GetDoubleArrayElements(img_in, nullptr); + + // Call the C++ implementation of the Image Cutout function + jdouble* img_out_arr = imageCutout(img_in_arr, rows, cols, x, y, width, height, fill_value); + + // Convert the double* back to a Java 1D array + jdoubleArray img_out = env->NewDoubleArray(rows * cols); + env->SetDoubleArrayRegion(img_out, 0, rows * cols, img_out_arr); + + // Release the native array reference + env->ReleaseDoubleArrayElements(img_in, img_in_arr, JNI_ABORT); + delete[] img_out_arr; + + return img_out; +} + +JNIEXPORT jdoubleArray JNICALL Java_org_apache_sysds_utils_NativeHelper_cropImage(JNIEnv *env, jclass, + jdoubleArray img_in, jint orig_w, jint orig_h, jint w, jint h, jint x_offset, jint y_offset) { + jsize length = env->GetArrayLength(img_in); + double *img_in_array = env->GetDoubleArrayElements(img_in, 0); + + int start_h = (ceil((orig_h - h) / 2)) + y_offset - 1; + int end_h = (start_h + h - 1); + int start_w = (ceil((orig_w - w) / 2)) + x_offset - 1; + int end_w = (start_w + w - 1); + + jdoubleArray img_out_java; + if (start_h < 0 || end_h >= orig_h || start_w < 0 || end_w >= orig_w) { + img_out_java = env->NewDoubleArray(orig_w * orig_h); + env->SetDoubleArrayRegion(img_out_java, 0, orig_w * orig_h, img_in_array); + + }else { + double *img_out = imageCrop(img_in_array, orig_w, orig_h, w, h, x_offset, y_offset); + + if (img_out == nullptr) { + return nullptr; + } + + img_out_java = env->NewDoubleArray(w * h); + env->SetDoubleArrayRegion(img_out_java, 0, w * h, img_out); + delete[] img_out; + } + + env->ReleaseDoubleArrayElements(img_in, img_in_array, 0); + + return img_out_java; } \ No newline at end of file diff --git a/src/main/cpp/systemds.h b/src/main/cpp/systemds.h index 98f4de5bd79..f24d77e6b3d 100644 --- a/src/main/cpp/systemds.h +++ b/src/main/cpp/systemds.h @@ -131,7 +131,21 @@ JNIEXPORT void JNICALL Java_org_apache_sysds_utils_NativeHelper_testNativeBindin JNIEXPORT void JNICALL Java_org_apache_sysds_utils_NativeHelper_imageRotate (JNIEnv *, jclass, jdoubleArray, jint, jint, jdouble, jdouble, jdoubleArray); +/* + * Class: org_apache_sysds_utils_NativeHelper + * Method: imageCutout + * Signature: ([DIIIIIDD)[D + */ +JNIEXPORT jdoubleArray JNICALL Java_org_apache_sysds_utils_NativeHelper_imageCutout + (JNIEnv *, jclass, jdoubleArray, jint, jint, jint, jint, jint, jint, jdouble); +/* + * Class: org_apache_sysds_utils_NativeHelper + * Method: cropImage + * Signature: ([DIIIIII)[D + */ +JNIEXPORT jdoubleArray JNICALL Java_org_apache_sysds_utils_NativeHelper_cropImage(JNIEnv *, jclass, + jdoubleArray, jint, jint, jint, jint, jint, jint); #ifdef __cplusplus } #endif diff --git a/src/main/java/org/apache/sysds/utils/NativeHelper.java b/src/main/java/org/apache/sysds/utils/NativeHelper.java index e217dee8a2d..370c51c1638 100644 --- a/src/main/java/org/apache/sysds/utils/NativeHelper.java +++ b/src/main/java/org/apache/sysds/utils/NativeHelper.java @@ -423,4 +423,10 @@ public static native boolean conv2dSparse(int apos, int alen, int[] aix, double[ //image rotation public static native void imageRotate(double[] img_in, int rows, int cols, double radians, double fill_value, double[] img_out); + //image cutout + public static native double[] imageCutout(double[] img_in, int rows, int cols, int x, int y, int width, int height, double fill_value); + + //image crop + public static native double[] cropImage(double[] img_in, int orig_w, int orig_h, int w, int h, int x_offset, int y_offset); + } diff --git a/src/test/java/org/apache/sysds/test/functions/nativ/ImgUtilsTest.java b/src/test/java/org/apache/sysds/test/functions/nativ/ImgUtilsTest.java index 6f34df06b6b..4fc0446af94 100644 --- a/src/test/java/org/apache/sysds/test/functions/nativ/ImgUtilsTest.java +++ b/src/test/java/org/apache/sysds/test/functions/nativ/ImgUtilsTest.java @@ -19,9 +19,10 @@ package org.apache.sysds.test.functions.nativ; import org.apache.sysds.utils.NativeHelper; -import org.junit.Assert; import org.junit.Test; +import static org.junit.Assert.assertArrayEquals; + public class ImgUtilsTest { static { @@ -30,35 +31,39 @@ public class ImgUtilsTest { @Test public void testImageRotation90() { // Input image dimensions - int rows = 4; - int cols = 4; + int rows = 3; + int cols = 3; // Input image double[] img_in = { - 1.0, 2.0, 3.0, 4.0, - 5.0, 6.0, 7.0, 8.0, - 9.0, 10.0, 11.0, 12.0, - 13.0, 14.0, 15.0, 16.0 + 1,2,3, + 4,5,6, + 7,8,9 }; - // Rotation angle in radians double radians = Math.PI / 2; - // Fill value for the output image double fill_value = 0.0; - // Expected output image - double[] expected_img_out = { - 4.0, 8.0, 12.0, 16.0, - 3.0, 7.0, 11.0, 15.0, - 2.0, 6.0, 10.0, 14.0, - 1.0, 5.0, 9.0, 13.0 + double[] expected_img_out_90 = { + 3,6,9, + 2,5,8, + 1,4,7 + }; + + double[] expected_img_out_45 = { + 2,3,6, + 1,5,9, + 4,7,8 }; // Create the output image array double[] img_out = new double[rows * cols]; NativeHelper.imageRotate(img_in, rows, cols, radians, fill_value, img_out); - Assert.assertArrayEquals(expected_img_out, img_out, 0.0001); + assertArrayEquals(expected_img_out_90, img_out, 0.0001); + //rotate by 45 + NativeHelper.imageRotate(img_in, rows, cols, radians/2, fill_value, img_out); + assertArrayEquals(expected_img_out_45, img_out, 0.0001); } @Test @@ -100,7 +105,7 @@ public void testImageRotation45() { NativeHelper.imageRotate(img_in, rows, cols, radians, fill_value, img_out); // Compare the output image with the expected image - Assert.assertArrayEquals(expected_img_out, img_out, 0.0001); + assertArrayEquals(expected_img_out, img_out, 0.0001); } @Test @@ -138,6 +143,137 @@ public void testImageRotation180() { NativeHelper.imageRotate(img_in, rows, cols, radians, fill_value, img_out); // Compare the output image with the expected image - Assert.assertArrayEquals(expected_img_out, img_out, 0.0001); + assertArrayEquals(expected_img_out, img_out, 0.0001); + } + + + @Test + public void testCutoutImage() { + // Example input 2D matrix + double[] img_in = { + 1.0, 2.0, 3.0, 4.0, + 5.0, 6.0, 7.0, 8.0, + 9.0, 10.0, 11.0, 12.0, + 13.0, 14.0, 15.0, 16.0 + }; + + int rows = 4; + int cols = 4; + int x = 2; + int y = 2; + int width = 2; + int height = 2; + double fill_value = 0.0; + + // Perform image cutout using JNI + double[] img_out = NativeHelper.imageCutout(img_in, rows, cols, x, y, width, height, fill_value); + + // Expected output image after cutout + double[] expectedOutput = { + 1.0, 2.0, 3.0, 4.0, + 5.0, 0.0, 0.0, 8.0, + 9.0, 0.0, 0.0, 12.0, + 13.0, 14.0, 15.0, 16.0 + }; + + // Check if the output image matches the expected output + assertArrayEquals(expectedOutput, img_out,0.0001); } + + @Test + public void testImageCutoutInvalidCutout() { + double[] img_in = { + 1.0, 2.0, 3.0, 4.0, + 5.0, 6.0, 7.0, 8.0, + 9.0, 10.0, 11.0, 12.0, + 13.0, 14.0, 15.0, 16.0 + }; + + int rows = 4; + int cols = 4; + int x = 3; + int y = 3; + int width = -2; + int height = 0; + double fill_value = 0.0; + + double[] expectedOutput = img_in; // Expect no change since the cutout is invalid + + double[] img_out = NativeHelper.imageCutout(img_in, rows, cols, x, y, width, height, fill_value); + assertArrayEquals(expectedOutput, img_out,0.0001); + } + + @Test + public void testImageCutoutNoCutout() { + double[] img_in = { + 1.0, 2.0, 3.0, 4.0, + 5.0, 6.0, 7.0, 8.0, + 9.0, 10.0, 11.0, 12.0, + 13.0, 14.0, 15.0, 16.0 + }; + + int rows = 4; + int cols = 4; + int x = 3; + int y = 3; + int width = 1; + int height = 1; + double fill_value = 0.0; + + double[] expectedOutput = { + 1.0, 2.0, 3.0, 4.0, + 5.0, 6.0, 7.0, 8.0, + 9.0, 10.0, 0.0, 12.0, + 13.0, 14.0, 15.0, 16.0 + }; + + double[] img_out = NativeHelper.imageCutout(img_in, rows, cols, x, y, width, height, fill_value); + assertArrayEquals(expectedOutput, img_out,0.0001); + } + + @Test + public void testImageCropValidCrop() { + double[] img_in = { + 1.0, 2.0, 3.0, 4.0, + 5.0, 6.0, 7.0, 8.0, + 9.0, 10.0, 11.0, 12.0, + 13.0, 14.0, 15.0, 16.0 + }; + + int orig_w = 4; + int orig_h = 4; + int w = 2; + int h = 2; + int x_offset = 1; + int y_offset = 1; + + double[] expectedOutput = { + 6.0, 7.0, + 10.0, 11.0 + }; + + double[] img_out = NativeHelper.cropImage(img_in, orig_w, orig_h, w, h, x_offset, y_offset); + + assertArrayEquals(expectedOutput, img_out,0.0001); } + + @Test + public void testImageCropInvalidCrop() { + double[] img_in = { + 1.0, 2.0, 3.0, 4.0, + 5.0, 6.0, 7.0, 8.0, + 9.0, 10.0, 11.0, 12.0, + 13.0, 14.0, 15.0, 16.0 + }; + + int orig_w = 4; + int orig_h = 4; + int w = 5; + int h = 5; + int x_offset = 1; + int y_offset = 1; + + double[] expectedOutput = img_in; // Expect no change since the crop is invalid + + double[] img_out = NativeHelper.cropImage(img_in, orig_w, orig_h, w, h, x_offset, y_offset); + assertArrayEquals(expectedOutput, img_out,0.0001); } } From ac0bc859c25e8d6190c8c53b1050d445d029cee4 Mon Sep 17 00:00:00 2001 From: anish Date: Sun, 30 Jul 2023 02:16:15 +0200 Subject: [PATCH 09/10] image cutout and crop initial implementation / img rotate bug fixed --- src/main/cpp/imgUtils.cpp | 32 -------------------------------- 1 file changed, 32 deletions(-) diff --git a/src/main/cpp/imgUtils.cpp b/src/main/cpp/imgUtils.cpp index b3b0f1c6b8b..d80f02acc65 100644 --- a/src/main/cpp/imgUtils.cpp +++ b/src/main/cpp/imgUtils.cpp @@ -126,38 +126,6 @@ void imageRotate(double* img_in, int rows, int cols, double radians, double fill // Transform image img_transform(img_in,rows,cols,rows,cols,m[0], m[1], m[2], m[3], m[4], m[5], fill_value, img_out); } -/* -double* imageCutout(double* img_in, int rows, int cols, int x, int y, int width, int height, double fill_value) { - // Allocate memory for the output image - double* img_out = new double[rows * cols]; - - if (width < 1 || height < 1) { - // Invalid width or height, return the input image as it is - std::copy(img_in, img_in + rows * cols, img_out); - } else { - int end_x = x + width - 1; - int end_y = y + height - 1; - - int start_x = std::max(1, x); - int start_y = std::max(1, y); - end_x = std::min(cols, end_x); - end_y = std::min(rows, end_y); - - // Copy the input image to the output image - std::copy(img_in, img_in + rows * cols, img_out); - - // Fill the cutout region with the fill_value - for (int i = start_y - 1; i < end_y; ++i) { - for (int j = start_x - 1; j < end_x; ++j) { - img_out[i * cols + j] = fill_value; - } - } - } - - printImage(img_out,rows,cols); - return img_out; -} -*/ double* imageCutout(double* img_in, int rows, int cols, int x, int y, int width, int height, double fill_value) { // Allocate memory for the output image using MKL From 7da470820dfd3ae64ba8cf14f614c84a4e444835 Mon Sep 17 00:00:00 2001 From: anish Date: Sun, 20 Aug 2023 02:52:46 +0200 Subject: [PATCH 10/10] OpenBlas Bug fixed, now all implementations works with both mkl and open blas, img_translate implemented --- src/main/cpp/imgUtils.cpp | 55 ++++++- src/main/cpp/imgUtils.h | 3 + src/main/cpp/systemds.cpp | 43 +++++ src/main/cpp/systemds.h | 18 +++ .../org/apache/sysds/utils/NativeHelper.java | 4 + .../test/functions/nativ/ImgUtilsTest.java | 153 ++++++++++++++++-- 6 files changed, 260 insertions(+), 16 deletions(-) diff --git a/src/main/cpp/imgUtils.cpp b/src/main/cpp/imgUtils.cpp index d80f02acc65..35d3ff7c863 100644 --- a/src/main/cpp/imgUtils.cpp +++ b/src/main/cpp/imgUtils.cpp @@ -74,8 +74,6 @@ void img_transform(const double* img_in, int orig_w, int orig_h, int out_w, int transformed_coords[2 * i + 1] = std::floor(T_inv[3] * x + T_inv[4] * y + T_inv[5]) + 1; } - - // Fill output image for (int i = 0; i < out_h; i++) { for (int j = 0; j < out_w; j++) { @@ -118,11 +116,11 @@ void imageRotate(double* img_in, int rows, int cols, double radians, double fill double* rot = rot_data; // Combined transformation matrix - // int matrix_size = std::max(3, 3); - double m_data[3 * 3]; - cblas_dgemm(CblasRowMajor, CblasNoTrans, CblasNoTrans, 3, 3, 3, 1.0, t2, 3, rot, 3, 0.0, m_data, 3); - cblas_dgemm(CblasRowMajor, CblasNoTrans, CblasNoTrans, 3, 3, 3, 1.0, m_data, 3, t1, 3, 0.0, m_data, 3); - double* m = m_data; + double m_data1[3*3]; + cblas_dgemm(CblasRowMajor, CblasNoTrans, CblasNoTrans, 3, 3, 3, 1.0, t2, 3, rot, 3, 0.0, m_data1, 3); + double m_data2[3*3]; + cblas_dgemm(CblasRowMajor, CblasNoTrans, CblasNoTrans, 3, 3, 3, 1.0, m_data1, 3, t1, 3, 0.0, m_data2, 3); + double* m = m_data2; // Transform image img_transform(img_in,rows,cols,rows,cols,m[0], m[1], m[2], m[3], m[4], m[5], fill_value, img_out); } @@ -196,3 +194,46 @@ double* imageCrop(double* img_in, int orig_w, int orig_h, int w, int h, int x_of return img_out; } +void img_translate(double* img_in, double offset_x, double offset_y, + int in_w, int in_h, int out_w, int out_h, double fill_value, double* img_out) { + int w = out_w; + int h = out_h; + offset_x = round(offset_x); + offset_y = round(offset_y); + + int start_x = 0 - static_cast(offset_x); + int start_y = 0 - static_cast(offset_y); + int end_x = std::max(w, out_w) - static_cast(offset_x); + int end_y = std::max(h, out_h) - static_cast(offset_y); + + if (start_x < 0) + start_x = 0; + if (start_y < 0) + start_y = 0; + + if (w < end_x) + end_x = w; + if (h < end_y) + end_y = h; + + if (out_w < end_x + static_cast(offset_x)) + end_x = out_w - static_cast(offset_x); + if (out_h < end_y + static_cast(offset_y)) + end_y = out_h - static_cast(offset_y); + + for (int y = 0; y < out_h; ++y) { + for (int x = 0; x < out_w; ++x) { + img_out[y * out_w + x] = fill_value; + } + } + + if (start_x < end_x && start_y < end_y) { + for (int y = start_y + static_cast(offset_y); y < end_y + static_cast(offset_y); ++y) { + int x_in = (start_x > 0) ? start_x + static_cast(offset_x): start_x; + int y_in = (start_y > 0 ) ? y : y - static_cast(offset_y); + cblas_dcopy(end_x - start_x, &img_in[(x_in) + (y_in) * in_w], + 1, &img_out[y * out_w + start_x + static_cast(offset_x)], 1); + } + } +} + diff --git a/src/main/cpp/imgUtils.h b/src/main/cpp/imgUtils.h index 5f2056b8090..001d5ad282c 100644 --- a/src/main/cpp/imgUtils.h +++ b/src/main/cpp/imgUtils.h @@ -32,4 +32,7 @@ double* imageCutout(double* img_in, int rows, int cols, int x, int y, int width, double* imageCrop(double* img_in, int orig_w, int orig_h, int w, int h, int x_offset, int y_offset); +void img_translate(double* img_in, double offset_x, double offset_y, + int in_w, int in_h, int out_w, int out_h, double fill_value, double* img_out); + #endif /* IMAGE_UTILS_H */ diff --git a/src/main/cpp/systemds.cpp b/src/main/cpp/systemds.cpp index af9aef81aec..474f5296eab 100644 --- a/src/main/cpp/systemds.cpp +++ b/src/main/cpp/systemds.cpp @@ -343,4 +343,47 @@ JNIEXPORT jdoubleArray JNICALL Java_org_apache_sysds_utils_NativeHelper_cropImag env->ReleaseDoubleArrayElements(img_in, img_in_array, 0); return img_out_java; +} + +/*JNIEXPORT jdoubleArray JNICALL Java_org_apache_sysds_utils_NativeHelper_shearImage(JNIEnv *env, jclass, + jdoubleArray img_in, jint width, jint height, jdouble shear_x, jdouble shear_y, jdouble fill_value) { + + // Convert the Java input double array to a C++ double array + jsize length = env->GetArrayLength(img_in); + double *img_in_array = env->GetDoubleArrayElements(img_in, 0); + + // Call the C++ m_img_shear function (assuming it is implemented) + double* img_out = img_transform(img_in_array, width, height, shear_x, shear_y, fill_value); + + // Release the input double array elements + env->ReleaseDoubleArrayElements(img_in, img_in_array, 0); + + if (img_out == nullptr) { + return nullptr; + } + + // Create a new Java double array and copy the result into it + jdoubleArray img_out_java = env->NewDoubleArray(width * height); + env->SetDoubleArrayRegion(img_out_java, 0, width * height, img_out); + + // Free memory for the output image + delete[] img_out; + + return img_out_java; +}*/ + +JNIEXPORT void JNICALL Java_org_apache_sysds_utils_NativeHelper_imgTranslate(JNIEnv *env, jclass cls, + jdoubleArray img_in, jdouble offset_x, jdouble offset_y, + jint in_w, jint in_h, jint out_w, jint out_h, + jdouble fill_value, jdoubleArray img_out) { + // Convert Java arrays to C++ arrays + jdouble* j_img_in = env->GetDoubleArrayElements(img_in, nullptr); + jdouble* j_img_out = env->GetDoubleArrayElements(img_out, nullptr); + + // Call your C++ ImageTranslate function + img_translate(j_img_in, offset_x, offset_y, in_w, in_h, out_w, out_h, fill_value, j_img_out); + + // Release Java arrays + env->ReleaseDoubleArrayElements(img_in, j_img_in, 0); + env->ReleaseDoubleArrayElements(img_out, j_img_out, 0); } \ No newline at end of file diff --git a/src/main/cpp/systemds.h b/src/main/cpp/systemds.h index f24d77e6b3d..665cc249b37 100644 --- a/src/main/cpp/systemds.h +++ b/src/main/cpp/systemds.h @@ -146,6 +146,24 @@ JNIEXPORT jdoubleArray JNICALL Java_org_apache_sysds_utils_NativeHelper_imageCut */ JNIEXPORT jdoubleArray JNICALL Java_org_apache_sysds_utils_NativeHelper_cropImage(JNIEnv *, jclass, jdoubleArray, jint, jint, jint, jint, jint, jint); + +/* + * Class: org_apache_sysds_utils_NativeHelper + * Method: shearImage + * Signature: ([DIIIIII)[D + */ +JNIEXPORT jdoubleArray JNICALL Java_org_apache_sysds_utils_NativeHelper_shearImage(JNIEnv *env, jclass, + jdoubleArray img_in, jint width, jint height, jdouble shear_x, jdouble shear_y, jdouble fill_value); + +/* + * Class: org_apache_sysds_utils_NativeHelper + * Method: imgTranslate + * Signature: ([DDBIIIIID[D)V + */ +JNIEXPORT void JNICALL Java_org_apache_sysds_utils_NativeHelper_imgTranslate(JNIEnv *env, jclass cls, + jdoubleArray img_in, jdouble offset_x, jdouble offset_y, + jint in_w, jint in_h, jint out_w, jint out_h, + jdouble fill_value, jdoubleArray img_out); #ifdef __cplusplus } #endif diff --git a/src/main/java/org/apache/sysds/utils/NativeHelper.java b/src/main/java/org/apache/sysds/utils/NativeHelper.java index 370c51c1638..ec5a30f8e3e 100644 --- a/src/main/java/org/apache/sysds/utils/NativeHelper.java +++ b/src/main/java/org/apache/sysds/utils/NativeHelper.java @@ -429,4 +429,8 @@ public static native boolean conv2dSparse(int apos, int alen, int[] aix, double[ //image crop public static native double[] cropImage(double[] img_in, int orig_w, int orig_h, int w, int h, int x_offset, int y_offset); + //image translate + public static native void imgTranslate(double[] img_in, double offset_x, double offset_y, + int in_w, int in_h, int out_w, int out_h, + double fill_value, double[] img_out); } diff --git a/src/test/java/org/apache/sysds/test/functions/nativ/ImgUtilsTest.java b/src/test/java/org/apache/sysds/test/functions/nativ/ImgUtilsTest.java index 4fc0446af94..18b42d6758e 100644 --- a/src/test/java/org/apache/sysds/test/functions/nativ/ImgUtilsTest.java +++ b/src/test/java/org/apache/sysds/test/functions/nativ/ImgUtilsTest.java @@ -19,6 +19,7 @@ package org.apache.sysds.test.functions.nativ; import org.apache.sysds.utils.NativeHelper; +import org.junit.Ignore; import org.junit.Test; import static org.junit.Assert.assertArrayEquals; @@ -26,8 +27,10 @@ public class ImgUtilsTest { static { - System.loadLibrary("systemds_mkl-Darwin-x86_64"); + //System.loadLibrary("systemds_mkl-Darwin-x86_64"); + System.loadLibrary("systemds_openblas-Darwin-x86_64"); } + @Test public void testImageRotation90() { // Input image dimensions @@ -146,7 +149,6 @@ public void testImageRotation180() { assertArrayEquals(expected_img_out, img_out, 0.0001); } - @Test public void testCutoutImage() { // Example input 2D matrix @@ -161,8 +163,8 @@ public void testCutoutImage() { int cols = 4; int x = 2; int y = 2; - int width = 2; - int height = 2; + int width = 3; + int height = 3; double fill_value = 0.0; // Perform image cutout using JNI @@ -171,15 +173,14 @@ public void testCutoutImage() { // Expected output image after cutout double[] expectedOutput = { 1.0, 2.0, 3.0, 4.0, - 5.0, 0.0, 0.0, 8.0, - 9.0, 0.0, 0.0, 12.0, - 13.0, 14.0, 15.0, 16.0 + 5.0, 0.0, 0.0, 0.0, + 9.0, 0.0, 0.0, 0.0, + 13.0, 0.0, 0.0, 0.0 }; // Check if the output image matches the expected output assertArrayEquals(expectedOutput, img_out,0.0001); } - @Test public void testImageCutoutInvalidCutout() { double[] img_in = { @@ -275,5 +276,139 @@ public void testImageCropInvalidCrop() { double[] expectedOutput = img_in; // Expect no change since the crop is invalid double[] img_out = NativeHelper.cropImage(img_in, orig_w, orig_h, w, h, x_offset, y_offset); - assertArrayEquals(expectedOutput, img_out,0.0001); } + assertArrayEquals(expectedOutput, img_out,0.0001); + } + + @Test + public void testImgTranslate() { + int in_w = 5; + int in_h = 5; + int out_w = 7; + int out_h = 7; + double fill_value = 0.0; + + double[] img_in = new double[in_w * in_h]; + for (int i = 0; i < in_w * in_h; ++i) { + img_in[i] = i + 1; // Filling input image with sequential values + } + + double[] img_out = new double[out_w * out_h]; + + double offset_x = 1.5; + double offset_y = 1.5; + + NativeHelper.imgTranslate(img_in, offset_x, offset_y, in_w, in_h, out_w, out_h, fill_value, img_out); + + // Expected output based on the given offsets and fill value + double[] expectedOutput = { + 0,0,0,0,0,0,0, + 0,0,0,0,0,0,0, + 0,0,1,2,3,4,5, + 0,0,6,7,8,9,10, + 0,0,11,12,13,14,15, + 0,0,16,17,18,19,20, + 0,0,21,22,23,24,25 + }; + + assertArrayEquals(expectedOutput, img_out, 1e-9); // Compare arrays with a small epsilon + } + + @Test + public void testImgTranslateNegativeOffsets() { + int in_w = 5; + int in_h = 5; + int out_w = 6; + int out_h = 6; + double fill_value = 0.0; + + double[] img_in = new double[in_w * in_h]; + for (int i = 0; i < in_w * in_h; ++i) { + img_in[i] = i + 1; // Filling input image with sequential values + } + + double[] img_out = new double[out_w * out_h]; + + double offset_x = -0.5; // Negative offset in X direction + double offset_y = -0.5; // Negative offset in Y direction + + NativeHelper.imgTranslate(img_in, offset_x, offset_y, in_w, in_h, out_w, out_h, fill_value, img_out); + + // Expected output based on the given offsets and fill value + double[] expectedOutput = { + 1,2,3,4,5,0, + 6,7,8,9,10,0, + 11,12,13,14,15,0, + 16,17,18,19,20,0, + 21,22,23,24,25,0, + 0,0,0,0,0,0, + }; + + assertArrayEquals(expectedOutput, img_out, 1e-9); // Compare arrays with a small epsilon + } + + @Test + public void testImgTranslatePositiveAndNegativeOffsets() { + int in_w = 5; + int in_h = 5; + int out_w = 6; + int out_h = 6; + double fill_value = 0.0; + + double[] img_in = new double[in_w * in_h]; + for (int i = 0; i < in_w * in_h; ++i) { + img_in[i] = i + 1; // Filling input image with sequential values + } + + double[] img_out = new double[out_w * out_h]; + + double offset_x = -0.5; // Negative offset in X direction + double offset_y = 0.5; // Negative offset in Y direction + + NativeHelper.imgTranslate(img_in, offset_x, offset_y, in_w, in_h, out_w, out_h, fill_value, img_out); + + // Expected output based on the given offsets and fill value + double[] expectedOutput = { + 0,0,0,0,0,0, + 1,2,3,4,5,0, + 6,7,8,9,10,0, + 11,12,13,14,15,0, + 16,17,18,19,20,0, + 21,22,23,24,25,0, + }; + + assertArrayEquals(expectedOutput, img_out, 1e-9); // Compare arrays with a small epsilon + } + + @Test + public void testImgTranslatePositiveAndNegativeOffsets2() { + int in_w = 5; + int in_h = 5; + int out_w = 6; + int out_h = 6; + double fill_value = 0.0; + + double[] img_in = new double[in_w * in_h]; + for (int i = 0; i < in_w * in_h; ++i) { + img_in[i] = i + 1; // Filling input image with sequential values + } + + double[] img_out = new double[out_w * out_h]; + + double offset_x = 0.5; // Negative offset in X direction + double offset_y = -0.5; // Negative offset in Y direction + + NativeHelper.imgTranslate(img_in, offset_x, offset_y, in_w, in_h, out_w, out_h, fill_value, img_out); + + // Expected output based on the given offsets and fill value + double[] expectedOutput = { + 0,1,2,3,4,5, + 0,6,7,8,9,10, + 0,11,12,13,14,15, + 0,16,17,18,19,20, + 0,21,22,23,24,25, + 0,0,0,0,0,0, + }; + + assertArrayEquals(expectedOutput, img_out, 1e-9); // Compare arrays with a small epsilon + } }