Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

GPU에서 복소수 사용하기

GPU에서 복소수를 사용하기 위한 조건

GPU에서 실행 중인 함수의 출력값이 복소수일 가능성이 있는 경우, complex 함수를 사용하여 이 함수의 입력 인수를 명시적으로 복소수로 지정해야 합니다. 이는 gpuArray 객체에 대해 직접적으로 연산을 수행하는 함수와 arrayfun을 사용하여 gpuArray 데이터에 대해 연산을 수행하는 함수에 적용됩니다.

음수 요소가 포함된 gpuArray를 만드는 경우 G = gpuArray(complex(x))를 사용하면 sqrt(G)를 성공적으로 실행할 수 있습니다. 예를 들면 다음과 같습니다.

x = [-1 0 1];
G = gpuArray(complex(x));
rootG = sqrt(G)
   0.0000 + 1.0000i   0.0000 + 0.0000i   1.0000 + 0.0000i

결과가 복소수 데이터로 구성된 gpuArray인데 모든 허수부가 0인 경우, 이러한 허수부는 유지되고 데이터는 복소수 상태를 유지합니다. 이로 인해, 예를 들어, sortisreal을 사용하여 데이터에 대해 연산을 수행할 때 불필요한 계산이 수행될 수 있습니다.

arrayfun을 사용하는 경우 함수 입력값은 arrayfun 호출 내에 복소수로 지정될 수 있습니다. 예를 들면 다음과 같습니다.

x = [-1 0 1];
G = gpuArray(x);
A = arrayfun(@(p) sqrt(complex(p)), G)
   0.0000 + 1.0000i   0.0000 + 0.0000i   1.0000 + 0.0000i

복소수 데이터를 반환하는 함수

다음 표에는 복소수 데이터를 반환할 수도 있는 함수와 출력값이 실수로 유지되는 입력 범위가 나열되어 있습니다.

함수실수 출력값이 가능한 입력 범위
acos(x)abs(x) <= 1
acosh(x)x >= 1
acoth(x)abs(x) >= 1
acsc(x)abs(x) >= 1
asec(x)abs(x) >= 1
asech(x)0 <= x <= 1
asin(x)abs(x) <= 1
atanh(x)abs(x) <= 1
log(x)x >= 0
log1p(x)x >= -1
log10(x)x >= 0
log2(x)x >= 0
power(x,y)x >= 0
reallog(x)x >= 0
realsqrt(x)x >= 0
sqrt(x)x >= 0

참고 항목

|

관련 항목