3

私はアムダールの法則に戸惑い、パフォーマンスの向上とシリアルアプリケーションの部分を決定し、これを理解できません。

知られているのは次のとおりです。

S(N) = Speedup factor for (N) CPU's
N = Number of CPU's
f = The part of the program which is executed sequential
S(N) = N / ( 1 + f * ( N - 1 ) ) 

CPU が 4 つあり、スピードアップ係数 (パフォーマンスの向上) が 3 倍だとします。fは何でしょう?

私の推測:

S(N) = 3 (that's our performance gain using 4 CPU's)
N = 4

したがって、これらの値を式に入力します。

3 = 4 / ( 1 + f * ( 4 - 1 ) )

f = 0,11 と言うのは正しいですか? または、S(N) を 1 に設定する必要がありますか (つまり、3 で割ります)。それとも私は何か他のことを間違っていますか?

4

2 に答える 2

1

私の同級生は、これに対して(これまでのところうまくいく/正しい)答えを出しました。

私は次のクラスを作成しました: 混乱に対処するために削除されました。

これで解決するはずです。

編集:

わかりました、前の答えは間違っていますが、解決策を見つけました。

最初に並列に実行できる部分を計算し(ウィキペディアにありますが、理解するのに時間がかかりました)、次にシリアル部分を計算します。

したがって、最終的なクラスは次のようになります。

/**
* @param s - The maximum performance profit. 
* @param n - The amount of processors that are usable..
* @return f - The sequential part of the program.
*/
public final double sequentialCalculation(final double s, final double n) {
    double p = 0; //the part that can be executed in parallel
    double f = 0;

    if (s <= 0) {
        throw new IllegalArgumentException("S > 0");
    }

    if (n <= 0) {
        throw new IllegalArgumentException("N > 0");
    }

    p = ((1 / s) - 1) / ((1 / n) - 1);

    f = 1 - p;

    return f;
}

どういたしまして。

于 2014-02-14T09:21:17.677 に答える
0

これがあなたが使用することになっている方程式であるとしたら、少し間違っていると思うので、説明してみましょう.

f は、シングルコア実装で並列化しなかったコードの部分でプログラムが費やした時間の割合 (別名、0 <= f <= 1) です。たとえば、次のようなプログラムがあるとします。

// this takes 15 seconds
init();

for (int i = 0; i < 10; i++) {
    // this takes 10 seconds, and will be split
    // between threads when in parallel
    calculate();
}

// this takes 5 seconds
finalize();

これは 15+(10*10)+5=120 秒で (順次) 実行されます。ただし、並列に実装されている場合、複数のコア間で分割できない 20 秒の実行があります。これは、10 回の反復すべてを実行するのに 10 秒しかかからないように並列部分が高速化されたとしても、プログラム全体にはまだ 30 秒かかることを意味します。これが、f が私たちに教えてくれることです。つまり、並列化によって問題がどれだけ恩恵を受けることができるかということです。この例では、合計 120 秒のうち 20 秒を連続して実行する必要があるため、f = 20/120 = 1/6 となります。

f のこの新しい値を使用すると、Amdahl によると速度が向上します。1 つの免責事項 - これはスピードアップを測定する唯一の方法ではなく、さまざまな方法にはそれぞれ長所と短所があります。

于 2012-02-11T19:30:17.293 に答える