area_mask is a boolean mask, so i reduced the datatype to be 1 byte (unfortunately we cannot go lower than 1 byte in both python/numpy and fortran). A model that previously took more than 18GB now takes around 9GB. This is corresponding to the data reduction of 2 bytes integers to 1 byte.
The mem usage can be further reduced by not creating a padded copy of the DEM in Fortran in the pad_area_mask routine. Finally, going through the DEM in tiles will of course be most memory safe of all solutions :)
area_mask is a boolean mask, so i reduced the datatype to be 1 byte (unfortunately we cannot go lower than 1 byte in both python/numpy and fortran). A model that previously took more than 18GB now takes around 9GB. This is corresponding to the data reduction of 2 bytes integers to 1 byte.
The mem usage can be further reduced by not creating a padded copy of the DEM in Fortran in the
pad_area_mask
routine. Finally, going through the DEM in tiles will of course be most memory safe of all solutions :)