38 int info_factorization;
40 double *A1 = (
double *)malloc(LDA*N*
sizeof(
double));
41 double *A2 = (
double *)malloc(LDA*N*
sizeof(
double));
45 printf(
"Out of Memory \n ");
51 printf(
"-- PLASMA is initialized to run on %d cores. \n",cores);
63 if ( info_factorization != 0 )
64 printf(
"-- Error in DPOTRF example ! \n");
66 printf(
"-- Run of DPOTRF example successful ! \n");
84 int info_factorization;
88 eps = LAPACKE_dlamch_work(
'e');
90 double *Residual = (
double *)malloc(N*N*
sizeof(
double));
91 double *L1 = (
double *)malloc(N*N*
sizeof(
double));
92 double *L2 = (
double *)malloc(N*N*
sizeof(
double));
93 double *work = (
double *)malloc(N*
sizeof(
double));
95 memset((
void*)L1, 0, N*N*
sizeof(
double));
96 memset((
void*)L2, 0, N*N*
sizeof(
double));
100 LAPACKE_dlacpy_work(LAPACK_COL_MAJOR,
' ', N, N, A1, LDA, Residual, N);
104 LAPACKE_dlacpy_work(LAPACK_COL_MAJOR,
'u', N, N, A2, LDA, L1, N);
105 LAPACKE_dlacpy_work(LAPACK_COL_MAJOR,
'u', N, N, A2, LDA, L2, N);
106 cblas_dtrmm(
CblasColMajor,
CblasLeft,
CblasUpper,
CblasTrans,
CblasNonUnit, N, N, (alpha), L1, N, L2, N);
109 LAPACKE_dlacpy_work(LAPACK_COL_MAJOR,
'l', N, N, A2, LDA, L1, N);
110 LAPACKE_dlacpy_work(LAPACK_COL_MAJOR,
'l', N, N, A2, LDA, L2, N);
111 cblas_dtrmm(
CblasColMajor,
CblasRight,
CblasLower,
CblasTrans,
CblasNonUnit, N, N, (alpha), L1, N, L2, N);
115 for (i = 0; i < N; i++)
116 for (j = 0; j < N; j++)
117 Residual[j*N+i] = L2[j*N+i] - Residual[j*N+i];
122 printf(
"============\n");
123 printf(
"Checking the Cholesky Factorization \n");
124 printf(
"-- ||L'L-A||_oo/(||A||_oo.N.eps) = %e \n",Rnorm/(Anorm*N*eps));
126 if ( isnan(Rnorm/(Anorm*N*eps)) || (Rnorm/(Anorm*N*eps) > 10.0) ){
127 printf(
"-- Factorization is suspicious ! \n");
128 info_factorization = 1;
131 printf(
"-- Factorization is CORRECT ! \n");
132 info_factorization = 0;
135 free(Residual); free(L1); free(L2); free(work);
137 return info_factorization;