PLASMA  2.4.5
PLASMA - Parallel Linear Algebra for Scalable Multi-core Architectures
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups
example_dtrsm.c File Reference

Example for solving a system of linear equations using Cholesky factorization and PLASMA_dtrsm routine. More...

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <plasma.h>
#include <cblas.h>
#include <lapacke.h>
#include <core_blas.h>
Include dependency graph for example_dtrsm.c:

Go to the source code of this file.

Functions

int check_solution (int, int, double *, int, double *, double *, int)
int main ()

Variables

int IONE = 1
int ISEED [4] = {0,0,0,1}

Detailed Description

Example for solving a system of linear equations using Cholesky factorization and PLASMA_dtrsm routine.

PLASMA testing routines PLASMA is a software package provided by Univ. of Tennessee, Univ. of California Berkeley and Univ. of Colorado Denver

Version:
2.4.5
Author:
Bilel Hadri
Date:
2010-11-15 d Tue Nov 22 14:35:53 2011

Definition in file example_dtrsm.c.


Function Documentation

int check_solution ( int  N,
int  NRHS,
double *  A1,
int  LDA,
double *  B1,
double *  B2,
int  LDB 
)
int main ( )

Definition at line 33 of file example_dtrsm.c.

References check_solution(), PLASMA_dlacpy, PLASMA_dplgsy(), PLASMA_dplrnt(), PLASMA_dpotrf(), PLASMA_dtrsm(), PLASMA_Finalize(), PLASMA_Init(), PlasmaLeft, PlasmaLower, PlasmaNonUnit, PlasmaNoTrans, PlasmaTrans, and PlasmaUpperLower.

{
int cores = 2;
int N = 10 ;
int LDA = 10 ;
int NRHS = 5 ;
int LDB = 10 ;
int info_solution;
double *A1 = (double *)malloc(LDA*N*sizeof(double));
double *A2 = (double *)malloc(LDA*N*sizeof(double));
double *B1 = (double *)malloc(LDB*NRHS*sizeof(double));
double *B2 = (double *)malloc(LDB*NRHS*sizeof(double));
/* Check if unable to allocate memory */
if ((!A1)||(!A2)||(!B1)||(!B2)){
printf("Out of Memory \n ");
return EXIT_SUCCESS;
}
/* Plasma Initialize */
PLASMA_Init(cores);
printf("-- PLASMA is initialized to run on %d cores. \n",cores);
/* Initialize A1 and A2 for Symmetric Positive Matrix */
PLASMA_dplgsy( (double)N, N, A1, LDA, 51 );
PLASMA_dlacpy( PlasmaUpperLower, N, N, A1, LDA, A2, LDA );
/* Initialize B1 and B2 */
PLASMA_dplrnt( N, NRHS, B1, LDB, 371 );
PLASMA_dlacpy( PlasmaUpperLower, N, NRHS, B1, LDB, B2, LDB );
/* PLASMA routines */
PLASMA_dpotrf(PlasmaLower, N, A2, LDA);
N, NRHS, (double)1.0, A2, LDA, B2, LDB);
N, NRHS, (double)1.0, A2, LDA, B2, LDB);
/* Check the solution */
info_solution = check_solution(N, NRHS, A1, LDA, B1, B2, LDB);
if ( info_solution != 0 )
printf("-- Error in DTRSM example ! \n");
else
printf("-- Run of DTRSM example successful ! \n");
free(A1); free(A2); free(B1); free(B2);
return EXIT_SUCCESS;
}

Here is the call graph for this function:


Variable Documentation

int IONE = 1

Definition at line 30 of file example_dtrsm.c.

int ISEED[4] = {0,0,0,1}

Definition at line 31 of file example_dtrsm.c.