什么是并行计算?
并行计算允许您同时执行多项计算。大问题通常可以分解为多个小问题,然后同时解决。
考虑并行计算的主要原因是
通过分配任务并同时执行来节省时间
通过分发数据解决大数据问题
充分利用您的台式计算机资源并扩展到集群和云计算
使用 Parallel Computing Toolbox™,您可以
使用交互式并行计算工具(例如
parfor和parfeval)加速您的代码使用交互式大数据处理工具(例如
distributed、tall、datastore和mapreduce)扩展计算能力使用
gpuArray来加速计算机 GPU 上的计算使用
batch将计算转移到计算机集群或云计算设施
以下是一些有用的并行计算概念:
节点:独立的计算机,包含一个或多个 CPU/GPU。节点联网形成集群或超级计算机
线程:可由调度器独立管理的最小指令集。在 GPU、多处理器或多核系统上,可以同时执行多个线程(多线程)
批处理:卸载功能脚本的执行,并在后台运行
可扩展性:通过添加更多资源来提高并行速度
MATLAB® 和 Parallel Computing Toolbox 提供什么工具?
MATLAB 工作单元:MATLAB 在没有图形桌面的情况下在后台运行的计算引擎。您使用 Parallel Computing Toolbox 中的函数自动划分任务并将其分配给这些工作单元以并行执行计算。您可以运行本地工作单元来充分利用多核台式计算机中的所有核心。您还可以使用 MATLAB Parallel Server™ 进行扩展,以在计算机集群上运行您的工作单元。与您交互的 MATLAB 会话称为 MATLAB 客户端。客户端使用并行的语言函数来指导工作单元。
并行池:使用
parpool或支持自动并行的函数创建的 MATLAB 工作单元并行池。默认情况下,并行语言函数在必要时会自动为您创建并行池。要了解更多信息,请参阅 在并行池上运行代码。对于默认的“进程”配置文件,默认的工作单元数为每个物理 CPU 核心一个,使用单个计算线程。这是因为,尽管每个物理核心可以有多个虚拟核心,但虚拟核心共享一些资源,通常包括共享浮点单元 (FPU)。大多数 MATLAB 计算都使用此单位,因为它们是双精度浮点数。每个物理核心限制一个工作单元可确保每个工作单元都可以独占访问浮点单元,这通常可以优化计算代码的性能。如果您的代码不是计算密集型的,例如,它是输入/输出(I/O)密集型的,那么请考虑每个物理核心最多使用两个工作单元。在太少的资源上运行太多的工作单元可能会影响计算机的性能和稳定性。
加速:通过在多个 MATLAB 工作单元或 GPU 上运行来加速您的代码,例如使用
parfor、parfeval或gpuArray。扩展您的数据:使用 tall 数组和分布式数组,将您的大数据划分到多个 MATLAB 工作单元上。要了解更多信息,请参阅 大数据处理。
异步处理:使用
parfeval在后台执行计算任务,而无需等待其完成。扩展到集群和云:如果您的计算任务对于本地计算机来说太大或太慢,您可以使用 MATLAB Parallel Server 将计算卸载到现场集群或云中。有关详细信息,请参阅集群和云。