gpt4 book ai didi

c++ - 使用 LAPACK/BLAS 的可变大小数组

转载 作者:行者123 更新时间:2023-11-30 02:55:56 25 4
gpt4 key购买 nike

我的最后一个问题不是很清楚。于是重新发帖。我正在尝试使用 BLAS 例程 dgemm 进行矩阵乘法。由于我希望输入到 dgemm 的数组大小不固定,因此我正在创建一个可变大小的数组。但这似乎不起作用,因为我不断收到异常错误。我的代码如下:

#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)
{
int MatSize = 2;
double **A= new double *[MatSize];
double **B= new double *[MatSize];
double **C= new double *[MatSize];
for (int i=0; i<MatSize; i++)
{
A[i] = new double[MatSize];
B[i] = new double[MatSize];
C[i] = new double[MatSize];
}
A[0][0] = 1;
A[0][1]= 2;
A[1][0] = 1;
A[1][1]=2;
B[0][0] = -2;
B[0][1]= 3;
B[1][0]= 2;
B[1][1]= 2;
char TRANS = 'N';
char TRANS2 = 'N';
double ALPHA = 1;
double BETA = 0;
dgemm_(&TRANS, &TRANS, &MatSize, &MatSize, &MatSize, &ALPHA, A, &MatSize, B, &MatSize, &BETA, C, &MatSize);
cout << C[0][0] << C[0][1] << endl;
cout << C[1][0] << C[1][1] << endl;
getchar();
return 0;
}

任何输入都会非常有帮助。

最佳答案

您尝试将数组的数组传递给 dgemm,即(指向数组的)指针数组。当然不可能,必须传 double 组。

参见 here对于 dgemm header ,它需要 double*,而不是 double**。

关于c++ - 使用 LAPACK/BLAS 的可变大小数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16052328/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com