了解多核,多处理器和MPI上的MATLAB

Ame*_*ina 8 parallel-processing matlab mpi

关于MATLAB如何利用并行硬件,我有几个密切相关的问题.它们很短,所以我认为最好将它们放在同一篇文章中:

  • 使用Parallel Computing Toolbox时,MATLAB是否利用/受益于多个内核?
  • 使用PCT时,MATLAB是否利用/受益于多个处理器?
  • MATLAB 在使用PCT时是否使用MPI
  • MATLAB 在使用PCT时是否使用MPI

Jon*_*nas 7

在不使用Parallel Computing Toolbox时,MATLAB是否利用/受益于多个内核?

是. 从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
Run Code Online (Sandbox Code Playgroud)

但是,对于以.m文件实现的代码,多个内核无济于事.

当然,多线程mex文件也会受益.

MATLAB在不使用PCT时是否使用MPI?

据我所知.

MATLAB在使用PCT时是否使用MPI?

是的,当您在群集上运行它时(尽管您也可以使用其他调度程序).为此,您需要获得Matlab Distributed Computing Server许可证的许可证.我不知道本地调度程序使用什么体系结构(在本地计算机上运行并行作业时使用的体系结构); 鉴于MPI功能是PCT的一部分,建议他们可以将其用于至少部分功能. 编辑:有关详细信息,请参阅@ Edric的答案


Edr*_*ric 5

从@Jonas的详细答案中澄清并扩展几点:

  • PCT使用MPICH2的构建(这不是基础MATLAB附带的).
  • MPI函数在本地调度程序下可用 - 在这种情况下,MPICH2的构建可以利用共享内存进行通信.
  • labSend/labReceive函数系列提供了围绕MPI_Send/MPI_Recv等的包装器.