2013-07-16 56 views
0

當我使用.reg來聲明寄存器..他們在哪裏?PTX - .reg寄存器位於哪裏?

我的意思是:如果我使用.reg設備功能寄存器存儲在每個線程擁有寄存器文件...但裏面有什麼,如果我在全球範圍內(不.global,只是全球聲明模塊中的.reg變量範圍)?

+0

在虛擬機中的狀態空間的上下文中,「where」和「located」是什麼意思? – talonmies

+0

我的意思是它分配在哪裏:在一個線程上註冊文件?即使我在全局範圍聲明.reg名稱,而不是在內核中聲明? –

+0

它在虛擬機的寄存器狀態空間中「分配」(並且僅在非CUDA ABI PTX代碼中允許)。 – talonmies

回答

1

任何.reg聲明在PTX寄存器狀態空間中結束。如何映射到硬件功能由彙編程序決定,但通常的寄存器或本地內存規則適用。您應該知道,模塊範圍內的寄存器狀態空間聲明僅支持PTX 1.x和2.x代碼,並且不能與CUDA ABI一起使用。的PTX文檔注意到:

寄存器從其他狀態空間不同,因爲它們不完全 尋址的,即它是不可能的,指的是 一個寄存器中的地址。編譯爲使用應用程序二進制接口 (ABI)時,寄存器變量僅限於功能範圍,並且可能不在模塊範圍內聲明 。當編譯包含模塊範圍.reg變量的舊版PTX代碼(3.0版之前的ISA )時, 編譯器會靜默地禁用ABI。