2013-07-16 6 views
0

.reg을 사용하여 레지스터를 선언 할 때 .. 그들은 어디에 있습니까?PTX - .reg 레지스터는 어디에 있습니까?

는 말 : I가 전역 (되지 .global 단순히 전역에서 모듈의 .reg 변수를 선언하면 I 함수 레지스터는 각 스레드가 갖는 레지스터 파일에 저장되어있는 장치 .. 그러나 내부 .reg를 사용하면 범위)?

+0

당신이 "여기서"가상 머신의 상태 공간의 맥락에서 "위치"에 의해 무엇을 의미합니까? – talonmies

+0

어디서 할당 했습니까? 스레드의 파일을 등록 하시겠습니까? 전역 범위에 .reg 이름을 선언하고 커널 내부에 선언하지 않더라도? –

+0

가상 머신의 레지스터 상태 공간에 "할당 됨"(이는 CUDA가 아닌 ABI PTX 코드에서만 허용됨). – talonmies

답변

1

모든 .reg 선언은 상태 공간를 등록 PTX에서 바람. 하드웨어 기능에 대한 맵은 어셈블러에 의해 결정되지만 레지스터 또는 로컬 메모리의 일반적인 규칙은 사실입니다. 모듈 스코프에서 레지스터 상태 공간 선언은 PTX 1.x 및 2.x 코드에서만 지원되며 CUDA ABI에서는 사용할 수 없습니다. 너무 큰 문서는 참고 :

레지스터가없는 즉, 완전히 어드레싱 레지스터의 어드레스를 참조 할 수 없다는 점에서 다른 상태 공간 다르다. 응용 프로그램 바이너리 인터페이스 (ABI)을 사용하도록 컴파일 할 때 레지스터 변수는 함수 범위로 제한되며 모듈 범위에서 을 선언 할 수 없습니다. 모듈 범위 .REG 변수를 포함 (3.0 버전 이전의 ISA)를 기존 PTX 코드를 컴파일 할 때 컴파일러는 자동으로 ABI의 사용을 비활성화합니다.