[debug] fix transpose Opt func and alternative
This commit is contained in:
+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);\
|
||||
void free_array_chainlist_##type(array_chainlist_##type *l_a);\
|
||||
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);\
|
||||
void update_1tensor_func_##type(tensor_##type *M0, \
|
||||
type (*func)(type), size_t nbthread);\
|
||||
@@ -2882,12 +2884,14 @@ tensor_##type * transpose_notOpt_tensor_##type(tensor_##type *org){\
|
||||
return tens_tr;\
|
||||
}\
|
||||
\
|
||||
\
|
||||
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);\
|
||||
for(size_t i=0; i<dimrnk; ++i) dim_tr->shape[i]=(org->dim)->shape[(dimrnk-1)-i];\
|
||||
updateDim(dim_tr);\
|
||||
printDebug_dimension(dim_tr,"dim_trOpt");\
|
||||
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;\
|
||||
@@ -2900,7 +2904,8 @@ tensor_##type * transpose_Opt0_tensor_##type(tensor_##type *org){\
|
||||
if(cur_tr + add_tr < dim_tr->basis[l]){\
|
||||
cur_tr += add_tr;\
|
||||
/*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;\
|
||||
}\
|
||||
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;\
|
||||
}\
|
||||
\
|
||||
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){\
|
||||
size_t dimrnk = (org->dim)->rank; \
|
||||
dimension *dim_tr=create_dim(dimrnk);\
|
||||
|
||||
Reference in New Issue
Block a user