add print and sprint dim and tensor for debug
This commit is contained in:
@@ -173,10 +173,60 @@ void printDebug_dimension(dimension *d,char *msg){
|
||||
printf("(%s)->size = %ld | (%s)->rank = %ld \n",msg,d->size,msg,d->rank);
|
||||
for(size_t i=0; i<d->size; ++i)
|
||||
printf("[%ld: %ld] |", i,d->perm[i]);
|
||||
if(endian)
|
||||
printf("litle endian (true)\n");
|
||||
/* if(endian)
|
||||
printf("\nendian (true): the bigest index varies first, e.g: [x0,x1,x2,...,xn] xn is the bigest index\n");
|
||||
else
|
||||
printf("litle endian (false) \n");
|
||||
printf("\nendian (false): the lowest index varies first, e.g: [x0,x1,x2,...,xn] x0 is the lowest index\n");
|
||||
*/
|
||||
}
|
||||
|
||||
size_t sprint_dimension(char **dimContent, dimension *d){
|
||||
if(*dimContent != NULL){
|
||||
free(*dimContent);
|
||||
*dimContent=NULL;
|
||||
}
|
||||
size_t nbch=6*d->size+40;
|
||||
*dimContent = malloc(nbch);
|
||||
//printf("nbCh=%ld\n",nbch);
|
||||
char *val=NULL;
|
||||
size_t cur=0;
|
||||
char *dimSzCh="dim->size";
|
||||
for(size_t i=0; i<strlen(dimSzCh);++i)
|
||||
(*dimContent)[cur++]=dimSzCh[i];
|
||||
(*dimContent)[cur++]='=';
|
||||
val=TYPE_SIZE_T_TO_STR(d->size);
|
||||
for(size_t c=0;c<strlen(val);++c)
|
||||
(*dimContent)[cur++]=val[c];
|
||||
free(val); val = NULL;
|
||||
(*dimContent)[cur++]=' ';
|
||||
(*dimContent)[cur++]='/';
|
||||
(*dimContent)[cur++]=' ';
|
||||
char *dimRkCh="dim->rank";
|
||||
for(size_t i=0; i<strlen(dimRkCh);++i)
|
||||
(*dimContent)[cur++]=dimRkCh[i];
|
||||
(*dimContent)[cur++]='=';
|
||||
val=TYPE_SIZE_T_TO_STR(d->rank);
|
||||
for(size_t c=0;c<strlen(val);++c)
|
||||
(*dimContent)[cur++]=val[c];
|
||||
free(val); val = NULL;
|
||||
(*dimContent)[cur++]=' ';
|
||||
(*dimContent)[cur++]='\n';
|
||||
(*dimContent)[cur++]='[';
|
||||
for(size_t i=0; i<d->size;++i){
|
||||
(*dimContent)[cur++]=' ';
|
||||
val=TYPE_SIZE_T_TO_STR(d->perm[i]);
|
||||
for(size_t c=0;c<strlen(val);++c)
|
||||
(*dimContent)[cur++]=val[c];
|
||||
free(val); val = NULL;
|
||||
(*dimContent)[cur++]=',';
|
||||
|
||||
}
|
||||
(*dimContent)[cur++]=']';
|
||||
|
||||
(*dimContent)[cur++]='\n';
|
||||
(*dimContent)[cur++]='\0';
|
||||
|
||||
return cur;
|
||||
}
|
||||
|
||||
void updateRankDim(dimension *dim){
|
||||
|
||||
@@ -40,6 +40,7 @@ void add_dimension(dimension **d, dimension *d0, dimension *d1);
|
||||
void min_dimension(dimension **d, dimension *d0, dimension *d1);
|
||||
|
||||
void printDebug_dimension(dimension *d, char *msg);
|
||||
size_t sprint_dimension(char **dimContent, dimension *d);
|
||||
|
||||
void updateRankDim(dimension *dim);
|
||||
size_t LineFromCoord(size_t *coo, dimension *dim);
|
||||
|
||||
@@ -161,6 +161,25 @@ TEST(Coord_linear){
|
||||
free(coord);
|
||||
}
|
||||
|
||||
TEST(sprint_dim){
|
||||
dimension *D=create_dim(4);
|
||||
D->perm[0]=2;
|
||||
D->perm[1]=3;
|
||||
D->perm[2]=5;
|
||||
D->perm[3]=6;
|
||||
|
||||
updateRankDim(D);
|
||||
|
||||
char *dimSTR =NULL;
|
||||
size_t nb=sprint_dimension(&dimSTR, D);
|
||||
|
||||
LOG(" nb char : %ld\n, dim print:\n%s\n",nb, dimSTR);
|
||||
|
||||
free_dimension(D);
|
||||
free(dimSTR);
|
||||
}
|
||||
|
||||
|
||||
int main(int argc, char **argv){
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user