2

フラクタルをプロットする Octave でこの関数を作成しました。さて、計算したすべての点をプロットするには長い時間がかかります。関数を可能な限り効率的にしました。プロットを高速化できる唯一の方法は、CPU を関数に完全に集中させるか、何らかの方法でプロットに集中するように指示することです。

これを行う方法はありますか、それともこれが本当に限界ですか?

4

1 に答える 1

2

プロットにどれだけの CPU が消費されているかを判断するには、プロットを実行し、別のウィンドウ (Linux/Unix を想定) でtopコマンドを実行します。(Windows の場合は、タスク マスターを起動して [プロセス] タブに切り替え、CPU ヘッダーをクリックして CPU で並べ替えます)。

(質問のタグにある Octave のロールオーバーの説明には、Octave はスクリプト言語であると書かれています。プロットを作成するために呼び出していると思いgnuplotます。これを最も高い CPU 消費者として探してください)。

Octave/gnuplot cmd がリストの一番上にあり、 (または類似の)topというラベルの付いた列があることがわかります。%CPUこれにより、そのプロセスが消費している CPU の量が表示されます。

プロセスが 95% 以上の CPU を消費していると予想されます。それが大幅に低い数値であることがわかった場合は、その下のプロセスを確認する必要があります。それらは残りの CPU を消費していませんか (何らかのウイルス スキャン (PC 上)、または DB またはサーバー?)? 競合するプログラムが問題である場合は、それが終了するまで待つことができるか、またはそれらを強制終了して後で再起動できるかを決定する必要があります。(lunix の場合は、kill -15 pidまたはを使用します。最後の手段としてkill -11 pidのみ使用kill -9 pidしてください。 を試みるための正しい順序に関する記事は、ここで検索してくださいkill -$n)

競合するプロセスがなく、octave/gnuplot使用率が 95% 未満の場合は、代替ツールを見つけて、何がプロセスを妨げているかを確認する必要があります。(これはありそうもないことです。プロット プロセス全体の一部がディスク I/O またはネットワーク I/O にバインドされている可能性があります)。

そのため、現在経験しているタイムスケールと、「経験したい」時間によって異なります。

システムに複数の CPU がありますか? 次に、octave/gnuplotドキュメントを調べて、「処理に $n 使用可能な CPU を使用する」ことを示すスイッチがサポートされているかどうかを確認する必要があります。(または、$n 個の複数の CPU の使用をサポートするプロット プログラムを見つけてください)。

現実的には、プロセスに 10 分かかる場合、競合するプロセスを排除することで 60% から 90% になると、CPU が 50% 増加しますが、5 分に短縮されるだけです (確かではなく、おそらくそれ以下) 、数学は私の得意分野ではありません;-))。タスクを5-10-??に分割できること CPU は、ターンアラウンド タイムを短縮するための最も確実な方法です。

したがって、これをさらに進めるには、いくつかのデータ ポイントを使用して質問を編集する必要があります。あなたのプロットはどのくらいかかりますか?処理しているファイルの大きさ。あなたが行っているプロットのために、特に数学を集中的に使用するものはありますか? 前処理されたデータ ファイルは計算を高速化できますか? また、top99% の CPU で実行されている gnuplot が結果に表示されない場合は、投稿を編集してtop、問題を理解するのに役立つ出力を表示してください。(出力を貼り付け、topマウスで選択し、入力ボックスの上部にある書式設定ツール{}を使用して書式を維持し、投稿で出力が折り返されないようにします)。

IHTH。

PS ロールオーバーして、質問に割り当てた各タグのフォロワー数に注意してください。使用している OS のタグと、パフォーマンス測定/テストに関連するタグを含めることで、質問に対するより有用な「目」が得られる場合があります ([タグ] タブに移動し、さまざまな用語を入力して、フォロワー数を確認します)。 SO のエチケットの 1 つは、(適切な場合) 1 つのプログラミング言語のみを指定することであり、これは OS にも適用される可能性があります。)

于 2012-12-21T04:02:04.933 に答える