【问题标题】:Jblas, Error on argument 8 (LDA) in DGEMMJblas,DGEMM 中的参数 8 (LDA) 错误
【发布时间】:2015-10-16 17:08:59
【问题描述】:

我正在计算一个协方差矩阵,没有任何问题:

    DoubleMatrix W = new DoubleMatrix(w);
    DoubleMatrix ret = new DoubleMatrix(coReturns);
    DoubleMatrix meanRets = ret.columnMeans();
    DoubleMatrix demeanedReturns = ret.subRowVector(meanRets);
    DoubleMatrix S = demeanedReturns.transpose().mmul(demeanedReturns).div(varianceDataPoints - 1);

但是突然我抛出了这个异常:

Exception in thread "main" java.lang.IllegalArgumentException: XERBLA: Error on argument 8 (LDA) in DGEMM
    at org.jblas.NativeBlas.dgemm(Native Method)
    at org.jblas.SimpleBlas.gemm(SimpleBlas.java:247)
    at org.jblas.DoubleMatrix.mmuli(DoubleMatrix.java:1781)
    at org.jblas.DoubleMatrix.mmul(DoubleMatrix.java:3138)

我真的不知道这个异常想告诉我什么。谷歌也不知道。谁能解释一下这里发生了什么以及如何解决这个问题?

【问题讨论】:

    标签: java matrix blas


    【解决方案1】:

    你可以找到LDA的用途here

     LDA is INTEGER
               On entry, LDA specifies the first dimension of A as declared
               in the calling (sub) program. When  TRANSA = 'N' or 'n' then
               LDA must be at least  max( 1, m ), otherwise  LDA must be at
               least  max( 1, k ).
    

    有一个相关的SO post解释了它的含义。

    jblas 的源代码是here,因此您应该能够逐步了解它并弄清楚发生了什么。 似乎很奇怪,在您得到异常 (SimpleNative:247) 的行上,LDA 设置为 0(而不是介于 1 和 k 之间的值)。我建议在jblas issue tracker 上打开一个问题。

    【讨论】:

      猜你喜欢
      • 2012-01-02
      • 1970-01-01
      • 2017-01-07
      • 2011-05-10
      • 1970-01-01
      • 2020-12-25
      • 2014-05-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多