[debug] try to debug littleEndian false on tensor contracted product

This commit is contained in:
2026-07-26 22:08:15 +02:00
parent 3b5185c201
commit fd0f0e7684
2 changed files with 120 additions and 19 deletions
+32 -18
View File
@@ -560,7 +560,7 @@ TEST(tensorProdNoOpt){
print_tensor_float(M1,"M1");
tensor_TYPE_FLOAT *M=NULL;
//tensor_TYPE_FLOAT *M=NULL;
tensor_TYPE_FLOAT *Mn=NULL;
tensorProdNotOpt_TYPE_FLOAT(&Mn,M0,M1);
@@ -719,7 +719,7 @@ TEST(tensorContractnProd_TYPE_FLOATNoOpt ){
print_tensor_float(M0,"M0");
print_tensor_float(M1,"M1");
tensor_TYPE_FLOAT *M=NULL;
//tensor_TYPE_FLOAT *M=NULL;
tensor_TYPE_FLOAT *MnO=NULL;
//tensorContractnProd_TYPE_FLOAT(&M, M0,M1,2);
@@ -843,7 +843,7 @@ TEST(tensorContractnProd_TYPE_FLOATNoOpt2 ){
print_tensor_float(M0,"M0");
print_tensor_float(M1,"M1");
tensor_TYPE_FLOAT *M=NULL;
//tensor_TYPE_FLOAT *M=NULL;
tensor_TYPE_FLOAT *MnO=NULL;
//tensorContractnProd_TYPE_FLOAT(&M, M0,M1,2);
@@ -924,8 +924,8 @@ TEST(tensorContractnProd_TYPE_FLOATNoOpt3littleEndianFalse ){
dimension *d1=create_dim(3);
#if VALGRIND_
d0->shape[0]=5;
d0->shape[1]=2; //3;
d0->shape[2]=3;
d0->shape[1]=3; //3;
d0->shape[2]=2;
d1->shape[0]=3;
d1->shape[1]=2;//3;
@@ -953,16 +953,16 @@ TEST(tensorContractnProd_TYPE_FLOATNoOpt3littleEndianFalse ){
LOG("M0->dim->size = %ld\n",M0->dim->size);
LOG("M1->dim->size = %ld\n",M1->dim->size);
for(size_t i=0; i<M0->dim->size;++i) M0->x[i]=i*0.1 +1;
for(size_t i=0; i<M1->dim->size;++i) M1->x[i]=i*0.003 + 2;
for(size_t i=0; i<M0->dim->size;++i) M0->x[i]=i*2.1 +1;
for(size_t i=0; i<M1->dim->size;++i) M1->x[i]=i*1.3 + 2;
print_tensor_float(M0,"M0");
print_tensor_float(M1,"M1");
tensor_TYPE_FLOAT *M=NULL;
//tensor_TYPE_FLOAT *M=NULL;
tensor_TYPE_FLOAT *MnO=NULL;
//tensorContractnProd_TYPE_FLOAT(&M, M0,M1,2);
//PRECISION_TYPE_FLOAT = 100000;
//tensorContractnProd_TYPE_FLOAT(&MnO, M0,M1,2);
tensorContractnProdNotOpt_TYPE_FLOAT(&MnO, M0,M1,2);
float MMM0[d0->shape[0]][d0->shape[1]][d0->shape[2]];
@@ -971,8 +971,10 @@ TEST(tensorContractnProd_TYPE_FLOATNoOpt3littleEndianFalse ){
for(long int i1=0;i1<d0->shape[1];++i1){
for(long int i2=0;i2<d0->shape[2];++i2){
coord3[0]=i0; coord3[1]=i1; coord3[2]=i2;
MMM0[i0][i1][i2]=M0->x[signedLineFromCoord(coord3, d0)];
//printf("M0[%ld][%ld][%ld] = %f \n",i0,i1,i2,MMM0[i0][i1][i2]);
size_t z=signedLineFromCoord(coord3, d0);
MMM0[i0][i1][i2]=M0->x[z];
//MMM0[i0][i1][i2]=M0->x[signedLineFromCoord(coord3, d0)];
printf("[[%ld]] M0[%ld][%ld][%ld] = %f \n",z,i0,i1,i2,MMM0[i0][i1][i2]);
}
}
}
@@ -983,7 +985,10 @@ TEST(tensorContractnProd_TYPE_FLOATNoOpt3littleEndianFalse ){
for(long int j1=0;j1<d1->shape[1];++j1){
for(long int j2=0;j2<d1->shape[2];++j2){
coord23[0]=j0; coord23[1]=j1; coord23[2]=j2;
MMM1[j0][j1][j2]=M1->x[signedLineFromCoord(coord23, d1)];
size_t z =signedLineFromCoord(coord23, d1);
MMM1[j0][j1][j2]=M1->x[z];
//MMM1[j0][j1][j2]=M1->x[signedLineFromCoord(coord23, d1)];
printf("[[%ld]] M1[%ld][%ld][%ld] = %f \n",z,j0,j1,j2,MMM1[j0][j1][j2]);
}
}
}
@@ -995,7 +1000,7 @@ TEST(tensorContractnProd_TYPE_FLOATNoOpt3littleEndianFalse ){
for(long int i1=0;i1<d0->shape[1];++i1){
for(long int i2=0;i2<d0->shape[2];++i2){
MMMm[i0][j2] += MMM0[i0][i1][i2] * MMM1[i1][i2][j2];
//printf("MMMm[%ld][%ld][%ld][%ld][%ld] = %f \n",i0,i1,i2,j0,j1,MMMm[i0][i1][i2][j0][j1]);
printf("[%ld] [%ld][%ld] [%ld] MMMm<> = %f \n",i0,i1,i2,j2,MMMm[i0][j2]);
}
}
}
@@ -1009,12 +1014,16 @@ TEST(tensorContractnProd_TYPE_FLOATNoOpt3littleEndianFalse ){
for(long int i0=0;i0<d0->shape[0];++i0){
for(long int j2=0;j2<d1->shape[2];++j2){
coord52[0]=i0; coord52[1]=j2;
EXPECT_EQ_TYPE_FLOAT(MMMm[i0][j2], MnO->x[signedLineFromCoord(coord52, MnO->dim)] );
size_t z = signedLineFromCoord(coord52, MnO->dim);
EXPECT_EQ_TYPE_FLOAT(MMMm[i0][j2], MnO->x[z] );
//EXPECT_EQ_TYPE_FLOAT(MMMm[i0][j2], MnO->x[signedLineFromCoord(coord52, MnO->dim)] );
if(expected_EQ_TYPE_FLOAT(MMMm[i0][j2], MnO->x[signedLineFromCoord(coord52, MnO->dim)] ) == false){
//if(expected_EQ_TYPE_FLOAT(MMMm[i0][j2], MnO->x[signedLineFromCoord(coord52, MnO->dim)] ) == false)
if(expected_EQ_TYPE_FLOAT(MMMm[i0][j2], MnO->x[z] ) == false){
LOG("[ %ld, %ld] [%ld]\n",i0,j2,
signedLineFromCoord(coord52, MnO->dim)
z //signedLineFromCoord(coord52, MnO->dim)
);
printDebug_dimension(MnO->dim,"MnO");
}
}
@@ -1224,6 +1233,9 @@ TEST(tensorContractnProdOpt0_TYPE_FLOAT2 ){
TEST(tensorContractnProdThreadOpt0_TYPE_FLOAT2 ){
//littleEndian=false;
//long int old_PRECISION_TYPE_FLOAT=PRECISION_TYPE_FLOAT;
//PRECISION_TYPE_FLOAT=1;
dimension *d0=create_dim(3);
dimension *d1=create_dim(3);
#if VALGRIND_
@@ -1281,7 +1293,9 @@ TEST(tensorContractnProdThreadOpt0_TYPE_FLOAT2 ){
free_tensor_TYPE_FLOAT(MnO);
free_tensor_TYPE_FLOAT(M0);
free_tensor_TYPE_FLOAT(M1);
//PRECISION_TYPE_FLOAT = old_PRECISION_TYPE_FLOAT ;
//littleEndian=true;
}
TEST(tensorContractnPro2dThreadOpt0_TYPE_FLOAT2 ){