각 방향으로 (N, N) 셀이있는 격자를 만들었습니다. 어떤 점이 어느 셀에 해당하는지 확인하고 싶습니다. 그러나 이것은 쉽습니다. 그러나 그리드에서 벗어날 수있는 몇 가지 점이 있습니다. 하나의 셀에 넣습니다.성능, 최소/최대 또는 모듈러스에 미치는 영향이 가장 적은 작업은 무엇입니까?
이것은 GPU에서 모두 수행되므로 제 질문은 유효 셀에 누락 된 포인트를 매핑하는 최상의 작업이 될 것입니다.
커널에서 분기를 도입 할 것으로 생각되는 max (0, min (N, cell.x))를 사용하는 첫 번째 옵션. 두 번째 옵션은 modulus (cell.x % N)를 사용하여 GPU에서 수행해야 할 매우 비싼 작업입니다.
어떤 것을 어떻게 사용할 것인지 결정할 수 있습니까?
N에 대해 아는 것이 있습니까? 2의 거듭 제곱에 의한 모듈러스는 매우 싸다. – Jez
나는 그것에 대해 생각하고 있었지만, 어떤 경우에는 필요한 메모리를 늘리는 것을 의미 할 것이라고 추측합니까? 하지만 잘 ... 그리드가 그렇게 크지 않아야 옵션이 될 수 있습니다. – BRabbit27
'커널에서 분기를 도입 할 것으로 믿는 max (0, min (N, cell.x))를 사용하는 첫 번째 옵션 왜 이것이 분기가 발생할 것이라고 생각합니까? 이 함수들은'min.s32'와'max.s32'와 같은 매우 효과적인 분기없는 어셈블리에 매핑되어야합니다. 거기에는 분기가 없습니다. –