首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JBLAS的性能

JBLAS的性能
EN

Stack Overflow用户
提问于 2015-07-16 08:13:04
回答 1查看 892关注 0票数 1

我要做重矩阵乘法

由于我的应用程序需要高性能,所以我决定使用JBLAS。

但是,我发现JBLAS在测试中比简单的for循环慢。

代码语言:javascript
复制
    double[][] M = new double[3000][3100];
    double[] a = new double [3100];
    double[] b = new double[3000];
    for(double[] row: M){
        Arrays.fill(row, 3.343);
    }
    Arrays.fill(a, 1.324);
    DoubleMatrix M1 = new DoubleMatrix(M);
    DoubleMatrix a1 = new DoubleMatrix(a);
    DoubleMatrix b1= new DoubleMatrix(b);

    //1. Simple for loop : 366 ms
    for(int i=0; i<3000; i++){
        for(int j=0; j<3100; j++){
            b[i] = b[i] + a[j]*M[i][j];
        }
    }
    // 2. JBLAS : 1190 ms
    b1 = M1.mmul(a1);

虽然它们是相同的计算,但JBLAS比简单的for循环慢3倍。

是因为我的错误吗?还是其他原因?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-16 08:26:26

我自己找到了解决办法,并分享它!

原因是本机代码涉及复制数据,因此像矩阵向量乘法这样的操作不能从本机代码中受益。

因此,如果mmul函数识别矩阵*向量乘法,则使用Java代码。

您可以在这里获得更多信息,https://groups.google.com/forum/#!topic/jblas-users/HY2acEE3Y10

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

https://stackoverflow.com/questions/31448782

复制
相关文章

相似问题

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