gpt4 book ai didi

maven - 为什么 netlib-java 原生 blas/lapack 库没有提高性能?

转载 作者:行者123 更新时间:2023-12-03 17:31:04 56 4
gpt4 key购买 nike

我正在使用这段代码来计算 Spark 建议:

    SparkSession spark = SparkSession
.builder()
.appName("SomeAppName")
.config("spark.master", "local[" + args[2] + "]")
.config("spark.local.dir",args[4])
.getOrCreate();
JavaRDD<Rating> ratingsRDD = spark
.read().textFile(args[0]).javaRDD()
.map(Rating::parseRating);
Dataset<Row> ratings = spark.createDataFrame(ratingsRDD, Rating.class);
ALS als = new ALS()
.setMaxIter(Integer.parseInt(args[3]))
.setRegParam(0.01)
.setUserCol("userId")
.setItemCol("movieId")
.setRatingCol("rating").setImplicitPrefs(true);

ALSModel model = als.fit(ratings);
model.setColdStartStrategy("drop");
Dataset<Row> rowDataset = model.recommendForAllUsers(50);

这些是使这段代码工作的 maven 依赖项:
    <dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>2.4.0</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.11</artifactId>
<version>2.4.0</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-mllib_2.11</artifactId>
<version>2.4.0</version>
</dependency>
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-library</artifactId>
<version>2.11.8</version>
</dependency>

对于我的数据文件,使用此代码计算建议需要大约 70 秒。此代码产生以下警告:
WARN BLAS: Failed to load implementation from: com.github.fommil.netlib.NativeSystemBLAS
WARN BLAS: Failed to load implementation from: com.github.fommil.netlib.NativeRefBLAS
WARN LAPACK: Failed to load implementation from: com.github.fommil.netlib.NativeSystemLAPACK
WARN LAPACK: Failed to load implementation from: com.github.fommil.netlib.NativeRefLAPACK

现在我尝试通过在 maven 中添加这个依赖来启用 netlib-java:
    <dependency>
<groupId>com.github.fommil.netlib</groupId>
<artifactId>all</artifactId>
<version>1.1.2</version>
<type>pom</type>
</dependency>

为了避免这个新环境崩溃,我不得不做这个额外的技巧:
LD_PRELOAD=/usr/lib64/libopenblas.so

现在它也可以工作了,它没有发出警告,但它的工作速度较慢,执行相同的计算平均需要大约 170 秒。我在 CentOS 上运行它。

使用 native 库不应该更快吗?有没有可能让它更快?

最佳答案

  • 首先你可以检查你的centos版本,对于centos 6可能没有使用原生库,检查this
  • 据我所知,ALS算法自2.0版本以来有所改进,您可以查看
    Highlights in 2.2

    来自 2.2 的源代码作为打击:

    enter image description here

    所以本地库没有帮助!
  • 关于maven - 为什么 netlib-java 原生 blas/lapack 库没有提高性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53915999/

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