【发布时间】:2011-12-22 09:38:11
【问题描述】:
关于 MATLAB 如何利用并行硬件,我有几个密切相关的问题。它们很短,所以我认为最好将它们放在同一个帖子中:
【问题讨论】:
-
致投票结束问题的人。您介意详细说明我如何改进这个问题吗?为什么它被标记为离题?
标签: matlab parallel-processing mpi
关于 MATLAB 如何利用并行硬件,我有几个密切相关的问题。它们很短,所以我认为最好将它们放在同一个帖子中:
【问题讨论】:
标签: matlab parallel-processing mpi
MATLAB 在不使用 并行计算工具箱?
是的。 Since R2007a,越来越多的内置函数被重写为多线程(尽管多线程只有在有益的情况下才会发挥作用)。
Element Wise Functions and Expressions:
------------------------------------------------------------------------------------------------
Functions that speed up for double arrays > 20k elements
1) Trigonometric: ACOS(x), ACOSH(x), ASIN(x), ASINH(x), ATAN(x), ATAND(x), ATANH(x), COS(x), COSH(x), SIN(x), SINH(x), TAN(x), TANH(x)
2) Exponential: EXP(x), POW2(x), SQRT(x)
3) Operators: x.^y
For Example: 3*x.^3+2*x.^2+4*x +6, sqrt(tan(x).*sin(x).*3+8);
Functions that speed up for double arrays > 200k elements
4) Trigonometric: HYPOT(x,y), TAND(x)
5) Complex: ABS(x)
6) Rounding and remainder: UNWRAP(x), CEIL(x), FIX(x), FLOOR(x), MOD(x,N), ROUND(x)
7) Basic and array operations: LOGICAL(X), ISINF(X), ISNAN(X), INT8(X), INT16(X), INT32(X)
Linear Algebra Functions:
------------------------------------------------------------------------------------------------
Functions that speed up for double arrays > 40k elements (200 square)
1)Operators: X*Y (Matrix Multiply), X^N (Matrix Power)
2)Reduction Operations : MAX and MIN (Three Input), PROD, SUM
3) Matrix Analysis: DET(X), RCOND(X), HESS(X), EXPM(X)
4) Linear Equations: INV(X), LSCOV(X,x), LINSOLVE(X,Y), A\b (backslash)
5) Matrix Factorizations: LU(X), QR(X) for sparse matrix inputs
6) Other Operations: FFT and IFFT of multiple columns of data, FFTN, IFFTN, SORT, BSXFUN, GAMMA, GAMMALN, ERF,ERFC,ERFCX,ERFINV,ERFCINV, FILTER
不过,对于以 .m 文件实现的代码,多核无济于事。
当然,多线程 mex 文件也会受益。
MATLAB 在不使用 PCT 时是否使用 MPI?
据我所知。
MATLAB 在使用 PCT 时是否使用 MPI?
是的,当您在集群上运行它时(尽管您也可以使用其他调度程序)。为此,您需要 Matlab 分布式计算服务器许可证。我不知道本地调度程序使用什么架构(在本地机器上运行并行作业时使用的架构);鉴于 MPI 功能是 PCT 的一部分,这表明他们可以将其用于至少部分功能。 编辑:见@Edric's answer for more details
【讨论】:
从@Jonas 的详细回答中澄清和扩展几点:
【讨论】:
不使用 PCT 时,MatLab 一次只发出一个命令(单线程)。
但是,如果您有一个多线程 BLAS,您仍然可以从额外的内核中受益(而且它们是否都在一个处理器中并不特别重要)。
MEX 文件也可以用多个线程编写,在这种情况下,即使没有 PCT,您也将使用多个内核。如果您遇到性能问题,将一些热点重写为 MEX 通常是一个巨大的胜利。
【讨论】:
bsxfun。
首先,正如@BenVoigt 所说,答案大多是“不,但是……”。 “但是...”部分来自 Matlab 使用的库。 Ben 为 BLAS 提供了最著名的示例之一,您可以将其替换为支持多核或处理器的示例,例如 ATLAS、Intel 或 AMD 版本、Goto BLAS 或其他一些选项。
你也可以从Matlab中调出其他语言的代码,可以利用多核、处理器、计算机等。以前我是从Matlab中调出R,也是这样利用多核的,通过利用支持多核处理的 R 包。 MPI 也可以这样做。但是,随着您的扩展,您会发现越来越多的代码最终使用了 可以 执行更多并行或分布式工作的语言(即像 R、Python、C、 C++ 或 Java),而不是在 Matlab 中。
那么,Matlab 在没有 PCT 的情况下会从这种基础架构中受益吗?不是直接的。您在 Matlab 中的代码能否通过各种支持库从此类基础设施中受益?是的。
【讨论】:
不使用 PCT 时,MATLAB 仅使用一个内核/一个处理器。
我不知道第三个和第四个问题的答案。
【讨论】: