繁体   English   中英

LAPACK矩阵乘法与C ++

[英]LAPACK Matrix multiplication with C++

我是C ++的新手,并尝试使用LAPACK库进行矩阵乘法。 我试着运行下面给出的例程dgemm。 我期待输出A * B. 但每次我得到答案B * A. 这是常规工作的方式或我的代码有什么问题。

我的代码:

#include "stdafx.h"
#include<iostream>

using namespace std;

extern "C" void dgemm_(const char *TRANSA, const char *TRANSB, const int *M, const int *N, const int *K, double *ALPHA, double *A, const int *LDA, double *B, const int *LDB, double *BETA, double *C, const int *LDC);

int main(void)
{
    double A[4] = {1,2,3,4};
    double B[4] = {5,6,7,8};
    char TRANS = 'N';
    int M = 2;
    int N = 2;
    int K = 2;
    double ALPHA = 1.0;
    int LDA = 2;
    int LDB = 2;
    double BETA = 0.0;
    double C[4];
    int LDC = 2;

    dgemm_(&TRANS, &TRANS, &M, &N, &K, &ALPHA, A, &LDA, B, &LDB, &BETA, C, &LDC);

    cout << C[0] << endl;
    cout << C[1] << endl;
    cout << C[2] << endl;
    cout << C[3] << endl;
    getchar();
    return 0;
}

任何输入都将非常有用。

我没有研究过你对dgemm的调用的细节,我不知道你是如何解释结果矩阵的。 但是你似乎很可能在某处混合了col major和row major解释。 最有可能的计算是使用col major,但是你假设是行专业。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM