Skip to content

⚡️ Make memory estimates data-dependent #1480

@shnizzedy

Description

@shnizzedy

Related problem

The 'insufficient resources' error at the beginning is an attempt to reduce the instances of out-of-memory crashes during runs, to be able to adjust up-front, but we need to do some tuning; right now, the memory estimates are hard-coded and data-independent, based on common data sizes, but obviously the estimates will be too big for small runs and too small for big runs until we make those estimates data-dependent.

These nodes have estimates > 4 GB:

node estimate (GB)
ALFF bandpass filter 13
compcor DetrendPC 12.5
apply ANTs warp 10
cosine filter 8
FLIRT resample 8
functional to standard composite transform 8
mask to EPI 8
reho_map 6
mean filter 5
VMHC apply_transform 5
spatial regression 4.5

Originally posted by @shnizzedy in #1479 (comment)

Related #1166, #1301, #1404, #1453

Proposed feature

Starting with the memory-hungriest nodes (those in the table above),

  1. determine how much memory per data unit (e.g. memory per TR at resolution)
  2. make that data unit available to the functions calling those nodes
  3. apply that memory estimate when calling the node, in place of the defaults above

Additional context

Some of these estimates could potentially get complicated as the pipeline progresses through transforms and resamplings.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions