나는이 (실제 4D 벡터의 마지막 구성 요소는 무시됩니다)처럼 float3 벡터를 정렬의 OpenCL의 셔플 기능을 사용하고 있습니다 :반전 A (작은) 순열
uint4 mask = (uint4)(0,1,2,3);
mask.xyz = res.x < res.y ? (res.x >= res.z ? mask.yxz : mask.yzx) : (res.y >= res.z ? mask.xyz : mask.xzy);
float4 abcd = shuffle(res,mask);
내가 다음 조작 각 벡터 abcd
의 구성 요소 및 다음과 같이 분류 순열을 되돌리고 싶은 :
uint4 inv_mask = ... // ???
res = shuffle(abcd,inv_mask); // Inverse the sorting permutation
가 어떻게 효율적으로 역 마스크를 계산합니까?
아니,이 예 신원 순열 마스크의 역, 0,1 (역 순열을 제공하지 않습니다 , 2,3, 변경해서는 안됩니다). –
이것은 i가 j 위치에 놓여 있다면 (i, j)에 1을, 그렇지 않으면 0으로 구성된 순열 행렬을 가지고있는 것처럼 들린다. 그리고 반전 된 순열은 거꾸로 된 행렬이어야한다. – Christian
오른쪽. 그러나 행렬을 뒤집는 것은 너무 광범위합니다. –