我用cuda刷新了我的思绪,特别是统一的记忆(我最后一个真正的cuda dev是3年前),我有点生锈。
pb:
我正在使用统一内存从容器创建任务。但是,经过几天的调查,我得到了一次崩溃, 我无法说崩溃在哪里(复制构造函数),但不是为什么。因为所有指针都是正确分配的。
我没有与Nvidia帖子(https://devblogs.nvidia.com/parallelforall/unified-memory-in-cuda-6/)收缩 关于C ++和统一内存
//on the server
const user = Meteor.users.findOne(userId);
Accounts._checkPassword(user, "wrongPassword");
// results in:
{ userId: 'theuserid',
error:
{ [Error: Incorrect password [403]]
error: 403,
reason: 'Incorrect password',
details: undefined,
message: 'Incorrect password [403]',
errorType: 'Meteor.Error' } }
Accounts._checkPassword(user, oldPassword);
// results in the following if the password is correct
{ userId: 'theuserid' }
客观地说,我可以将一个对象作为参数传递给正确分配内存的参数。但是,看起来不可能使用第二学位 间接(这里是容器)
我在做一个概念上的错误,但我没有看到。
最佳,
Timocafe
我的机器:cuda 7.5,gcc 4.8.2,特斯拉K20 m
答案 0 :(得分:1)
虽然存储器被分配为统一存储器,但容器本身在主机代码中声明并分配在主机存储器中:container<task> c(2);
。您不能将其作为对设备代码的引用传递,并且在内核中取消引用它很可能会导致非法的内存访问。
您可能希望使用cuda-memcheck
来识别此类问题。