1.3
小さな二次元配列が発生する場所について二次元配列をスキャンすることを含む計算機能 GPU を備えた CUDA を使用するアプリケーションを実装しています。これまで、合体のためのメモリ アラインメント要件を満たすために、両方の配列が を使用して割り当てられ、 を使用cudaMallocPitch()
して転送されていました。cudaMemcpy2D()
最初の最適化ステップでは、データを共有メモリにまとめて読み取ることにより、メモリ アクセスをグローバル メモリに統合しようとしています。最適化されていないコードでのテスト (たとえば、発散分岐があり、グローバル メモリへのメモリ アクセスが結合されていない場合) を使用してより大きな配列を割り当てたcudaMalloc()
ところ、パフォーマンスが最大 倍に向上したことがわかりました50%
。これはどのように可能ですか?