跳转到内容

SPM/更快 SPM

来自维基教科书,开放的书籍,为开放的世界
< SPM

SPM 优化

[编辑 | 编辑源代码]

调整 SPM 设置

[编辑 | 编辑源代码]

一个名为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;

编译 MEX 文件

[编辑 | 编辑源代码]

与 SPM 捆绑提供的已编译 MEX 文件的构建方式使其与大多数平台和 MATLAB 版本兼容,但您可能会从针对您的确切平台/MATLAB 版本编译它们中受益 - 一些 C 编译器也可能会生成优化程度更高的二进制文件(例如 英特尔编译器)。有关如何重新编译 SPM MEX 文件的更多详细信息,请参阅安装页面。

MATLAB 优化

[编辑 | 编辑源代码]

一般声明

[编辑 | 编辑源代码]

最大限度地提高 MATLAB 性能.

请注意,不建议在启动 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

[编辑 | 编辑源代码]

为您的系统安装最新的基本线性代数子程序 (BLAS)/线性代数包 (LAPACK),因为 MATLAB 在其版本中没有提供最新版本。

主要选择包括

  • ATLAS - 自动调整线性代数软件(开源)
  • MKL - 英特尔数学核心库
  • ACML - AMD 核心数学库
  • GotoBLAS - GotoBLAS(德克萨斯州高级计算中心)

有关如何使用 ATLAS/MKL 升级您的 MATLAB 库的更多信息,请参阅

并行计算

[编辑 | 编辑源代码]

SPM 工具箱

[编辑 | 编辑源代码]

有关 SPM2 的更多信息,请参阅 pSPM

通用工具

[编辑 | 编辑源代码]

目前正在进行工作以提供 SPM 的官方并行/分布式版本。

另请参阅 Sun Grid Engine 项目 (SGE)

使用图形处理单元 (GPU)

[编辑 | 编辑源代码]

MATLAB 可以利用 GPU(与 CPU 相反,图形卡的处理器)来执行某些操作,从而显着提高速度。提供了一些工具箱

另请参阅

华夏公益教科书