You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@systemds.apache.org by Janardhan <ja...@gmail.com> on 2021/07/02 12:22:00 UTC
[DISCUSS][SYSTEMDS-3051] Native Backend guide for SystemDS
Hi all,
I am planning to add Native backend guide. The document should
answer the following questions. Please, feel free to add new points
or contribute to discussion. thanks.
User guide
1. BLAS Installation instructions
1a. Intel MKL
Download Intel MKL from [1].
Version of MKL (2017 and higher), do we use MKL DNN primitives?
1b. OpenBLAS
Compiling OpenBLAS with OpenMP is recommended instead of apt-get/yum.
instructions are at [2].
2. How to provide the location of native libraries?
via commandline
- Java: -Djava.library.path=/path/to/blas-n-other-dependencies
- Spark: --conf
spark.executorEnv.LD_LIBRARY_PATH=/path/to/blas-n-other-dependencies
This can also be set with `sysds.native.blas.directory`
3. How to enable native BLAS?
set sysds.native.blas[3] to either mkl, openblas
Troubleshooting
- 1. Unable to load gomp
- 2. Unable to load mkl_rt
- 3. Unable to load openblas
- 4. Using OpenBLAS without OpenMP can lead to performance issues
- 5. Using MKL can lead to slow performance for convolution instruction
---
[1]
https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/onemkl.html
[2] https://github.com/xianyi/OpenBLAS#installation-from-source
[3]
https://github.com/apache/systemds/blob/master/conf/SystemDS-config.xml.template#L61
Thank you,
Janardhan
Re: [DISCUSS][SYSTEMDS-3051] Native Backend guide for SystemDS
Posted by Mark Dokter <md...@know-center.at>.
On 02.07.21 14:22, Janardhan wrote:
> Hi all,
>
Hi!
> I am planning to add Native backend guide. The document should
> answer the following questions. Please, feel free to add new points
> or contribute to discussion. thanks.
>
> User guide
>
> 1. BLAS Installation instructions
>
> 1a. Intel MKL
> Download Intel MKL from [1].
> Version of MKL (2017 and higher), do we use MKL DNN primitives?
>
Highest supported version is 2019.5. Everything above has API changes
which are not supported yet by our native dnn ops.
> 1b. OpenBLAS
> Compiling OpenBLAS with OpenMP is recommended instead of apt-get/yum.
> instructions are at [2].
>
At least in Ubuntu 20.04 you don't need to compile OpenBLAS manually for
OpenMP support. Just remove the libopenblas0-pthread package and install
libopenblas0-openmp instead.
> 2. How to provide the location of native libraries?
>
> via commandline
> - Java: -Djava.library.path=/path/to/blas-n-other-dependencies
> - Spark: --conf
> spark.executorEnv.LD_LIBRARY_PATH=/path/to/blas-n-other-dependencies
>
> This can also be set with `sysds.native.blas.directory`
>
For Intel MKL the preferred method is to source their env setup script
(path adjustments to that script according to your installation):
source /opt/intel/bin/compilervars.sh intel64
> 3. How to enable native BLAS?
>
> set sysds.native.blas[3] to either mkl, openblas
>
> Troubleshooting
> - 1. Unable to load gomp
> - 2. Unable to load mkl_rt
> - 3. Unable to load openblas
> - 4. Using OpenBLAS without OpenMP can lead to performance issues
> - 5. Using MKL can lead to slow performance for convolution instruction
>
On very old Linux distributions (we have CentOS 7.x around on an older
cluster) there can be issues with loading libs because the gcc ABI
changed from gcc 4.x to 5 and above. In that case you'd have to either
fiddle with the patchelf utility or just quickly (?) compile yourself a
recent gcc and adjust your env vars (PATH, LD_LIBRARY_PATH).
> ---
> [1]
> https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/onemkl.html
> [2] https://github.com/xianyi/OpenBLAS#installation-from-source
> [3]
> https://github.com/apache/systemds/blob/master/conf/SystemDS-config.xml.template#L61
>
> Thank you,
> Janardhan
>
hth, Mark