マルチスレッド計算に​対応している関数はど​れですか?

12 ビュー (過去 30 日間)
MathWorks Support Team
MathWorks Support Team 2013 年 8 月 19 日
マルチコアプロセッサの PC を使用しています。MATLAB のマルチスレッディング機能を有効にしていますが、MATLAB のどのような関数に効果があるか、教えてください。

採用された回答

MathWorks Support Team
MathWorks Support Team 2016 年 4 月 18 日
MATLAB 7.4(R2007a) 以降、MATLAB では以下のような関数に対して、マルチスレッディング機能をサポートしています。
- 線形代数演算(行列の掛け算など)
- 要素毎の数値演算(COS関数など)
- 要素毎の演算の組み合わせ(y=4*x*(sin(x)+x^3)など)
これらの演算は、自動的にマルチコア上で演算されるため、プログラム内で明示的にマルチスレッディグ処理を行うといった記述をする必要はありません。
なお、マルチコアプロセッサ上でより高速に演算を行うための条件としては、以下の項目が挙げられます。
1. 関数で行われているアルゴリズム内部の処理が簡単にセクションに分けられ、同時に実行可能であり、またそのとき、多少の通信もしくはシーケンス処理が必要となること。
これは、要素毎の数値演算に当てはまります。BLASライブラリを使用している行列演算では、システム上で使用している BLASライブラリそのものがスレッドで構成されている場合のみ、分割されます。
2. データを分割しスレッドに処理を分割する時間よりも、並列処理の時間が上回るほどデータの大きさが十分に大きいこと。
例えば、多くの関数では、配列が数1000要素以上の場合のみ、高速化されます。
3. 要素毎の足し算のような単純な処理などと同様に、処理時間がメモリへのアクセス時間に占められるような、処理がメモリバウンドではないこと。
一般に、より複雑な処理の方が、単純な処理よりも効果的に高速化されます。
次の関数は、MATLAB7.14(R2012a)の時点でマルチスレッド実装されているものです。このリストは網羅的ではなく、その他の MATLAB 関数についても、以下の関数が内部で実装されていることにより、マルチスレッド化されます。また、マルチスレッド実装がすべての引数の組み合わせとデータ型/形状/サイズに適用されない可能性があることにご注意ください。ここでリストされている関数は、MATLAB ドキュメントの表示順で記載されています。
数学
配列と行列
• 基本情報: ISFINITE, ISINF, ISNAN, MAX, MIN
• 演算子: +, -, .*, ./, .\, .^, *, ^, \ (MLDIVIDE), / (MRDIVIDE)
• 配列演算: PROD, SUM
• 配列操作: BSXFUN, SORT
線形代数
• 行列解析: DET, RCOND
• 線形方程式: CHOL, INV, LDL, LINSOLVE, LU, QR
• 固有値や特異値: EIG, HESS, SCHUR, SVD, QZ
初等数学
• 三角法: ATAN2, COS, CSC, HYPOT, SEC, SIN, TAN, including variants for radians, degrees, hyperbolics, and inverses.
• 指数関数: EXP, POW2, SQRT
• 複素数: ABS
• 丸めや剰余: CEIL, FIX, FLOOR, MOD, REM, ROUND
• LOG, LOG2, LOG10, LOG1P, EXPM1, SIGN, BITAND, BITOR, BITXOR
特殊関数
• ERF, ERFC, ERFCINV, ERFCX, ERFINV, GAMMA, GAMMALN
データ解析
• CONV2, FILTER, FFT and IFFT of multiple columns or long vectors, FFTN, IFFTN
 

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeParallel Computing についてさらに検索

製品


リリース

R2007a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!