2
1
运行时
HIP主机内存复制到目标设备时报错
2022-11-06 20:07:06
109

使用HIP平台运行PaStiX中的下列代码中的hipMemcpy函数时出现错误:
d_x = (double *)solver.malloc(n * sizeof(double));
d_b = (double *)solver.malloc(n * sizeof(double));
hipPointerAttribute_t attr;
hipError_t ret=hipPointerGetAttributes(&attr,d_x);
hipMemcpy( d_x, x, n * sizeof(double), hipMemcpyHostToDevice);
hipMemcpy( d_b, b, n * sizeof(double), hipMemcpyHostToDevice);
错误类型为SIGSEGV段错误,调用栈如下:
#0 0x00002aaab768d159 in __memcpy_sse2 () from /lib64/libc.so.6
#1 0x00002aaaac15a930 in ?? () from /public/home/ghfund2_a36/dtk-22.04.2//hip/lib/libgalaxyhip.so.4
#2 0x00002aaaac15aafa in ?? () from /public/home/ghfund2_a36/dtk-22.04.2//hip/lib/libgalaxyhip.so.4
#3 0x00002aaaac15d3da in ?? () from /public/home/ghfund2_a36/dtk-22.04.2//hip/lib/libgalaxyhip.so.4
#4 0x00002aaaac165167 in hipMemcpy () from /public/home/ghfund2_a36/dtk-22.04.2//hip/lib/libgalaxyhip.so.4
#5 0x0000000000c00464 in d_gmres_gpu_smp (pastix_data=0x96f1000, x=0x182ee00, b=0x18291a0) at

其中d_x为设备上的内存, x为主机上的内存,对内存检查的结果如下:
hipPointerGetAttributes(d_x)返回:ret=hipSuccess,attr=$15 = {memoryType = hipMemoryTypeDevice, device = 0, devicePointer = 0x2aac400316f0, hostPointer = 0x2aac40000000, isManaged = 0, allocationFlags = 0},同时对x+0和x+n-1也可以正常解引用。
如果用hipHostMalloc代替malloc为x变量分配主机内存, 则会出现如下错误:
Invalid address access: 0x2adf80031000, Error code: 3.

麻烦问一下出现这种情况一般是什么原因?

全部评论(2)
只看楼主
T
tianlh
2楼
如电话沟通,该问题用户已解决。
2022/11/8
T
tianlh
1楼
麻烦发一下demo我们验证下,谢谢
2022/11/7
没有更多内容了
--
楼主
Level.1
0 帖子
楼主热帖
暂无数据