GPUを使用してNがMよりずっと小さく(N = 10、M = 1000など)、M個の要素からN個の最大要素を取り出す効率的な方法があるかどうかは疑問です。CUDAを使ってM個の要素からN個の最大要素を得るにはどうすればいいですか?N << M?
入力データのサイズが大きいため、GPUからCPUにデータを転送して戻したくないという問題があります。しかし、正確な並べ替えは、スレッドの分岐や実際には気にしない要素のソートに時間がかかるためにうまく機能していないようです(上記のDCエレメントは11〜1000です)。
私はいくつかの最大ヒープがこれらの問題の典型的な解決策だと思います。 – halfelf
@halfelf:あなたが参照しているものであれば、CUDAで最大のバイナリヒープを行うことはお勧めしませんか?あなたは、並列マシン上でこれを行うより具体的な方法がないかぎり? – CygnusX1
N = 10、M = 1000の例を挙げますが、大規模な入力データについて話します。 NとMのあなたの現実的な価値は何ですか? Nに応じて、私は縮小アルゴリズムを適応させるか、ソートアルゴリズムを適応させることを提案する。小さなMの場合でも、それがより大きいCUDAアルゴリズムの一部であれば、それもデバイス上で行うのが良いかもしれません。 – CygnusX1