garbage collect array after generating

milestone_5_without_improvements
Oli 3 years ago
parent 96e1dcd704
commit e52630f86d

@ -15,13 +15,13 @@ void clean_real(struct realization_mod* realin, int n[3], struct grid_mod grid,
/*is the output realization already allocated?*/ /*is the output realization already allocated?*/
/*if not, memory allocation*/ /*if not, memory allocation*/
/*if (realout->vector == NULL || realout->n != realin->n) { if (realout->vector == NULL || realout->n != realin->n) {
realout->vector = (double*)malloc(realin->n * sizeof(double)); realout->vector = (double*)malloc(realin->n * sizeof(double));
if (realout->vector == NULL) { if (realout->vector == NULL) {
printf("Clean_real.c: No memory available\n"); printf("Clean_real.c: No memory available\n");
exit; exit;
} }
}*/ }
realout->n = realin->n; realout->n = realin->n;
realout->code = 1; realout->code = 1;

@ -28,12 +28,9 @@ static PyObject* genFunc(PyObject* self, PyObject* args)
struct vario_mod variogram; struct vario_mod variogram;
long seed; long seed;
struct statistic_mod stat; struct statistic_mod stat;
PyArrayObject* out_array; PyObject* out_array;
npy_intp out_dims[NPY_MAXDIMS]; npy_intp out_dims[NPY_MAXDIMS];
out_array = (PyArrayObject *) PyArray_FromDims(NDIMENSIONS,out_dims,NPY_DOUBLE);
Y.vector = (double *) out_array->data;
if (!Py_getvalues(args, &seed, &grid, &variogram, &stat)) if (!Py_getvalues(args, &seed, &grid, &variogram, &stat))
return NULL; return NULL;
Py_kgeneration(seed, grid, stat, variogram, &Z, &Y, n); Py_kgeneration(seed, grid, stat, variogram, &Z, &Y, n);
@ -42,12 +39,11 @@ static PyObject* genFunc(PyObject* self, PyObject* args)
out_dims[1] = grid.NY; out_dims[1] = grid.NY;
out_dims[2] = grid.NX; out_dims[2] = grid.NX;
out_array = (PyArrayObject*)PyArray_SimpleNewFromData(NDIMENSIONS, out_dims, NPY_DOUBLE, Y.vector); out_array = PyArray_SimpleNewFromData(NDIMENSIONS, out_dims, NPY_DOUBLE, Y.vector);
if (out_array == NULL) if (out_array == NULL)
return NULL; return NULL;
// PyArray_ENABLEFLAGS(out_array, NPY_ARRAY_OWNDATA);
// out_array->flags |= NPY_ARRAY_OWNDATA; PyArray_ENABLEFLAGS(out_array, NPY_ARRAY_OWNDATA);
free(stat.mean); free(stat.mean);
free(stat.variance); free(stat.variance);

@ -1,7 +1,8 @@
from FFTMA import gen from FFTMA import gen
import numpy as np import numpy as np
import gc
N=128 N=512
nx, ny, nz = N,N,N nx, ny, nz = N,N,N
dx, dy, dz = 1.0, 1.0, 1.0 dx, dy, dz = 1.0, 1.0, 1.0
@ -24,8 +25,12 @@ variograms = [v1]
mean=15.3245987 mean=15.3245987
variance=3.5682389 variance=3.5682389
typ=1 typ=3
for i in range(2):
k=gen(nx, ny, nz, dx, dy, dz, seed, variograms, mean, variance, typ) k=gen(nx, ny, nz, dx, dy, dz, seed, variograms, mean, variance, typ)
np.save("out.npy",k) np.save(f"out_{i}.npy",k)
del k
gc.collect()
Loading…
Cancel
Save