タグ

ブックマーク / fareastprogramming.hatenadiary.jp (1)

  • zip_iteratorによるSoAのソート - 東方算程譚

    ふたつの配列: int x[N], y[N] があって、このふたつを連動してソートしたい、ソート順は「xの小さい順だけど、xが同じときはyの小さい順」...あるある。 CUDA世界ではデータを SoA(Structure of Array)で構成することが多いのでなおさらよくあるシチュエーションです。 thrust::sort()はひとつの配列をソートするのは簡単だけど、複数の配列を連動してソートさせるにはどーすりゃいいんだと。 thrust::zip_iteratorっていう小賢しいiteratorが用意されています。 複数のiteratorを一zip_iteratorにまとめることができ、zip_iteratorの指す先が移動するとまとめられたiteratorそれぞれが同じだけ移動します。 加えてzip_iteratorに対しoperator*()で値を取り出すと各iterator

    zip_iteratorによるSoAのソート - 東方算程譚
    y_r
    y_r 2019/11/12
    zip して連動してソートする
  • 1