0

我刚刚使用 Enable memory checker 选项运行 Nisght 2.2 并收到以下错误:

CUcontext blockIdx WarpIndex PC Active Mask Exception Exception Details

0x02af1c10 (0,0,0) 0 0x0001cc70 0x00000004 OutOfRangeLoad MemorySpace=Global Size=4

此外,输出如下:

GPU状态:

地址 大小 类型 Mem Block Thread blockIdx threadIdx PC Source

05500e20 4 adr ld g 0 2 {0,0,0} {2,0,0} 000170 无可用来源

访问违规摘要:

Nsight Debug Memory Checker 检测到 1 个访问冲突。错误 = 加载时访问冲突(全局内存) blockIdx = {0,0,0} threadIdx = {2,0,0} 地址 = 0x05500e20 accessSize = 4

Nsight 调试

CUDA 内存检查器检测到 1 个线程导致访问冲突:启动参数 CUcontext = 026f1c10 CUstream = 03460f58 CUmodule = 047e7538 CUfunction = 047c26b0 FunctionName = _Z19findHowManyBeforeWiPcPiS0_S0_S0_S_S0_S0_ii gridDim = {1,1,1} blockDim = {128,1}S :参数(原始):0x05500400 0x05500800 0x05500c00 0x05500000 0x05501200 0x05500600 0x05500a00 0x05500e00 0x00000004 0x00000005 GPU 状态:

地址 大小 类型 Mem Block Thread blockIdx threadIdx PC Source

05500e20 4 adr ld g 0 2 {0,0,0} {2,0,0} 000170 无可用来源

但是,我无法理解任何这些信息,除了线程 2 的函数 HowManyBeforeWi 中发生错误这一事实。无论如何,是否可以找到发生错误的确切行,因为这看起来非常模糊。

4

1 回答 1

1

调试器在引发访问冲突的行中断。或者,您可以使用“反汇编”窗格将问题发生的位置与程序计数器 (PC) 关联起来。

于 2012-10-02T03:49:42.657 回答