API クラスとプラグイン
API クラス
MThreadPool、MThreadAsync、MSpinLock、MMutexLock - 主要なスレッド化クラスで、この章で詳細に説明しています。Maya 2008 で追加されました。
MAtomic.h - クロスプラットフォーム アトミック操作 Maya 2009 で追加されました。
MThreadUtils.h - プラグイン OpenMP のスレッド カウントを Maya と同期化します。これらの関数は、OpenMP と Intel コンパイラ以外のコンパイラを使用するプラグインで使用する必要があります。Maya
2009 で追加されました。
Maya に付属のサンプル プラグイン
- threadTestCmd - MThreadPool の使用例です。プールの初期化/管理方法、スレッドにマップされるタスクの作成、スレッドからのデータの結合による最終結果の評価を紹介しています。
- threadTestWithLocksCmd - MThreadPool、MThreadAsync、MSpinLock、MMutexLock の使用例です。このプラグインは複数スレッドを使用する pi を評価します。これは前述の threadTestCmd の例に基づいて作成されています。Maya API が提供するさまざまなロック タイプを使用したグローバル変数の更新例が追加され、さらに、スレッドが完了したときに同期化するバリア構造と非同期スレッドを組み合わせて使用する並列評価の例もあります。スレッド
プールは自動的に同期化されます。このプラグインの例はわかりやすく説明することを目的とし、あらゆる場合において最大の効率を実証するためのものではありません。たとえば、ロックの例は明らかに非効率的ですが、実際のコードでのロックの使用方法を実証しています。
- splatDeformer - スレッドセーフなデフォーマ プラグインの例です。これについては、本書内で詳細に説明されています。このプラグインを使用するには、2 つの高密度ポリゴン メッシュを作成し、一方を他方の内側にネストします。内側のメッシュを選択してから外側のメッシュを選択し、関連付けられた
MEL スクリプトを使用してデフォーマをコールします。エンベロープ アトリビュートを調整すると再計算が行われ、これをパフォーマンスの判定に使用できます。MEL コマンド
threadCount -n <numThreads> を使用してアクティブ スレッドの数を調整し、スケーリング パフォーマンスを検査します。OpenMP が必要です。
- sseDeformer - Intel コンパイラを使用した自動ベクトル化の例
- threadedBoundingBox - 偽共有の例。大きな(たとえば、100 万ポリゴン)プリミティブを作成し、コマンドを起動します。OpenMP が必要です。
- threadingLockTests - MSpinLock、MMutexLock、アトミック操作のパフォーマンス テストです。OpenMP が必要です。