NETLIB-JAVA AArch64 Natives Support

 

What is NETLIB-JAVA

netlib-java is a wrapper for low-level BLASLAPACK and ARPACK that performs as fast as the C / Fortran interfaces with a pure JVM fallback. netlib-java is included with recent versions of Apache Spark.

For more details on high performance linear algebra on the JVM, please watch fommil's talk at Scala eXchange 2014 (follow along with high-res slides).

 

Build netlib-java on Hisilicon Ubuntu

Getting netlib-java

$ git clone https://github.com/fommil/netlib-java


Modify Config file

$ cd netlib-java
$ find . -type f -name "pom.xml" -exec sed -i 's/1.2-SNAPSHOT/1.1.2/g' {} +
It means that snapshot version does not support to build instead of using stable versiion.
$ git status 


modified:   all/pom.xml
modified:   core/pom.xml
modified:   generator/pom.xml
modified:   legacy/pom.xml
modified:   native_ref/java/pom.xml
modified:   native_ref/osx-x86_64/pom.xml
modified:   native_ref/pom.xml
modified:   native_ref/win-i686/pom.xml
modified:   native_ref/win-x86_64/pom.xml
modified:   native_ref/xbuilds/linux-armhf/pom.xml
modified:   native_ref/xbuilds/linux-i686/pom.xml
modified:   native_ref/xbuilds/linux-ppc64le/pom.xml
modified:   native_ref/xbuilds/linux-x86_64/pom.xml
modified:   native_ref/xbuilds/pom.xml
modified:   native_system/java/pom.xml
modified:   native_system/osx-x86_64/pom.xml
modified:   native_system/pom.xml
modified:   native_system/win-i686/pom.xml
modified:   native_system/win-x86_64/pom.xml
modified:   native_system/xbuilds/linux-armhf/pom.xml
modified:   native_system/xbuilds/linux-i686/pom.xml
modified:   native_system/xbuilds/linux-ppc64le/pom.xml
modified:   native_system/xbuilds/linux-x86_64/pom.xml
modified:   native_system/xbuilds/pom.xml
modified:   perf/pom.xml
modified:   pom.xml



Build using maven
 

$ mvn clean install


Support for linux AArch64 natives

pull request

$https://github.com/fommil/netlib-java/pull/113

 

 

Description

This is the support for Linux AArch64 natives. It also introduces maven profiles for AArch64 build convenience just like pull requsets#111 do .

This does not effect on higher level config and the default build process remains unchanged.

It will automatically build artifacts only for the specific platform, which is based on the host architecture such as AArch64, ppcle64, x86_64, etc.

My Hardware Environments: Cavium ThunderX and Hisilicon Taishan ( AArch64 server) ,
OS name: "linux", version: "4.4.0-15-generic", arch: "aarch64", family: "unix"