私は、並列クイックソートアルゴリズムと、基本的にクイックソートとマージを組み合わせたPSRSアルゴリズムの両方を使用してきました。
Parallel Quicksortアルゴリズムを使用して、最大4コア(ハイパースレッディングを備えたデュアルコア)でのほぼ線形の高速化を実証しましたが、これはアルゴリズムの制限が与えられた場合に予想されます。純粋なParallel Quicksortは共有スタックリソースに依存しているため、スレッド間の競合が発生し、パフォーマンスの向上が抑えられます。このアルゴリズムの利点は、「インプレース」で並べ替えられるため、必要なメモリの量が削減されることです。あなたが述べたように1億以上の要素をソートするとき、これを考慮したいかもしれません。
8-32コアのシステムでのソートを検討しているようですね。PSRSアルゴリズムは、共有リソースでの競合を回避し、より多くのプロセスでの高速化を可能にします。私は上記のように最大4コアのアルゴリズムを示しましたが、他の実験結果では、コアの数が32以上で、ほぼ線形の高速化が報告されています。PSRSアルゴリズムの欠点は、インプレースではなく、かなり多くのメモリを必要とすることです。
興味がある場合は、これらのアルゴリズムごとに私のJavaコードを使用または熟読できます。github:https : //github.com/broadbear/sortで見つけることができます。コードは、Java Collections.sort()のドロップイン置換として意図されています。上記のようにJVMで並列ソートを実行する機能を探している場合は、私のリポジトリのコードが役立ちます。APIは、Comparableを実装する要素または独自のコンパレータを実装する要素に対して完全に汎用化されています。
その多くの要素を分類するために何を探しているのか尋ねてもいいですか?私の分類パッケージの潜在的なアプリケーションを知りたいです。