필자는 데이터 전달을 쉽게하기 위해 호스트와 장치 코드 모두에서 사용하는 클래스를 가지고 있습니다. 이 클래스에는 데이터를 조작하는 메소드가 있습니다. 간단한 예제는 다음과 같습니다.CUDA - 소스 파일에 대한 __device__ 메쏘드
struct Vector {
float x, y, z;
__host__ __device__ Vector(float _x, float _y, float _z) {
//...
}
};
이 클래스를 헤더 파일에 구현하면 잘 작동하고 nvcc가 행복해집니다. 그러나 소스 파일에 생성자를 구현하려고하면 nvcc는 생성자가 인라인되지 않는다고 불평합니다. 어쨌든 이것을 무시하거나 컴파일러의 한계에 불과합니까?
'__forceinline__'지정자를 사용해 보셨습니까? 소스 파일은 .cu 파일 또는 .cpp를 의미합니까? – geek
예, 저는'__forceinline__'을 시도했습니다. 내가하고 싶은 것은 클래스를 소스 (.cu)와 헤더 (.cuh)로 분리하는 것이지만, NVCC는 디바이스 클래스를 허용하지 않는다. –
CUDA 및 CUDA 아키텍처의 해당 버전을 사용하고 있습니까? – geek