HMLP: High-performance Machine Learning Primitives
|
HMLP and GOFMM are research projects and not in production. For SC'17 and SC'18 artifacts, see /artifact and our our GOFMM papers [SC'17 and SC'18] for details.
Thank you for deciding to give HMLP a try! This code can be used directly or pluged into many learning tasks such as kernel summation, nearest neighbor search, k-means clustering, convolution networks. It is also possible to create a specific general N-body operator by using our template frameworks.
See INSTALL on how to install it. Checkout LICENSE if you want to use or redistribute any part of HMLP. Notice that different parts of HMLP may have different licenses. We usually annotate the specific license on the top of the file.
HMLP (High Performance Machine Learning Primitives) is a portable framework that provides high performance, memory efficient matrix-matrix multiplication like operations and their extension based on the BLIS framework. Currently, HMLP has implementations on Intel x86_64, Knights Landing, ARM and NVIDIA GPU. We may further support other architectures in the future.
Depending on your need, you may only require the basic features if you just want to use some existing primitives. Acoording to the feature you require we suggest that you read different part of documents. Please checkout the wiki pages at:
to see what feature better suit your need.
Architecture dependent implementations (a.k.a microkernels or kernels in short) are identified and saperated from the c++ loop base framework. Thus, porting any HMLP primitive to an new architecture only require rewriting the kernel part. You are welcome to contribute more kernels beyond this list. Checkout the guildline on implementing microkernel for HMLP at our wiki pages.
GOFMM, MPI-GOFMM, HMLP templates, and HMLP runtime APIs are documented by doxygen:
HMLP is tested on LINUX and OSX. Compilation REQUIRES:
Edit set_env.sh for compilation options.
You MUST manually setup each environment variable in the **"REQUIRED" CONGIFURATION** if any of those variables were not defined properly on you system.
The default BLAS library for Intel compiler is MKL. For GNU compilers, cmake will try to find a proper BLAS/LAPACK library on you system. If cmake fails to locate BLAS/LAPACK, then the compilation will fail as well. You need to manually setup the path in the cmake file.
If your Arm is run with OS that has native compiler and cmake support, then the installation instruction above should work just fine. However, while your target runs an Android OS, which currently does not have a native C/C++ compiler, you will need to cross compile HMLP on your Linux or OSX first. Although there are many ways to do cross compilation, we suggest that users follow these instructions:
The default compilation will also compile all the examples in /example. To run some basic examples from the testing drivers:
To us HMLP library you need to include the header files <hmlp.h> and link ${HMLP_DIR}/build/libhmlp.a statically or ${HMLP_DIR}/build/libhmlp.so (or .dylib) dynamically.
C/C++ example:
Static linking example:
Dynamic linking example on Linux:
Dynamic linking example on Mac:
Following the steps in INSTALL using cmake, Google Test will be downloaded and compiled. All testing routines located in /test will be compiled. All executables locate in /build. To perform the whole test suits, follow these instructions.
Optionally, you can perform and coverage analysis and update the report by
The latest coverage report can be found at
## ACKNOWLEDGEMENTS
Thank you again for being intersted in HMLP!
Best regards,
Chenhan D. Yu — chenh an@c s.ute xas. edu