[GRASS5] error encountered in r.terraflow
Shaun Walbridge
walbridge at nceas.ucsb.edu
Fri Apr 28 11:01:23 EDT 2006
Do you have an large amount of disk space available on your /var
partition? The error:
file=/var/tmp/STREAM_UpisEN:cannot read!: Input/output error
indicates you'd run out of space. As mentioned in the help for
r.terraflow, it requires 80N where N is rows x columns of space to
compute the output. This can be upwards of 40G for large rasters.
cheers,
Shaun
abhay menon wrote:
> hello all,
>
> am still facing this problem.... even after updating the patch file..
>
> r.terraflow December 2003
> region size is 13593 x 15215
> cell 960MBdata header compatible with region header
> elevation stored as FLOAT (4B) WARNING: raster 960MBdata is of type
> CELL_TYPE --you should use r.terraflow.short
> STREAM temporary files in /var/tmp (THESE INTERMEDIATE STREAMS WILL
> NOT BE DELETED IN CASE OF ABNORMAL TERMINATION OF THE PROGRAM. TO SAVE
> SPACE PLEASE DELETE THESE FILES MANUALLY!)
> SFD (D8) flow direction
> D8CUT=999999986991104.000000
> memory size: 400.00M (419430400) bytes
> Memory manager registering memory in MM_WARN_ON_MEMORY_EXCEEDED mode.
> reading data from 960MBdata to stream /var/tmp/STREAM_kohqGU:
> total elements=206817495, nodata elements=50042031
> largest temporary files:
> FILL: 10.79G (11581779720) [206817495 elements, 56B each]
> FLOW: 11.68G (12542037120) [156775464 elements, 80B each]
> Will need at least 23.36G (25084074240) space available in /var/tmp
> ------------------------------
> COMPUTING FLOW DIRECTIONS
> classifying nodata (inner & boundary)
> finding nodata
> relabeling nodata
> MM warning: limit=419430400B. allocating 209608296B. limit exceeded
> by 23602B.
> MM warning: limit=419430400B. allocating 209608296B. limit exceeded
> by 23633B.
> merging relabeled grid
> MM warning: limit=419430400B. allocating 209567256B. limit exceeded
> by 23558B.
> MM warning: limit=419430400B. allocating 209567256B. limit exceeded
> by 23589B.
> ----------
> assigning preliminary directions
> ----------
> finding flat areas (plateaus and depressions)
> plateau.cc:starting memscan
> plateau.cc:memscan done
> removing duplicate plateaus
> MM warning: limit=419430400B. allocating 209567260B. limit exceeded
> by 23574B.
> :
> MM warning: limit=419430400B. allocating 209567260B. limit exceeded
> by 23636B.
> relabeling plateaus
> MM warning: limit=419430400B. allocating 209567260B. limit exceeded
> by 23570B.
> MM warning: limit=419430400B. allocating 209567260B. limit exceeded
> by 23601B.
> generating plateau statistics
> MM warning: limit=419430400B. allocating 209403100B. limit exceeded
> by 23570B.
> MM warning: limit=419430400B. allocating 209403100B. limit exceeded
> by 23601B.
> ----------
> assigning directions on plateaus
> MM warning: limit=419430400B. allocating 209649312B. limit exceeded
> by 19306B.
> :
> MM warning: limit=419430400B. allocating 209649312B. limit exceeded
> by 19368B.
> --------------
> generating watersheds and watershed graph
> creating windows
> warning: using slower scan
> generateWatersheds
> MM warning: limit=419430400B. allocating 209628776B. limit exceeded
> by 10438B.
> :
> :
> :
> :
> :
> MM warning: limit=419430400B. allocating 209628776B. limit exceeded
> by 11182B.
> file=/var/tmp/STREAM_UpisEN:cannot read!: Input/output error
> r.terraflow: ./IOStream/include/ami_sort_impl.h:109: void
> makeRun_Block(AMI_STREAM<T>*, T*, unsigned int, Compare*) [with T =
> waterWindowType, Compare = priorityCmpWaterWindowType]: Assertion `err
> == AMI_ERROR_NO_ERROR' failed.
>
> --
> Best Regrads
>
> Abhay Menon
>
> On 4/28/06, *Shaun Walbridge* <walbridge at nceas.ucsb.edu
> <mailto:walbridge at nceas.ucsb.edu> > wrote:
>
> Apologies, I forgot to re-attach the patch to this list. The only
> changes I've found necessary are those couple spots in ami_stream.h.
> We've successfully run Terraflow on 4GB+ datasets after the swap to
> fseeko/ftello.
>
> Cheers,
> Shaun
>
> --- ami_stream.h 2004-11-09 05:29:58.000000000 -0800
> +++ ami_stream.h.edit 2006-04-27 10:44: 48.000000000 -0700
> @@ -394,8 +394,8 @@
> seek_offset = offset * sizeof(T);
> }
>
> - if (fseek(fp, seek_offset, SEEK_SET) == -1) {
> - cerr << "AMI_STREAM::seek offset=" << seek_offset <<
> "failed.\n";
> + if (fseeko(fp, seek_offset, SEEK_SET) == -1) {
> + cerr << "AMI_STREAM::seek offset=" << seek_offset << "
> failed.\n";
> assert(0);
> exit(1);
> }
> @@ -463,7 +463,7 @@
>
> assert(fp);
> //if we go past substream range
> - if ((logical_eos >= 0) && ftell(fp) >= sizeof(T) * logical_eos) {
> + if ((logical_eos >= 0) && ftello(fp) >= sizeof(T) * logical_eos) {
> return AMI_ERROR_END_OF_STREAM;
>
> } else {
> @@ -489,7 +489,7 @@
> assert(fp);
>
> //if we go past substream range
> - if ((logical_eos >= 0) && ftell(fp) >= sizeof(T) * logical_eos) {
> + if ((logical_eos >= 0) && ftello(fp) >= sizeof(T) * logical_eos) {
> return AMI_ERROR_END_OF_STREAM;
>
> } else {
> @@ -512,7 +512,7 @@
>
> assert(fp);
> //if we go past substream range
> - if ((logical_eos >= 0) && ftell(fp) >= sizeof(T) * logical_eos) {
> + if ((logical_eos >= 0) && ftello(fp) >= sizeof(T) * logical_eos) {
> return AMI_ERROR_END_OF_STREAM;
>
> } else {
> @@ -532,7 +532,7 @@
>
> assert(fp);
> //if we go past substream range
> - if ((logical_eos >= 0) && ftell(fp) >= sizeof(T) * logical_eos) {
> + if ((logical_eos >= 0) && ftello(fp) >= sizeof(T) * logical_eos) {
> return AMI_ERROR_END_OF_STREAM;
>
> } else {
>
More information about the grass-dev
mailing list