[debug] fix transpose Opt func and alternative
This commit is contained in:
+65
-2
@@ -2186,7 +2186,7 @@ TEST(transpose_parseInput_unknownpart_to_tensor){
|
|||||||
free_tensor_TYPE_FLOAT(t);
|
free_tensor_TYPE_FLOAT(t);
|
||||||
free_tensor_TYPE_FLOAT(transpose);
|
free_tensor_TYPE_FLOAT(transpose);
|
||||||
}
|
}
|
||||||
TEST(transpose_input_to_OpT_Ranspose){
|
TEST(transpose_input_to_OpT0_Ranspose){
|
||||||
littleEndian=true;
|
littleEndian=true;
|
||||||
char *input="[*,3]"\
|
char *input="[*,3]"\
|
||||||
"((1.1,1.2,1.3)"\
|
"((1.1,1.2,1.3)"\
|
||||||
@@ -2214,7 +2214,7 @@ TEST(transpose_input_to_OpT_Ranspose){
|
|||||||
free_tensor_TYPE_FLOAT(transpose_Opt0);
|
free_tensor_TYPE_FLOAT(transpose_Opt0);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(transpose_input_to_OpT_Ranspose2){
|
TEST(transpose_input_to_OpT0_Ranspose2){
|
||||||
littleEndian=true;
|
littleEndian=true;
|
||||||
char *input="[*,4,3]"\
|
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)),"\
|
"(((1.11,1.12,1.13),(1.21,1.22,1.23),(1.31,1.32,1.33),(1.41,1.42,1.43)),"\
|
||||||
@@ -2247,6 +2247,69 @@ TEST(transpose_input_to_OpT_Ranspose2){
|
|||||||
free_tensor_TYPE_FLOAT(transpose);
|
free_tensor_TYPE_FLOAT(transpose);
|
||||||
free_tensor_TYPE_FLOAT(transpose_Opt0);
|
free_tensor_TYPE_FLOAT(transpose_Opt0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
TEST(transpose_input_to_OpT1_Ranspose){
|
||||||
|
littleEndian=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_Opt1_tensor_TYPE_FLOAT(t);
|
||||||
|
print_tensor_msg_TYPE_FLOAT(transpose_Opt0," transpose_Opt0 from input" );
|
||||||
|
|
||||||
|
EXPECT_ARRAY_EQ_TYPE_FLOAT(transpose->x,transpose->dim->size ,transpose_Opt0->x,transpose_Opt0->dim->size);
|
||||||
|
|
||||||
|
free_tensor_TYPE_FLOAT(t);
|
||||||
|
free_tensor_TYPE_FLOAT(transpose);
|
||||||
|
free_tensor_TYPE_FLOAT(transpose_Opt0);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(transpose_input_to_OpT1_Ranspose2){
|
||||||
|
littleEndian=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_Opt1_tensor_TYPE_FLOAT(t);
|
||||||
|
print_tensor_msg_TYPE_FLOAT(transpose_Opt0," transpose_Opt0 from input" );
|
||||||
|
|
||||||
|
EXPECT_ARRAY_EQ_TYPE_FLOAT(transpose->x,transpose->dim->size ,transpose_Opt0->x,transpose_Opt0->dim->size);
|
||||||
|
|
||||||
|
free_tensor_TYPE_FLOAT(t);
|
||||||
|
free_tensor_TYPE_FLOAT(transpose);
|
||||||
|
free_tensor_TYPE_FLOAT(transpose_Opt0);
|
||||||
|
}
|
||||||
TEST(shapeute_parseInput_unknownpart_to_tensor){
|
TEST(shapeute_parseInput_unknownpart_to_tensor){
|
||||||
littleEndian=true;
|
littleEndian=true;
|
||||||
char *input="[*,3]"\
|
char *input="[*,3]"\
|
||||||
|
|||||||
+40
-5
@@ -876,6 +876,8 @@ void append_array_chainlist_##type(array_chainlist_##type **list_a, type x);\
|
|||||||
tensor_##type * create_tensor_from_list_array_##type( array_chainlist_##type *l_a, dimension *part_dim);\
|
tensor_##type * create_tensor_from_list_array_##type( array_chainlist_##type *l_a, dimension *part_dim);\
|
||||||
void free_array_chainlist_##type(array_chainlist_##type *l_a);\
|
void free_array_chainlist_##type(array_chainlist_##type *l_a);\
|
||||||
tensor_##type * transpose_notOpt_tensor_##type(tensor_##type *org);\
|
tensor_##type * transpose_notOpt_tensor_##type(tensor_##type *org);\
|
||||||
|
tensor_##type * transpose_Opt0_tensor_##type(tensor_##type *org);\
|
||||||
|
tensor_##type * transpose_Opt1_tensor_##type(tensor_##type *org);\
|
||||||
tensor_##type * permute_notOpt_tensor_##type(tensor_##type *org, dimension *dshape);\
|
tensor_##type * permute_notOpt_tensor_##type(tensor_##type *org, dimension *dshape);\
|
||||||
void update_1tensor_func_##type(tensor_##type *M0, \
|
void update_1tensor_func_##type(tensor_##type *M0, \
|
||||||
type (*func)(type), size_t nbthread);\
|
type (*func)(type), size_t nbthread);\
|
||||||
@@ -2882,12 +2884,14 @@ tensor_##type * transpose_notOpt_tensor_##type(tensor_##type *org){\
|
|||||||
return tens_tr;\
|
return tens_tr;\
|
||||||
}\
|
}\
|
||||||
\
|
\
|
||||||
|
\
|
||||||
tensor_##type * transpose_Opt0_tensor_##type(tensor_##type *org){\
|
tensor_##type * transpose_Opt0_tensor_##type(tensor_##type *org){\
|
||||||
size_t dimrnk = org->dim->rank;\
|
dimension *dim= org->dim;\
|
||||||
|
size_t dimrnk = dim->rank;\
|
||||||
dimension *dim_tr=create_dim(dimrnk);\
|
dimension *dim_tr=create_dim(dimrnk);\
|
||||||
for(size_t i=0; i<dimrnk; ++i) dim_tr->shape[i]=(org->dim)->shape[(dimrnk-1)-i];\
|
for(size_t i=0; i<dimrnk; ++i) dim_tr->shape[i]=dim->shape[(dimrnk-1)-i];\
|
||||||
updateDim(dim_tr);\
|
/*updateDim(dim_tr);\
|
||||||
printDebug_dimension(dim_tr,"dim_trOpt");\
|
printDebug_dimension(dim_tr,"dim_trOpt");*/\
|
||||||
tensor_##type *tens_tr = create_tensor_##type(dim_tr);\
|
tensor_##type *tens_tr = create_tensor_##type(dim_tr);\
|
||||||
/*tensor_##type *tens_tr = CREATE_TENSOR_##type(dim_tr);*/\
|
/*tensor_##type *tens_tr = CREATE_TENSOR_##type(dim_tr);*/\
|
||||||
long int cur_tr=0, add_tr=0, minus_tr=0;\
|
long int cur_tr=0, add_tr=0, minus_tr=0;\
|
||||||
@@ -2900,7 +2904,8 @@ tensor_##type * transpose_Opt0_tensor_##type(tensor_##type *org){\
|
|||||||
if(cur_tr + add_tr < dim_tr->basis[l]){\
|
if(cur_tr + add_tr < dim_tr->basis[l]){\
|
||||||
cur_tr += add_tr;\
|
cur_tr += add_tr;\
|
||||||
/*tens_tr->x[cur_tr] = org->x[i]*/;\
|
/*tens_tr->x[cur_tr] = org->x[i]*/;\
|
||||||
tens_tr->x[i] = org->x[cur_tr];\
|
/*tens_tr->x[i] = org->x[cur_tr];\
|
||||||
|
*/tens_tr->x[cur_tr] = org->x[i];\
|
||||||
break;\
|
break;\
|
||||||
}\
|
}\
|
||||||
minus_tr -= (dim_tr->basis[l]-dim_tr->basis[l+1]);\
|
minus_tr -= (dim_tr->basis[l]-dim_tr->basis[l+1]);\
|
||||||
@@ -2910,6 +2915,36 @@ tensor_##type * transpose_Opt0_tensor_##type(tensor_##type *org){\
|
|||||||
return tens_tr;\
|
return tens_tr;\
|
||||||
}\
|
}\
|
||||||
\
|
\
|
||||||
|
tensor_##type * transpose_Opt1_tensor_##type(tensor_##type *org){\
|
||||||
|
dimension *dim= org->dim;\
|
||||||
|
/*updateDim(dim);*/\
|
||||||
|
size_t dimrnk = dim->rank;\
|
||||||
|
dimension *dim_tr=create_dim(dimrnk);\
|
||||||
|
for(size_t i=0; i<dimrnk; ++i) dim_tr->shape[i]=dim->shape[(dimrnk-1)-i];\
|
||||||
|
/*updateDim(dim_tr);\
|
||||||
|
printDebug_dimension(dim_tr,"dim_trOpt");*/\
|
||||||
|
tensor_##type *tens_tr = create_tensor_##type(dim_tr);\
|
||||||
|
/*tensor_##type *tens_tr = CREATE_TENSOR_##type(dim_tr);*/\
|
||||||
|
long int cur_tr=0, add_tr=0, minus_tr=0;\
|
||||||
|
tens_tr->x[cur_tr] = org->x[cur_tr];\
|
||||||
|
for(size_t i=1; i<dim->size; ++i){\
|
||||||
|
minus_tr =0;\
|
||||||
|
/*printf("DEBUG: cur_tr=%ld\n",cur_tr);*/\
|
||||||
|
for(size_t l=0; l<dimrnk; ++l){ \
|
||||||
|
add_tr = minus_tr + dim->basis[l+1];\
|
||||||
|
if(cur_tr + add_tr < dim->basis[l]){\
|
||||||
|
cur_tr += add_tr;\
|
||||||
|
/*tens_tr->x[cur_tr] = org->x[i]*/;\
|
||||||
|
tens_tr->x[i] = org->x[cur_tr];\
|
||||||
|
break;\
|
||||||
|
}\
|
||||||
|
minus_tr -= (dim->basis[l]-dim->basis[l+1]);\
|
||||||
|
}\
|
||||||
|
/*printf("DEBUG: after cur_tr=%ld\n",cur_tr);*/\
|
||||||
|
}\
|
||||||
|
return tens_tr;\
|
||||||
|
}\
|
||||||
|
\
|
||||||
tensor_##type * permute_notOpt_tensor_##type(tensor_##type *org, dimension *dshape){\
|
tensor_##type * permute_notOpt_tensor_##type(tensor_##type *org, dimension *dshape){\
|
||||||
size_t dimrnk = (org->dim)->rank; \
|
size_t dimrnk = (org->dim)->rank; \
|
||||||
dimension *dim_tr=create_dim(dimrnk);\
|
dimension *dim_tr=create_dim(dimrnk);\
|
||||||
|
|||||||
Reference in New Issue
Block a user