org.apache.sysds.utils

## Class NativeHelper

- java.lang.Object
- - org.apache.sysds.utils.NativeHelper

-     public class NativeHelper
      extends Object

  This class helps in loading native library. By default, it first tries to load Intel MKL, else tries to load OpenBLAS.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `NativeHelper.NativeBlasState`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static NativeHelper.NativeBlasState` | `CURRENT_NATIVE_BLAS_STATE`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `NativeHelper()`

  - ### Method Summary

    All Methods Static Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `static long` | `conv2dBackwardDataDense(double[] filter, double[] dout, double[] ret, 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)`
    `static long` | `conv2dBackwardFilterDense(double[] input, double[] dout, double[] ret, 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)`
    `static boolean` | `conv2dBackwardFilterSparseDense(int apos, int alen, int[] aix, double[] avals, double[] rotatedDoutPtr, double[] ret, 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)`
    `static long` | `conv2dDense(double[] input, double[] filter, double[] ret, 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)`
    `static boolean` | `conv2dSparse(int apos, int alen, int[] aix, double[] avals, double[] filter, double[] ret, 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)`
    `static long` | `dconv2dBiasAddDense(double[] input, double[] bias, double[] filter, double[] ret, 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)`
    `static long` | `dmmdd(double[] m1, double[] m2, double[] ret, int m1rlen, int m1clen, int m2clen, int numThreads)`
    `static String` | `getCurrentBLAS()` Called by Statistics to print the loaded BLAS.
    `static int` | `getMaxNumThreads()`
    `static void` | `initialize(String customLibPath, String userSpecifiedBLAS)` Initialize the native library before executing the DML program
    `static boolean` | `isNativeLibraryLoaded()` Called by runtime to check if the BLAS is available for exploitation
    `static boolean` | `loadBLAS(String customLibPath, String blas, String optionalMsg)` Attempts to load native BLAS
    `static boolean` | `loadLibraryHelperFromResource(String libFileName)` Attempts to load the JNI shared library from the sysds jar
    `static long` | `sconv2dBiasAddDense(FloatBuffer input, FloatBuffer bias, FloatBuffer filter, FloatBuffer ret, 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)`
    `static long` | `smmdd(FloatBuffer m1, FloatBuffer m2, FloatBuffer ret, int m1rlen, int m1clen, int m2clen, int numThreads)`
    `static long` | `tsmm(double[] m1, double[] ret, int m1rlen, int m1clen, boolean leftTrans, int numThreads)`

    - ### Methods inherited from class java.lang.Object

      `equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### CURRENT_NATIVE_BLAS_STATE

          public static NativeHelper.NativeBlasState CURRENT_NATIVE_BLAS_STATE

  - ### Constructor Detail

    - #### NativeHelper

          public NativeHelper()

  - ### Method Detail

    - #### getCurrentBLAS

          public static String getCurrentBLAS()

      Called by Statistics to print the loaded BLAS.
      Returns:
        empty string or the BLAS that is loaded

    - #### isNativeLibraryLoaded

          public static boolean isNativeLibraryLoaded()

      Called by runtime to check if the BLAS is available for exploitation
      Returns:
        true if CURRENT_NATIVE_BLAS_STATE is SUCCESSFULLY_LOADED_NATIVE_BLAS_AND_NOT_IN_USE else false

    - #### initialize

          public static void initialize(String customLibPath,
                                        String userSpecifiedBLAS)

      Initialize the native library before executing the DML program
      Parameters:
        `customLibPath` - specified by sysds.native.blas.directory
        `userSpecifiedBLAS` - specified by sysds.native.blas

    - #### getMaxNumThreads

          public static int getMaxNumThreads()

    - #### loadBLAS

          public static boolean loadBLAS(String customLibPath,
                                         String blas,
                                         String optionalMsg)

      Attempts to load native BLAS
      Parameters:
        `customLibPath` - can be null (if we want to only want to use LD_LIBRARY_PATH), else the
        `blas` - can be gomp, openblas or mkl_rt
        `optionalMsg` - message for debugging
      Returns:
        true if successfully loaded BLAS

    - #### loadLibraryHelperFromResource

          public static boolean loadLibraryHelperFromResource(String libFileName)

      Attempts to load the JNI shared library from the sysds jar
      Parameters:
        `libFileName` - library file name)
      Returns:
        true if successfully loaded BLAS

    - #### dmmdd

          public static long dmmdd(double[] m1,
                                   double[] m2,
                                   double[] ret,
                                   int m1rlen,
                                   int m1clen,
                                   int m2clen,
                                   int numThreads)

    - #### smmdd

          public static long smmdd(FloatBuffer m1,
                                   FloatBuffer m2,
                                   FloatBuffer ret,
                                   int m1rlen,
                                   int m1clen,
                                   int m2clen,
                                   int numThreads)

    - #### tsmm

          public static long tsmm(double[] m1,
                                  double[] ret,
                                  int m1rlen,
                                  int m1clen,
                                  boolean leftTrans,
                                  int numThreads)

    - #### conv2dDense

          public static long conv2dDense(double[] input,
                                         double[] filter,
                                         double[] ret,
                                         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)

    - #### dconv2dBiasAddDense

          public static long dconv2dBiasAddDense(double[] input,
                                                 double[] bias,
                                                 double[] filter,
                                                 double[] ret,
                                                 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)

    - #### sconv2dBiasAddDense

          public static long sconv2dBiasAddDense(FloatBuffer input,
                                                 FloatBuffer bias,
                                                 FloatBuffer filter,
                                                 FloatBuffer ret,
                                                 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)

    - #### conv2dBackwardFilterDense

          public static long conv2dBackwardFilterDense(double[] input,
                                                       double[] dout,
                                                       double[] ret,
                                                       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)

    - #### conv2dBackwardDataDense

          public static long conv2dBackwardDataDense(double[] filter,
                                                     double[] dout,
                                                     double[] ret,
                                                     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)

    - #### conv2dBackwardFilterSparseDense

          public static boolean conv2dBackwardFilterSparseDense(int apos,
                                                                int alen,
                                                                int[] aix,
                                                                double[] avals,
                                                                double[] rotatedDoutPtr,
                                                                double[] ret,
                                                                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)

    - #### conv2dSparse

          public static boolean conv2dSparse(int apos,
                                             int alen,
                                             int[] aix,
                                             double[] avals,
                                             double[] filter,
                                             double[] ret,
                                             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)

Copyright © 2021 The Apache Software Foundation. All rights reserved.