Hi Nicola,

The requirements of randomise_parallel on each processor are indeed the same as for running a single instance of randomise in a single computer, but the memory is shared for the various processes running in a single CPU. Say a machine has 1 CPU with 8 cores, thus allowing 8 simultaneous instances of randomise (all of which initiated by randomise_parallel). If each instance needs 50GB, and the machine has 128GB, there will be not enough memory because to run all the 8 instances, the machine would have to have at least 400 GB.

You may want to see if you could configure your cluster to take just one (or some number you calculate) instance of randomise per machine. Usually the load is distributed evenly across machines but there may be some configurable setting in your cluster environment.

All the best,

Anderson


On 9 October 2017 at 09:06, Nicola Toschi <[log in to unmask]> wrote:
Thank you Stefano,

my problem is that I have lots of RAM across several nodes (150-196GB RAM per node) so technically every node can handle the problem already (twice over, approximately). So I want to make sure I partition the problem optimally within randomise_parallel.

Anyone done this before?

Thanks!

Nicola


On 10/08/2017 08:57 PM, Stefano Orsolini wrote:
Hi Nicola
I think that manually handling the number of fragments won't bring you to a sensible solution.

I would suggest a very practical approach by creating a swap space as large as you need memory.
In my personal experience I've partitioned a 250GB SSD as swap to make it through a similar situation.

If you can't dedicate a large partition you can create a swap file within the disk you have available (it would be awkward to have a 250GB file but it will work).

See you!
Stefano Orsolini


2017-10-08 15:59 GMT+02:00 Nicola Toschi <[log in to unmask]>:
Hi List,

I am trying to run a randomise analysis on a dataset of about 1500 volumes in MNI space (with brain mask). On a single machine, i need about 70 GB RAM for randomise to be able to load the data which drops to about 50 GB for carrying out permutations.

Given that, if I understand correctly, every instance of randomise launched by randomise_parallel will have the same memory requirements (i.e. it will have to load the whole dataset), I can't just throw this on a cluster which has, say 150 GB RAM per node with default settings.

Ideally I would like to set the number of fragments to 2 or 3 (better than 1!) and have everything follow from that (time, number of permutations).

Is this easily controllable in randomise_parallel (didn't look like it was when perusing the script)?

Thanks a lot in advance!

Nicola