私は別のソートアルゴリズムを探していましたが、実際にソートせずにこのソートの考えを得たときにGPUに移植する方法を考えようとしていました。これは私のカーネルがどのように見えるかです:ソートの迅速なハック:私はこの権利をしていますか?
__global__ void noSort(int *inarr, char *outarr, int size)
{
int idx = threadIdx.x + blockIdx.x * blockDim.x;
if (idx < size)
outarr[inarr[idx]] = 1;
}
は、その後、ホスト側では、私はちょうどoutarr[i] == 1
配列のインデックスを印刷しています。今では事実上、上記のように整数リストをソートすることができ、それも実際にソートするアルゴリズムよりも速いかもしれません。
これは正当ですか?
いくつかの素晴らしいリソースをご指摘いただきありがとうございます。私は複数のGPUを使ってソートを行うプログラムを書くつもりであるので、ちょっとしたことがあります。複数のGPUを使用して大量の数値をソートする実装はありますか? NVidiaのサイトのsortingNetworksコードサンプルは、単一のGPUで動作すると思います。それとも、私はそれをこのように置いてみましょう...実用的な世界ではどれほど有用なのでしょうか? – Sayan
私はマルチGPUソーティングコードを認識していませんが、確かにそれを構築することは可能です。最も簡単なことは、各デバイスで既存の(シングルGPU)ソートを使用して、結果をまとめて、おそらくP2Pコピーを使用してGPU間通信を高速化することです。 – wnbell