38 int info_factorization;
40 float *A1 = (
float *)malloc(LDA*N*
sizeof(
float));
41 float *A2 = (
float *)malloc(LDA*N*
sizeof(
float));
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 SPOTRF example ! \n");
66 printf(
"-- Run of SPOTRF example successful ! \n");
84 int info_factorization;
88 eps = LAPACKE_slamch_work(
'e');
90 float *Residual = (
float *)malloc(N*N*
sizeof(
float));
91 float *L1 = (
float *)malloc(N*N*
sizeof(
float));
92 float *L2 = (
float *)malloc(N*N*
sizeof(
float));
93 float *work = (
float *)malloc(N*
sizeof(
float));
95 memset((
void*)L1, 0, N*N*
sizeof(
float));
96 memset((
void*)L2, 0, N*N*
sizeof(
float));
100 LAPACKE_slacpy_work(LAPACK_COL_MAJOR,
' ', N, N, A1, LDA, Residual, N);
104 LAPACKE_slacpy_work(LAPACK_COL_MAJOR,
'u', N, N, A2, LDA, L1, N);
105 LAPACKE_slacpy_work(LAPACK_COL_MAJOR,
'u', N, N, A2, LDA, L2, N);
106 cblas_strmm(
CblasColMajor,
CblasLeft,
CblasUpper,
CblasTrans,
CblasNonUnit, N, N, (alpha), L1, N, L2, N);
109 LAPACKE_slacpy_work(LAPACK_COL_MAJOR,
'l', N, N, A2, LDA, L1, N);
110 LAPACKE_slacpy_work(LAPACK_COL_MAJOR,
'l', N, N, A2, LDA, L2, N);
111 cblas_strmm(
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;