SPM/更快 SPM
SPM 维基教科书已迁移至 https://www.fil.ion.ucl.ac.uk/spm/docs/ |
一个名为maxmem的默认变量指示在 GLM 估计过程中同一时间可以使用多少内存。如果您的计算机拥有大量 RAM,您可以在 spm_defaults.m 中增加该内存设置
defaults.stats.maxmem = 2^30;
- 2^32 = 4GB
- 2^31 = 2GB
- 2^30 = 1GB
- 2^29 = 512MB
在 SPM12 中,还有一个名为resmem的默认变量,它控制在 GLM 估计过程中临时文件是存储在磁盘上 (false) 还是保存在内存中 (true)。如果您有足够的可用 RAM,不将文件写入磁盘将加快估计速度。
defaults.stats.resmem = true;
与 SPM 捆绑提供的已编译 MEX 文件的构建方式使其与大多数平台和 MATLAB 版本兼容,但您可能会从针对您的确切平台/MATLAB 版本编译它们中受益 - 一些 C 编译器也可能会生成优化程度更高的二进制文件(例如 英特尔编译器)。有关如何重新编译 SPM MEX 文件的更多详细信息,请参阅安装页面。
请注意,不建议在启动 MATLAB 时禁用 JAVA 虚拟机 (matlab -nojvm)。如果您不想使用 MATLAB 桌面,您可以首选使用以下方法启动 MATLAB:
matlab -nodesktop
在 'nodesktop' 模式下使用 Matlab 时,以以下方式初始化 SPM 以防止图形窗口打开
spm('defaults', 'fmri')
spm_jobman('initcfg')
spm_get_defaults('cmdline',true)
(将 'fmri' 替换为 'pet' 或 'eeg',具体取决于情况。)
最近的 MATLAB 支持隐式多处理,允许在单台机器上运行多个线程,而无需对 MATLAB 代码本身进行任何更改:这需要一个多 CPU(多处理器或多核)系统。不过,SPM 的计算时间增益并不显著。
参见
如果您并行运行多个 MATLAB 会话以手动分配您的 SPM 处理,建议将计算线程数设置为 1。
为您的系统安装最新的基本线性代数子程序 (BLAS)/线性代数包 (LAPACK),因为 MATLAB 在其版本中没有提供最新版本。
主要选择包括
有关如何使用 ATLAS/MKL 升级您的 MATLAB 库的更多信息,请参阅
- http://software.intel.com/en-us/articles/using-intel-mkl-with-matlab/
- http://software.intel.com/en-us/articles/intel-math-kernel-library-intel-mkl-for-windows-using-intel-mkl-in-matlab-executable-mex-files/
- http://imaging.mrc-cbu.cam.ac.uk/imaging/SpmWithPentium4
有关 SPM2 的更多信息,请参阅 pSPM。
目前正在进行工作以提供 SPM 的官方并行/分布式版本。
另请参阅 Sun Grid Engine 项目 (SGE)
MATLAB 可以利用 GPU(与 CPU 相反,图形卡的处理器)来执行某些操作,从而显着提高速度。提供了一些工具箱
- 并行计算工具箱 使用 MATLAB 进行 GPU 计算
- MATLAB GPU 计算
- 使用支持 CUDA 的 GPU 加速 MATLAB
- NVIDIA GPU 和 MATLAB
- NVIDIA NGC
- CUDA SPM GPU 加速的 SPM 图像配准
- 深度学习框架
另请参阅
- https://www.frontiersin.org/articles/10.3389/fninf.2014.00024/full
- https://www.sciencedirect.com/science/article/pii/S0169260711001957
- https://www.sciencedirect.com/science/article/pii/S1361841513000820
- https://link.springer.com/article/10.3758%2Fs13415-013-0165-7
- https://doi.org/10.1109/MSP.2009.935387