2011-10-03 4 views
3

기본 제공 OpenCL 함수 select의 목적이 무엇인지 분명하지 않습니다. 누군가 제발, 분명히 할 수 있니? 오픈 CL 명세서에서OpenCL 내장 함수 'select'

:

기능

반환 (a, gentype B를 igentype에 c gentype) 선택 : 을 벡터 형식의 각 구성 요소에 대해, 결과 [I] = 경우 MSB c [i]가 설정 되었습니까? b [i] : a [i].

이 경우 MSB는 무엇입니까? 나는 MSB가 가장 중요한 비트의 약자임을 알지만이 사건과 어떤 연관이 있는지 전혀 모른다.

답변

6

오픈 CL select는 벡터 및 ab의 요소로 이루어지는 새로운 벡터를 반환 상태 벡터 (c)의 진리 값에 기초하여 벡터 (a, b) 한 쌍의 요소를 선택하는 것이다.

가장 중요한 비트 (MSB) 벡터 요소의 진리 값이 -1을로 정의되고 MSB 따라서 설정해야하기 때문에 (부호 비트로), 여기에 언급되어

a = {1 , 2} // Pseudocode for select operands 
b = {3 , 4} 
c = {0 ,-1} 
r = {1 , 4} // The result r contains some of a and b 
+1

매개 변수 순서는 * 완전 * 뒤입니다. 'a> b와 같은 것을하고 싶다면? a : b'이면'select (b, a, a> b);'라고 쓰면된다. 매우 멍청한. 그들은 무엇을 생각하고 있었습니까?! – doug65536

2

이 조건부 표현은 C에서 수행하는 것과 동일한 작업을 수행하는 매우 유용한 연산자입니다. 그러나 조건부 표현은 종종 워프/웨이브 프론트 발산을 일으키는 조건부 분기로 컴파일됩니다. '선택'은 대개 x86의 CMOV 나 SSE의 blend_ps와 같은 종류의 표현식을 생성합니다.