add functions calculate parallel updates neurons, and debug some leak functions

This commit is contained in:
2024-02-28 09:57:21 +01:00
parent 2fc2fe477f
commit 924ff3a7dd
11 changed files with 707 additions and 127 deletions
+24
View File
@@ -28,6 +28,11 @@ dimension *
create_dim(size_t sz){
return CREATE_PERMUTATION_TYPE_SIZE_T(sz);
}
dimension* clone_dim(dimension *dim){
return init_copy_dim(dim->perm,dim->size);
}
dimension *
create_reverse_dim(size_t sz){
dimension *dim = CREATE_PERMUTATION_TYPE_SIZE_T(sz);
@@ -40,6 +45,15 @@ void free_dimension(dimension *d){
if(d) free_permut_TYPE_SIZE_T(d);
}
bool is_equal_dim(dimension *d0, dimension *d1){
if(d0->size != d1->size) return false;
if(d0->rank != d1->rank) return false;
for(size_t i=0;i<d0->size; ++i)
if(d0->perm[i] != d1->perm[i]) return false;
return true;
}
dimension* sub_copy_minus_dim_head(dimension *root, size_t minusSubdim){
if(minusSubdim < (root->size)){
dimension *d = INIT_COPY_PERMUTATION_TYPE_SIZE_T(root->perm, (root->size)-minusSubdim);
@@ -160,6 +174,16 @@ void increment_dim_var(dimension *d){
}
}
void decrement_dim_var(dimension *d){
if(endian){
(d->perm[0])--;
}
else{
(d->perm[d->size - 1])--;
}
}
void add_dimension(dimension **d, dimension *d0, dimension *d1) {
(*d) = create_dim(d0->size + d1->size);
for (size_t i = 0; i < d0->size; i++) (*d)->perm[i] = d0->perm[i];
@@ -20,8 +20,11 @@ dimension * create_dim(size_t size);
dimension * create_reverse_dim(size_t size);
dimension* init_dim(size_t *t, size_t sz);
dimension* init_copy_dim(size_t *t, size_t sz);
dimension* clone_dim(dimension *dim);
void free_dimension(dimension *d);
bool is_equal_dim(dimension *d0, dimension *d1);
dimension* sub_minus_dim_head(dimension *t, size_t minusSubdim);
dimension* sub_minus_dim_tail(dimension *t, size_t minusSubdim);
dimension* sub_dim_head(dimension *t, size_t subdim);
@@ -49,6 +52,7 @@ size_t* CoordFromLin(size_t line, dimension *dim);
void vCoordFromLin(size_t *ret, size_t line, dimension *dim );
void increment_dim_var(dimension *d);
void decrement_dim_var(dimension *d);
struct list_perm_in_dim{
size_t index;