37 #ifndef PARALLEL_ALGORITHMS_ 38 #define PARALLEL_ALGORITHMS_ 86 void getSubMatrix(
double *matrix,
int size1,
int size2,
int O1,
int O2,
double *A,
int size3,
int size4,
int nCores);
106 void putSubMatrix(
double *matrix,
int size1,
int size2,
int O1,
int O2,
double *A,
int size3,
int size4,
int nCores);
125 void ParallelChol(
double *matrix,
int r,
int c,
int ro,
int co,
int n,
int nCores,
int deep);
157 void ParallelLinearSystem(
double *matrix1,
int r1,
int c1,
int ro1,
int co1,
double *matrix2,
int r2,
int c2,
int ro2,
int co2,
int n,
int m,
double *result,
int rr,
int cr,
int ror,
int cor,
int nCores);
219 void Chol(
double *matrix,
int r,
int c,
int ro,
int co,
int n,
int nCores,
int numTh,
int deep,
int posIni,
double *memaux,
int blockSize);
254 void LinearSystem(
double *matrix1,
int r1,
int c1,
int ro1,
int co1,
double *matrix2,
int r2,
int c2,
int ro2,
int co2,
int n,
int m,
double *result,
int rr,
int cr,
int ror,
int cor,
int nCores,
int numTh,
int posIni,
double *memaux,
int blockSize);
283 void TriangleInversion(
double *matrix,
int r,
int c,
int ro,
int co,
int n,
int nCores,
int posIni,
int numTh,
double *memaux,
int blockSize);
304 void DiagInversion(
double *matrix,
int r,
int c,
int ro,
int co,
int n,
int nCores,
int posIni,
int numTh);
329 void InversionNLProducts(
double *matrix,
int r,
int c,
int ro,
int co,
int n,
int nCores,
int posIni,
int deep,
int numTh,
double *memaux,
int blockSize);
354 void InversionLNProducts(
double *matrix,
int r,
int c,
int ro,
int co,
int n,
int nCores,
int posIni,
int deep,
int numTh,
double *memaux,
int blockSize);
389 void NNProduct(
double *m1,
int r1,
int ro1,
int c1,
int co1,
double *m2,
int r2,
int ro2,
int c2,
int co2,
int n1,
int n2,
int n3,
double K1,
double K2,
double *result,
int rr,
int ror,
int cr,
int cor,
int nCores,
int posIni,
int numTh,
int orientation);
423 void TNNProduct(
double *m1,
int r1,
int ro1,
int c1,
int co1,
double *m2,
int r2,
int ro2,
int c2,
int co2,
int n1,
int n2,
int n3,
double K1,
double K2,
double *result,
int rr,
int ror,
int cr,
int cor,
int nCores,
int posIni,
int numTh);
456 void NNTProduct(
double *m1,
int r1,
int ro1,
int c1,
int co1,
double *m2,
int r2,
int ro2,
int c2,
int co2,
int n1,
int n2,
int n3,
double K1,
double K2,
double *result,
int rr,
int ror,
int cr,
int cor,
int nCores,
int posIni,
int numTh);
483 void AATProduct(
double *m1,
int r1,
int ro1,
int c1,
int co1,
int n1,
int n2,
double K1,
double K2,
double *result,
int rr,
int ror,
int cr,
int cor,
int nCores,
int posIni,
int numTh);
515 void LNProduct(
double *m1,
int r1,
int ro1,
int c1,
int co1,
double *m2,
int r2,
int ro2,
int c2,
int co2,
int n1,
int n2,
double K1,
double *result,
int rr,
int ror,
int cr,
int cor,
int nCores,
int posIni,
int numTh);
548 void LTNProduct(
double *m1,
int r1,
int ro1,
int c1,
int co1,
double *m2,
int r2,
int ro2,
int c2,
int co2,
int n1,
int n2,
double K1,
double *result,
int rr,
int ror,
int cr,
int cor,
int nCores,
int posIni,
int numTh);
580 void NLProduct(
double *m1,
int r1,
int ro1,
int c1,
int co1,
double *m2,
int r2,
int ro2,
int c2,
int co2,
int n1,
int n2,
double K1,
double *result,
int rr,
int ror,
int cr,
int cor,
int nCores,
int posIni,
int numTh);
613 void NLTProduct(
double *m1,
int r1,
int ro1,
int c1,
int co1,
double *m2,
int r2,
int ro2,
int c2,
int co2,
int n1,
int n2,
double K1,
double *result,
int rr,
int ror,
int cr,
int cor,
int nCores,
int posIni,
int numTh);
637 void MoveMatrix(
double *m1,
int r1,
int ro1,
int c1,
int co1,
double *m2,
int r2,
int ro2,
int c2,
int co2,
int n1,
int n2,
int nCores,
int posIni,
int numTh);
void initMemory(int Threads, int size)
Function to allocate auxiliar memory to be used in the algebra operations.
void ParallelVectorMatrixT(double *m1, int size, double *m2, double *result, int numThreads)
This function performs a product of a vector and the transpose of a square matrix in parallel...
void ParallelChol(double *matrix, int r, int c, int ro, int co, int n, int nCores, int deep)
Main function that performs a parallel cholesky factorization.
void ParallelLinearSystem(double *matrix1, int r1, int c1, int ro1, int co1, double *matrix2, int r2, int c2, int ro2, int co2, int n, int m, double *result, int rr, int cr, int ror, int cor, int nCores)
Main function to solve a linear system in parallel.
void ParallelVectorMatrix(double *m1, int size, double *m2, double *result, int numThreads)
This function performs a product of a vector and a square matrix in parallel.
void getSubMatrix(double *matrix, int size1, int size2, int O1, int O2, double *A, int size3, int size4, int nCores)
This function saves a piece of a matrix in the auxiliar memory.
void putSubMatrix(double *matrix, int size1, int size2, int O1, int O2, double *A, int size3, int size4, int nCores)
This function loads a piece of a matrix in the auxiliar memory and storage it in a matrix...
void updateMemory(int Threads, int size)
Function to update auxiliar memory to be used in the algebra operations.