可变大小阵列与LAPACK/BLAS
Variable Size array with LAPACK/BLAS
我的最后一个问题不是很清楚。所以再发一遍。我试图做矩阵乘法使用BLAS例程。由于我希望输入到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,即指针的数组(指向数组)。当然这是不可能的,你必须传递一个双精度类型的数组。
相关文章:
- 直接在RcppArmadillo中调用LAPACK例程
- Armadillo正在为共享的lapack库获取未定义的参考
- LAPACK函数在第一次迭代后变慢
- BLAS 2 级波段矩阵向量积多个向量
- 有没有一种算法可以将 LAPACK 排列更改为真正的排列?
- Lapack函数DGTSV通过C /Visual Studio提供未解决的外部符号
- MATLAB faster than LAPACK?
- SuperLu和LaPack的比较在与犰狳进行基准测试时失败
- 检查并行化 BLAS 例程的结果
- Blas 和 Lapack 库是否有本机 C++(不是 C)接口?
- 推广到多个BLAS/LAPACK库
- 矩阵乘法的快速LAPACK/BLAS
- 在Windows 7的Qt Creator项目中链接MLPACK, Armadillo和LAPACK/BLAS
- 与LAPACK和BLAS的链接会导致c++异常无法处理
- BLAS/LAPACK未安装:如何安装
- 在c++中调用lapack和blas
- 可变大小阵列与LAPACK/BLAS
- 将英特尔的MKL(BLAS&LAPACK)连接到GCC
- Armadillo C++和BLAS和ATLAS在mingw32下找不到lapack BLAS
- C++中的矩阵操作(使用 Blas/Lapack 或其他替代方案)