首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Openblas cblas非方阵分割错误

Openblas cblas非方阵分割错误
EN

Stack Overflow用户
提问于 2016-03-04 23:43:59
回答 1查看 255关注 0票数 0

我在运行openblas cblas测试程序时遇到了问题。我的Cblas在乘以方阵时运行得很好,但当我用非方阵尝试它时,我得到了错误“分割错误-核心转储”我检查并重新检查了维度问题,但它们似乎是正确的,所以我想知道哪里可能是错的。当我输入m=200而不是m=300时,它可以完美地工作。

例如,以下程序不起作用

代码语言:javascript
复制
    #include <iostream>
    #include <stdlib.h>

    extern "C"
    {
    #include <cblas.h>
    }



    using namespace std;

    int main()
    {
        double *a,*x, *y, *z;
        int m,k;
        m=300; k=200;

        a = (double *) malloc( m*k*sizeof( double ));
        x = (double *) malloc (k*sizeof(double));
        y = (double *) malloc (m*sizeof(double));
        z = (double *) malloc (m*sizeof(double));

        int i;

        for (i = 0; i < (m*k); ++i)
        {
            a[i] = 1;
        }

        for (i = 0; i < (k); ++i)
        {
            x[i] = 1;
        }

        for (i = 0; i < (m); ++i)
        {
            y[i] = 100 ;
        }

        cblas_dcopy(m,y,1,z,1);
        cblas_dgemv(CblasRowMajor,CblasNoTrans,m,k,1.0, a ,m ,x, 1, 1.0, z, 1);


        for (int i = 0; i<m; ++i)
        {
             cout<<z[i]<<endl;
        }

        free (a);
        free (x) ;
        free (y) ;
        free (z) ;

        return 0;
        }

提前谢谢你

EN

回答 1

Stack Overflow用户

发布于 2016-03-05 23:25:45

我已经解决了这个问题: blas文档中给出的参数LDA (紧跟在矩阵后面的参数)对应于他们所说的“矩阵的前导维度”。在COLMAJOR系统(由Fortran使用)中,必须将矩阵的行数作为LDA传递,如果在C或C++中使用cblas,则必须将列数作为LDA传递,因为使用的是ROWMAJOR系统。

希望这篇文章能在未来帮助一些人

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

https://stackoverflow.com/questions/35800120

复制
相关文章

相似问题

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