2014-09-25 83 views
0

enter image description here检查内存使用CUDA Nsight调试

above screenshot of NSIGHT debugger,可有人给我解释一下:

1-到底是什么0.2010854? (请参阅本地窗口)

2 - 什么是在地址值:0x00110000

3-为什么这个地址只有16位?在32位操作系统上,它不应该是32位吗? 对不起,这是我的错,在下面的评论中指出它是32位。

+0

我认为0.2010854是该行('A')引用的'__device__ float *'指针指向的第一个“float”值。是什么让你认为'0x00110000'是一个16位地址?每个十六进制数字需要4位存储空间。有8个十六进制数字显示。 4x8 = 32位。 – 2014-09-25 03:50:41

+0

@RobertCrovella,哦,是的,它的32位。顺便提一下,内存窗口提供了什么信息?该窗口中是否有0.2010854? – user3891236 2014-09-25 04:04:34

+0

内存窗口还显示内存中从内存地址0x00110000开始存储的内容(在本例中),但它会逐字节地显示数据。例如,如果您将前4个字节重新排列为32位数量(所以,“0x3e4de99c”),您将拥有0.2010854的“浮点”表示。 – 2014-09-25 05:27:35

回答

2

1-什么是0.2010854? (请参阅本地窗口)

它是包含在地址0x00110000我们预计float代表性float量,因为变量A,一个__device__float指针,应指向一个float数量:

A = 0x00110000 

*A = 0.2010854 

2 - 什么是在地址值:0x00110000

该地址处的值为0.2010854,用float数量表示,或0x3e4de99c表示为32位十六进制数(例如,十六进制无符号整数)。

3-为什么这个地址只有16位?在32位操作系统上,它不应该是32位吗?对不起,这是我的错误,正如下面的评论中指出的那样,它是32位。

该地址实际上是32位。每个十六进制数字构成4位,并且有8位数字。

Memory窗口给出了什么信息?该窗口中是否有0.2010854?

内存窗口还显示内存中从内存地址0x00110000(在本例中)开始存储的内容,但是它会逐字节地显示数据。例如,如果您将前4个字节并将它们重新排列为32位数量(所以,0x3e4de99c),则您将拥有0.2010854的浮点表示形式。