0

C# でバブルソート、カクテルソート、クイックソートを実行すると、3 つのコアすべてが AMD X3 (X4 には 1 つの壊れたコアが付属) で使用されていることがわかります。

なぜこうなった?私のアルゴリズムはシーケンシャルで、私のコードにはスレッド タグがありません。特に、非常に順次的なアルゴリズムである並べ替えアルゴリズムのようなものはありません。次のイベントが完了するまで、1 つのイベントは発生しません。アルゴリズムをどのように分割するのですか?

リクエストに応じて、たとえばバブルソート:

 public void BubbleSort()
    {
        for (int i = 1; i < amount; i++)
        {

            for (int j = 0; j < a; j++)
            {
                if (numbers[j] > numbers[j + 1])
                {
                    t = numbers[j + 1];
                    numbers[j + 1] = numbers[j];
                    numbers[j] = t;
                }
             }
          a--;
        }

    }
4

2 に答える 2

3

コードは、コンテキスト スイッチでコアをスワップする可能性があります。ただし、一度に使用するのは 1 つだけです。

于 2011-12-16T03:00:59.470 に答える
1

並べ替えアルゴリズムを並行して実行し、複数のコアを利用することができます。どのソートルーチンを使用していますか? それらが順次アルゴリズムではない可能性は非常に高いです。

例として、クイックソートは分割統治法によって非常に簡単に並列化できます。

于 2011-12-16T02:53:07.287 に答える