I'm not too sure about the SGI machine you are using. On 32 bit machines
there is a limit of 4Gbytes of memory that can be adressed at any time
(and 2Gbytes on slightly older operating systems). This is one of the
limitations of the UNIX operating system, since the largest integer that
can be easily represented is 2^32 (ie. 4,294,967,296). The way that SPM
works (in SPM96) is that all the image files are memory mapped
and treated like virtual memory. With many subjects, the amount of this
virtual memory is likely to far exceed 4Gbytes.
However, your dataset doesn't seem that large. There may be some limit set
on the amount of virtual memory that you can use for any process. There is
a builtin command in the C-shell (at least under Solaris) called "limit".
Typing "limit" by itself shows how the limits have been set for a particular
C-shell, and any child processes of that C-shell. You should be able to use
the "unlimit" command on the variable that refers to the amount of virtual
memory that can be used by any process. Under Solaris, the variable is
"memorysize". If you can unlimit the memorysize, you should bve able to
use up to 4Gbytes of memory on a 32 bit machine, or 17179869184 Gbytes
with a 64 bit machine using an operating system that supports 64 bit addressing.
Note that these values could be reduced by a half, depending how the operating
system represents its memory addresses.
Alternatively, some previous SPM job may have bombed out. Any files that were
memory mapped will remain so, since SPM would not have had the chance to
un-map them. With large data sets, it is usually a good idea to restart
Matlab if it crashes.
I hope this helps,
-John
> using SPM96 for processing of fMRI data I seem to run into a problem of
> the maximum number of data sets allowed for one statistical analysis.
> After all inputs (all datasets, epochs and contrasts) an error message
> occurs:
>
> ??? Cant map image file (/res/procidb/FUN/1107/14891/003/snrW1_016.img).
>
> Error in ==> /usr/local/spm96/spm_map_vol.mexsg
> Error in ==> /usr/local/spm96/spm_map.m
> On line 33 ==> V = spm_map_vol(Filename,ID);
>
> Error in ==> /usr/local/spm96/spm_fmri_spm_ui.m
> On line 424 ==> for i = 1:q; V(:,i) = spm_map(P(i,:)); end
>
> ??? Error while evaluating callback string.
>
> This happens reproducibly whenever more than 482 datasets are being used
> for the analysis (multisubject analysis). Is this an intended limitation
> or due to the configuration of the workstation used (SGI O2 (R10000) with
> 256 MB memory and 180 MB swap space, single data set size 1020680 byte)? I
> have not been able to locate the source of this limitation in the code.
>
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|