aclrtMemcpy 申请的内存 为什么在Host侧访问报段错误
收藏回复举报
aclrtMemcpy 申请的内存 为什么在Host侧访问报段错误
t('forum.solved') 已解决
发表于2023-08-15 11:22:29
0 查看

int main(int argc, char **argv)

{

    // testing::InitGoogleTest(&argc, argv);

    ascend::DeviceScope deviceScope;

     int aa=99;

    int val=99;

    int * flagPtr1 = &aa;

    printf("flagPtr1 = %p\n", flagPtr1);

    printf("*flagPtr1 = %d\n", *flagPtr1);

    void * flagPtr2=nullptr;

   

   

    printf("flagPtr2 first= %p\n", flagPtr2);

    aclError ret1 = aclrtMalloc(&flagPtr2, sizeof(int), ACL_MEM_MALLOC_NORMAL_ONLY);

    printf("ret1 = %d\n",ret1);

     printf("flagPtr2 second= %p\n", flagPtr2);

   

    aclError ret2 = aclrtMemcpy(flagPtr2, sizeof(val), &val, sizeof(val), ACL_MEMCPY_HOST_TO_DEVICE);

    printf("ret2 = %d\n",ret2);

     printf("flagPtr2 third= %p\n",flagPtr2);

    void * flagPtr3 = nullptr;

    aclError ret3 = aclrtMallocHost(&flagPtr3, sizeof(int));

    printf("ret3 = %d\n",ret3);

    printf("flagPtr3 first= %p\n",flagPtr3);

    aclError ret4 = aclrtMemcpy(flagPtr3, sizeof(val), flagPtr2, sizeof(val), ACL_MEMCPY_DEVICE_TO_HOST);

    printf("ret4 = %d\n",ret4);

    printf("flagPtr3 second= %p\n",flagPtr3);

    printf("val of  flagPtr3= %d\n", *(int *)flagPtr3);

   

    printf("val of  flagPtr2 = %d\n", *(int *)flagPtr2);

    printf("end\n");

    // return RUN_ALL_TESTS();

    return 0;

}

cke_746.png

aclrtMemcpy申请的内存在Host侧输出不了?

aclrtMallocHost申请的内存 和 aclrtMemcpy申请的内存 都是0X124这块的内存 而aclrtMallocHost申请的内存却可以访问?

我要发帖子