首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么netlib-java原生blas/lapack库不能提供性能提升?

为什么netlib-java原生blas/lapack库不能提供性能提升?
EN

Stack Overflow用户
提问于 2018-12-25 01:02:16
回答 1查看 535关注 0票数 6

我正在使用这段代码来计算spark推荐:

代码语言:javascript
复制
    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依赖项:

代码语言:javascript
复制
    <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秒。此代码生成以下警告:

代码语言:javascript
复制
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:

代码语言:javascript
复制
    <dependency>
        <groupId>com.github.fommil.netlib</groupId>
        <artifactId>all</artifactId>
        <version>1.1.2</version>
        <type>pom</type>
    </dependency>

为了避免这个新环境崩溃,我不得不做这个额外的技巧:

代码语言:javascript
复制
LD_PRELOAD=/usr/lib64/libopenblas.so

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

使用本机库不是应该更快吗?有没有可能让它更快一些?

EN

回答 1

Stack Overflow用户

发布于 2019-02-27 11:28:03

首先你可以检查你的centos版本,对于centos 6可能不使用本地库,检查this

  • As据我所知,
  1. 算法从2.0版本开始已经得到了改进,你可以检查Highlights in 2.2

2.2as blow的源代码:

所以本地库没有帮助!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53915999

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档