マルチスレッド計算に対応している関数はどれですか?
12 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
マルチコアプロセッサの PC を使用しています。MATLAB のマルチスレッディング機能を有効にしていますが、MATLAB のどのような関数に効果があるか、教えてください。
Risposta accettata
MathWorks Support Team
il 18 Apr 2016
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 Commenti
Più risposte (0)
Vedere anche
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!