update: [tensor] add transpose optimized function and tests

This commit is contained in:
2026-06-28 20:42:10 +02:00
parent 581e501b75
commit 052f26ac5c
3 changed files with 106 additions and 10 deletions
+64 -3
View File
@@ -17,7 +17,7 @@
//#include "permutation_t/permutation_t.h"
#include "tensor_t/tensor_t.h"
#define VALGRIND_ 0
#define VALGRIND_ 1
TEST(rank){
endian =true;
@@ -911,7 +911,7 @@ TEST(tensorContractnProd_TYPE_FLOATNoOpt3endianFalse ){
d0->perm[1]=2; //3;
d0->perm[2]=3;
d1->perm[0]=4;
d1->perm[0]=3;
d1->perm[1]=2;//3;
d1->perm[2]=5;
@@ -922,7 +922,7 @@ TEST(tensorContractnProd_TYPE_FLOATNoOpt3endianFalse ){
d0->perm[1]=12; //3;
d0->perm[2]=35;
d1->perm[0]=32;
d1->perm[0]=35;
d1->perm[1]=12;//3;
d1->perm[2]=13;
#endif
@@ -2168,6 +2168,67 @@ TEST(transpose_parseInput_unknownpart_to_tensor){
free_tensor_TYPE_FLOAT(t);
free_tensor_TYPE_FLOAT(transpose);
}
TEST(transpose_input_to_OpT_Ranspose){
endian=true;
char *input="[*,3]"\
"((1.1,1.2,1.3)"\
"((2.1,2.2,2.3)"\
"((3.1,3.2,3.3)"\
"((4.1,4.2,4.3)"\
"((5.1,5.2,5.3)"\
"((6.1,6.2,6.3)"\
"(7.1,7.2,7.3)) ";
tensor_TYPE_FLOAT *t=parseInput_withDim_to_tensor_TYPE_FLOAT(input);
print_tensor_msg_TYPE_FLOAT(t," tensor from input" );
tensor_TYPE_FLOAT *transpose = transpose_notOpt_tensor_TYPE_FLOAT(t);
print_tensor_msg_TYPE_FLOAT(transpose," transpose from input" );
tensor_TYPE_FLOAT *transpose_Opt0 = transpose_Opt0_tensor_TYPE_FLOAT(t);
print_tensor_msg_TYPE_FLOAT(transpose_Opt0," transpose_Opt0 from input" );
EXPECT_ARRAY_EQ_TYPE_FLOAT(transpose->x,transpose->dim->rank ,transpose_Opt0->x,transpose_Opt0->dim->rank);
free_tensor_TYPE_FLOAT(t);
free_tensor_TYPE_FLOAT(transpose);
free_tensor_TYPE_FLOAT(transpose_Opt0);
}
TEST(transpose_input_to_OpT_Ranspose2){
endian=true;
char *input="[*,4,3]"\
"(((1.11,1.12,1.13),(1.21,1.22,1.23),(1.31,1.32,1.33),(1.41,1.42,1.43)),"\
"((2.11,2.12,2.13),(2.21,2.22,2.23),(2.31,2.32,2.33),(2.41,2.42,2.43)),"\
"((3.11,3.12,3.13),(3.21,3.22,3.23),(3.31,3.32,3.33),(3.41,3.42,3.43)),"\
"((4.11,4.12,4.13),(4.21,4.22,4.23),(4.31,4.32,4.33),(4.41,4.42,4.43)),"\
"((5.11,5.12,5.13),(5.21,5.22,5.23),(5.31,5.32,5.33),(5.41,5.42,5.43)),"\
"((6.11,6.12,6.13),(6.21,6.22,6.23),(6.31,6.32,6.33),(6.41,6.42,6.43)),"\
"((7.11,7.12,7.13),(7.21,7.22,7.23),(7.31,7.32,7.33),(7.41,7.42,7.43)),"\
"((8.11,8.12,8.13),(8.21,8.22,8.23),(8.31,8.32,8.33),(8.41,8.42,8.43)),"\
"((9.11,9.12,9.13),(9.21,9.22,9.23),(9.31,9.32,9.33),(9.41,9.42,9.43)),"\
"((10.11,10.12,10.13),(10.21,10.22,10.23),(10.31,10.32,10.33),(10.41,10.42,10.43)),"\
"((11.11,11.12,11.13),(11.21,11.22,11.23),(11.31,11.32,11.33),(11.41,11.42,11.43)),"\
"((12.11,12.12,12.13),(12.21,12.22,12.23),(12.31,12.32,12.33),(12.41,12.42,12.43)),"\
"((13.11,13.12,13.13),(13.21,13.22,13.23),(13.31,13.32,13.33),(13.41,13.42,13.43)))";
tensor_TYPE_FLOAT *t=parseInput_withDim_to_tensor_TYPE_FLOAT(input);
print_tensor_msg_TYPE_FLOAT(t," tensor from input" );
tensor_TYPE_FLOAT *transpose = transpose_notOpt_tensor_TYPE_FLOAT(t);
print_tensor_msg_TYPE_FLOAT(transpose," transpose from input" );
tensor_TYPE_FLOAT *transpose_Opt0 = transpose_Opt0_tensor_TYPE_FLOAT(t);
print_tensor_msg_TYPE_FLOAT(transpose_Opt0," transpose_Opt0 from input" );
EXPECT_ARRAY_EQ_TYPE_FLOAT(transpose->x,transpose->dim->rank ,transpose_Opt0->x,transpose_Opt0->dim->rank);
free_tensor_TYPE_FLOAT(t);
free_tensor_TYPE_FLOAT(transpose);
free_tensor_TYPE_FLOAT(transpose_Opt0);
}
TEST(permute_parseInput_unknownpart_to_tensor){
endian=true;
char *input="[*,3]"\