int P_zgesvd( const char *jobu, const char *jobvt, int M, int N, void *A, int LDA, double *S, void *U, int LDU, void *VT, int LDVT ) { PLASMA_enum ju, jvt; PLASMA_desc *descT; int info; /* if (*jobu != 'N') { return(-1); } if (*jobvt != 'N') { return(-2); } */ ju = PlasmaNoVec; jvt = PlasmaNoVec; PLASMA_Alloc_Workspace_zgesvd(M, N, &descT); info = PLASMA_zgesvd(ju, jvt, M, N, A, LDA, S, descT, U, LDU, VT, LDVT); PLASMA_Dealloc_Handle_Tile(&descT); return(info); }
static int RunTest(int *iparam, double *dparam, real_Double_t *t_) { PASTE_CODE_IPARAM_LOCALS( iparam ); PLASMA_desc *descT; int jobu = PlasmaNoVec; int jobvt = PlasmaNoVec; int INFO; /* Allocate Data */ PASTE_CODE_ALLOCATE_MATRIX_TILE( descA, 1, PLASMA_Complex64_t, PlasmaComplexDouble, LDA, M, N ); PASTE_CODE_ALLOCATE_MATRIX( VT, (jobvt == PlasmaVec), PLASMA_Complex64_t, N, N ); PASTE_CODE_ALLOCATE_MATRIX( U, (jobu == PlasmaVec), PLASMA_Complex64_t, M, M ); PASTE_CODE_ALLOCATE_MATRIX( S, 1, double, N, 1 ); /* Initialiaze Data */ PLASMA_zplrnt_Tile(descA, 51 ); /* Save AT and bT in lapack layout for check */ if ( check ) { } /* Allocate Workspace */ PLASMA_Alloc_Workspace_zgesvd(N, N, &descT); if ( jobu == PlasmaVec ) { LAPACKE_zlaset_work(LAPACK_COL_MAJOR, 'A', M, M, 0., 1., U, M); } if ( jobvt == PlasmaVec ) { LAPACKE_zlaset_work(LAPACK_COL_MAJOR, 'A', N, N, 0., 1., VT, N); } START_TIMING(); INFO = PLASMA_zgesvd_Tile(jobu, jobvt, descA, S, descT, U, M, VT, N); STOP_TIMING(); if(INFO!=0){ printf(" ERROR OCCURED INFO %d\n",INFO); } /* Check the solution */ if ( check ) { } /* DeAllocate Workspace */ PLASMA_Dealloc_Handle_Tile(&descT); if (jobu == PlasmaVec) { free( U ); } if (jobvt == PlasmaVec) { free( VT ); } PASTE_CODE_FREE_MATRIX( descA ); free( S ); return 0; }
void PLASMA_ALLOC_WORKSPACE_ZGESVD(int *M, int *N, intptr_t **T, int *INFO) { *INFO = PLASMA_Alloc_Workspace_zgesvd(*M, *N, (PLASMA_desc **)T); }