2010-10-14 2 views
11

Cuda 프로그래밍 가이드에서이 간단한 질문에 대한 답을 찾지 못하는 것 같습니다. nvcc를 사용하여 커널을 컴파일 할 때 short, int, long 및 int로 선언 된 크기 정수는 무엇입니까? 오랫동안? 내 호스트 아키텍처에 따라 달라 지므로 int16_t, int32_t 및 int64_t를 사용해야하며 그렇지 않으면 항상 고정 크기입니까?Cuda 커널을 프로그래밍 할 때 어떤 크기가 정수입니까?

답변

10

호스트 컴파일러에 따라 다릅니다. 특히, 해당 유형의 nvcc의 정의는 호스트 컴파일러의 표현과 일치합니다.

char, short 및데이터 유형은 CUDA가 지원하는 모든 플랫폼 (각각 8, 16 및 32 비트)에서 예측 가능한 크기를가집니다. 그러나 long의 크기는 플랫폼에 따라 다릅니다.

+1

이게 옳은가요? 장치 코드를 ptx 명령으로 변환해야합니다. 이 프로세스가 호스트 아키텍처와 관련이 있다면 그것은 이상 할 것입니다. CUDA 문서를 살펴본 결과 아무 것도 찾을 수 없었습니다. – nsanders

+2

예, 장치 데이터 형식이 호스트 형식과 일치해야합니다. 그렇지 않으면 호스트에 memcpy가 얼마나 많은지 예측할 수 없습니다. – Edric

+0

감사합니다. 그게 내가 필요한 것입니다. 호스트 코드와 커널 코드 사이의 유형을 일치시킬 책임이 있다면 그것은 악몽 일 것입니다. –

관련 문제