Mentions légales du service

Skip to content
Snippets Groups Projects

WIP: Dist testing

Closed BARROS DE ASSIS Lucas requested to merge lbarrosd/chameleon:dist_testing into master
Files
34
+ 83
0
@@ -55,6 +55,8 @@
@@ -55,6 +55,8 @@
* @sa CHAMELEON_sLapack_to_Tile
* @sa CHAMELEON_sLapack_to_Tile
*
*
*/
*/
 
 
int CHAMELEON_zLapack_to_Tile( CHAMELEON_Complex64_t *Af77, int LDA, CHAM_desc_t *A )
int CHAMELEON_zLapack_to_Tile( CHAMELEON_Complex64_t *Af77, int LDA, CHAM_desc_t *A )
{
{
CHAM_context_t *chamctxt;
CHAM_context_t *chamctxt;
@@ -79,6 +81,11 @@ int CHAMELEON_zLapack_to_Tile( CHAMELEON_Complex64_t *Af77, int LDA, CHAM_desc_t
@@ -79,6 +81,11 @@ int CHAMELEON_zLapack_to_Tile( CHAMELEON_Complex64_t *Af77, int LDA, CHAM_desc_t
LDA, A->n, 0, 0, A->m, A->n, 1, 1,
LDA, A->n, 0, 0, A->m, A->n, 1, 1,
chameleon_getaddr_cm, chameleon_getblkldd_cm, NULL );
chameleon_getaddr_cm, chameleon_getblkldd_cm, NULL );
 
if(getenv("DEBUG")) {
 
printf("[%d]Matrix B (created inside zLapack_to_Tile; always p=1 q=1)\n", CHAMELEON_My_Mpi_Rank());
 
chameleon_zprint_node_matrix(B, 1);
 
}
 
/* Start the computation */
/* Start the computation */
chameleon_sequence_create( chamctxt, &sequence );
chameleon_sequence_create( chamctxt, &sequence );
@@ -89,6 +96,11 @@ int CHAMELEON_zLapack_to_Tile( CHAMELEON_Complex64_t *Af77, int LDA, CHAM_desc_t
@@ -89,6 +96,11 @@ int CHAMELEON_zLapack_to_Tile( CHAMELEON_Complex64_t *Af77, int LDA, CHAM_desc_t
chameleon_sequence_wait( chamctxt, sequence );
chameleon_sequence_wait( chamctxt, sequence );
 
if(getenv("DEBUG")) {
 
printf("\n[%d]Matrix A (created by pzlacpy using B; p and q come from the descriptor created at testing_zgemm)\n", CHAMELEON_My_Mpi_Rank());
 
chameleon_zprint_node_matrix(A, 2);
 
}
 
/* Destroy temporary B descriptor */
/* Destroy temporary B descriptor */
CHAMELEON_Desc_Destroy( &B );
CHAMELEON_Desc_Destroy( &B );
@@ -171,3 +183,74 @@ int CHAMELEON_zTile_to_Lapack( CHAM_desc_t *A, CHAMELEON_Complex64_t *Af77, int
@@ -171,3 +183,74 @@ int CHAMELEON_zTile_to_Lapack( CHAM_desc_t *A, CHAMELEON_Complex64_t *Af77, int
chameleon_sequence_destroy( chamctxt, sequence );
chameleon_sequence_destroy( chamctxt, sequence );
return status;
return status;
}
}
 
 
 
 
 
 
 
#include <stdio.h>
 
 
/* Prints a tile if it's stored in this process */
 
void chameleon_zprint_tile(CHAM_desc_t *desc, int i, int j) {
 
 
int rank = CHAMELEON_My_Mpi_Rank();
 
int x,y;
 
 
/* leading dimension of the tile */
 
int ld = desc->get_blkldd(desc, i);
 
int tempmm = i == desc->mt-1 ? desc->m - i * desc->mb : desc->mb;
 
int tempnn = j == desc->nt-1 ? desc->n - j * desc->nb : desc->nb;
 
 
printf("[P%d]Tile %d,%d,%d\n", rank, i, j, ld);
 
 
 
if (chameleon_desc_islocal( desc, i, j)) {
 
CHAMELEON_Complex64_t *tile;
 
tile= desc->get_blkaddr(desc, i, j);
 
 
for (x = 0; x < tempmm; x++) {
 
for (y = 0; y < tempnn; y++) {
 
printf("[P%d]%e ", rank, tile[y*ld+x]);
 
}
 
printf("\n");
 
}
 
}
 
 
else {
 
for (x = 0; x < tempmm; x++) {
 
for (y = 0; y < tempnn; y++) {
 
printf("[P%d]x ", rank);
 
}
 
printf("\n");
 
}
 
}
 
}
 
 
 
/* Prints every tile stored in this process */
 
void chameleon_zprint_node_matrix(CHAM_desc_t *desc, int tiles) {
 
int i, j;
 
 
for (i = 0; i < desc->mt; i++) {
 
for (j = 0; j < desc->nt; j++) {
 
chameleon_zprint_tile(desc, i, j);
 
}
 
}
 
}
 
 
 
void chameleon_zprint_matrix(char *id, int m, int n, CHAMELEON_Complex64_t *A, int lda) {
 
 
printf("====================================\n");
 
printf("%s:\n", id);
 
int i, j;
 
for (i = 0; i < m; i++) {
 
for (j = 0; j < n; j++) {
 
/* The matrix is stored in col-major but we print it in row-major */
 
printf("%e ", A[j*lda+i]);
 
}
 
printf("\n");
 
}
 
printf("====================================\n");
 
}
Loading