いくつかのJSLの質問こんにちは!
誰かが以下の答えを知っているかどうか疑問に思いました。
- ホストマシンが同時に実行できるスレッド数を決定するためのJSL関数があります。
- JMP Proのシミュレート機能はマルチスレッドですか?
どんな考えでも歓迎します。
ありがとうございます。
M再:いくつかのJSLの質問1)いいえ。でもJSLで答えを推測することができます。
x=j(1000,1,.);
i=0;
parallelassign({q=i++},x[r,c]=q);
show(i);
しかし、それは*答え*であり、*答え*ではありません。単一のCPUマシンでも数百のスレッドを持つことができます。そして現在のCPUは通常、より速いスレッド切り替えを可能にするハイパースレッディング機能を持っています。しかし、上記のi値はおそらくあなたが望むものです。説明:{q = i ++}内で、qは各スレッド・インスタンス内のローカル変数であり、i ++はスレッドの外部で計算された初期化値です。この振る舞いや、行列要素が初期化される見かけの順序に依存するコードを書くべきではありません。
2)タスクマネージャを見てください(WIN 7は10よりも個々のCPUを示すより良い仕事をしました)。私はそう思います。
(MFIはI / Oバウンドでファイルを読み取るためにスレッドを使用し、シングルCPUマシン上のスレッドの恩恵を受けるでしょう。1つのスレッドでファイルを読み取るためのI / Oは他のスレッドがデータを解析するためにCPUを使用するのを妨げませんすでに別のファイルを読み込んでいます。しかし、シミュレートはおそらくCPUバウンドで、おそらくI / Oがありません。スレッド化されている場合は、複数のCPUの恩恵を受けるはずです。上記のParallelAssignはメモリに依存します。メモリへのバンド幅は行列にデータを書き込むことができる最高速度を決定します...計算がx [r、c] =の右側で遅い場合にのみ、より多くのCPUは助けになるでしょう... )
再:いくつかのJSLの質問興味深い質問 @MikeD_Anderson 。あなたが尋ねるものを共有できますか
再:いくつかのJSLの質問ありがとう、 @Craige_Hales !私はそれがうまくいくと思います。 プロセッサ上にコアがいくつあるかをホストOSに問い合わせるためのJSL機能があることを望みました。 私はちょうどあなたのスニペットを試してみました、そしてそれは私に同じ答えを与えました(私のi9プロセッサは1コアあたり2スレッド= 12スレッドで6コアを持っています)。
@Jeff_Perkinson - 私はシミュレーションを実行するための合計実行時間を球場にしようとしています。私のモデルの実行に2秒かかる場合、2500コアシミュレーション(デフォルト)を行い、1コアあたり2スレッドで6コアに広げます(simulateがマルチスレッドの場合)、シミュレーションには417秒(6分)かかります。 シミュレーションにかかる時間をユーザーに知らせるために、作業中のアドインに警告メッセージを表示したいと思います。 それは完璧な数学ではありませんが、少なくとも「私はこのシミュレーションを実行するのに1時間かかるでしょう。本当に実行しますか?」モデルの1回の反復処理時間(汗もかからない)を得ることができますが、スレッド数を把握することが私の悩みの種でした。
ベスト、
M
再:いくつかのJSLの質問CPUの数を2倍にしても、CPUやメモリに制限のある実際のアプリケーションの速度が2倍になることはありません...通常のケースです。メモリ帯域幅は常に問題になります。あなたは2つか4つのCPUを想定することができ、それでも制御することができない他のすべてを考えると、かなり良い推測をすることができます。早く終わっても文句を言う人はいません。