gpt4 book ai didi

java - 如何检查 Spark 是否使用 OpenBlas?

转载 作者:行者123 更新时间:2023-12-02 00:36:23 27 4
gpt4 key购买 nike

我最近下载并构建了 Spark 2.3.1。我使用这些命令下载并选择版本 2.3.1

git clone https://github.com/apache/spark.git   
cd spark
git checkout tags/v2.3.1

我希望提高应用程序的性能,并遇到建议更新 OpenBLAS 分布式版本的文章,因此在构建 Spark 时我使用了 -Pnetlib-lgpl安装选项netlib-java .

这是我使用的命令。

build/mvn -Pyarn -Phive -Phive-thriftserver  -DskipTests -Pnetlib-lgpl clean package

我如何知道/确保 Spark 现在使用我通过上述命令安装的 netlib-java 中的 OpenBLAS,而不是随 Ubuntu 分发的 OpenBLAS?另外,这是更新 OpenBLAS 的正确方法还是我错过了一些东西?

PS

我运行了以下命令来查看它是否正确安装

import com.github.fommil.netlib.BLAS
println(BLAS.getInstance().getClass().getName())

结果

com.github.fommil.netlib.NativeSystemBLAS

我使用以下链接

sudo update-alternatives --display liblapack.so
sudo update-alternatives --install /usr/lib64/libblas.so libblas.so /usr/lib64/atlas/libtatlas.so.3 1000
sudo update-alternatives --install /usr/lib64/libblas.so.3 libblas.so.3 /usr/lib64/atlas/libtatlas.so.3 1000
sudo update-alternatives --install /usr/lib64/liblapack.so liblapack.so /usr/lib64/atlas/libtatlas.so.3 1000
sudo update-alternatives --install /usr/lib64/liblapack.so.3 liblapack.so.3 /usr/lib64/atlas/libtatlas.so.3 1000

我使用的是Ubuntu

Distributor ID: Ubuntu
Description: Ubuntu 16.04.3 LTS
Release: 16.04
Codename: xenial

最佳答案

既然您已经确认 Spark 使用 native BLAS 库,请使用 lsof 来查明托管工作线程的 JVM 进程到底加载了哪个库。加载的库在 lsof 的输出中显示为内存映射常规文件。以下是使用英特尔 MKL 的 Spark 示例:

$ lsof -n -p 10202
...
java 10202 ubuntu mem REG 8,1 70211598 519025 /opt/intel/compilers_and_libraries_2019.3.199/linux/mkl/lib/intel64_lin/libmkl_core.so
java 10202 ubuntu mem REG 8,1 902768 521066 /opt/intel/compilers_and_libraries_2019.3.199/linux/mkl/wrapper/mkl_wrapper.so
...

10202是JVM进程的PID。输出包含每个打开的文件的完整路径,因此您可以轻松判断是否使用了正确的库。

关于java - 如何检查 Spark 是否使用 OpenBlas?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57970566/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com