헤더는 다음과 같습니다
표준 리눅스 CUDA에
#include <cuComplex.h>
설치, 그것은에 있습니다
/usr/local/cuda/include
당신은에 정의 된 함수를 해당 헤더 파일을 검사하고 사용해야합니다 장치의 복소수를 조작 할 수 있습니다.
이 실수하여 (더블) 복소수를 곱하면, 나는 것 :
#include <cuComplex.h>
...
double cr = 1;
double ci = 2;
double r = 3;
cuDoubleComplex c = make_cuDoubleComplex(cr, ci);
cuDoubleComplex result = cuCmul(c, make_cuDoubleComplex(r, 0));
편집 : CUDA 7 RC에서 최근에 출시 된 추력 V1.8로, 추력을 사용할 수 있습니다 :: 추력 코드 또는 CUDA 장치 코드의 복합체. 따라서 다음과 같은 자연스러운 작업을 작성할 수 있습니다.
#include <thrust/complex.h>
...
thrust::complex<float> c = thrust::complex<float>(2.0f, 5.0f);
thrust::complex<float> c2 = c*c;
float r = c2.real();
빠른 응답 감사합니다. 나는 여전히 이것에 대한 내 머리를 얻으려고하고있다. 이것은 아마 정말로 어리석은 질문이지만 다른 헤더에 대한 함수에 대한 더 많은 정보는 어디에서 찾을 수 있는가? 예를 들어 cuCmul에 대해 언급하지 않았다면 http://graphics.im.ntu.edu.tw/~bossliaw에있는 cuComplex.h File Reference를 살펴봄으로써 무엇을하는지 알 수 없었을 것입니다. /nvCuda_doxygen/html/cu_complex_8h.html#ace9e79c66b2bfc9a8adeb1d641b12df4 – user2550888
해당 헤더 또는 다른 헤더에 대한 추가 문서가 있는지 모르겠습니다. 어쨌든 나는 그것을 모르고있다. 'cuCmul' 함수는 실제로 매우 간단하며 [수학의 기본 원리에 정의 된] (http://en.wikipedia.org/wiki/Complex_numbers#Multiplication_and_division)과 같은 복소 곱셈을 복제합니다. 'cuCmul'처럼 그 수식을 C 코드로 변환 할 수 없다면, C 언어를 포함한 기본적인 컴퓨터 프로그래밍에 대해 더 배우는 것이 좋습니다. –
지금 cuCmul 함수를 이해합니다.하지만 cuCmul이 기본 복소수 곱셈을위한 함수라고 말하지 않았다면, 헤더 파일 참조를 보면 알 수 없었을 것입니다. 그것은 무엇을하는지에 대한 표시가 아닙니다. 아니면 콜 그래프가 보여주고있는 것을 실제로 이해할 수 없기 때문에 제대로 사용하지 않을 수도 있습니다. 미래에 내가 필요로하는 특정 작업에 이미 기능이 있는지 어떻게 알 수 있습니까? – user2550888