// tutorial0_lapack.cc #include #include "magma_lapack.h" // ----------------------------------------------------------------------------- // generates random n-by-n A and n-by-nrhs X in CPU host memory void generate_problem( int n, int nrhs, double* A, int lda, double* X, int ldx ) { for (int j = 0; j < n; ++j) { for (int i = 0; i < n; ++i) { A[ i + j*lda ] = rand() / double(RAND_MAX); } } for (int j = 0; j < nrhs; ++j) { for (int i = 0; i < n; ++i) { X[ i + j*ldx ] = rand() / double(RAND_MAX); } } } // ----------------------------------------------------------------------------- // CPU interface: input & output matrices A and X in CPU host memory int main( int argc, char** argv ) { int n = 100, nrhs = 10; int lda = n, ldx = n; double *A = new double[ lda*n ]; double *X = new double[ ldx*nrhs ]; int* ipiv = new int[ n ]; // ... fill in A and X with your data // A[ i + j*lda ] = A_ij // X[ i + j*ldx ] = X_ij generate_problem( n, nrhs, A, lda, X, ldx ); // solve A X = B where B is in X int info; lapackf77_dgesv( &n, &nrhs, A, &lda, ipiv, X, &ldx, &info ); if (info != 0) { throw std::exception(); } // ... use result in X delete[] A; delete[] X; delete[] ipiv; }