在 cuda malloc 管理的内存之后放置新的

Placement new after cuda malloc managed memory

我在使用 CUDA 管理分配时遇到严重错误。我想确认以下代码是否正确:

T* x;
cudaMallocManaged(&x, sizeof(*x));
new(x) T(..)

CUDA 版本 11 是否支持放置新语法。 谢谢

是的,应该可以使用,忽略一些小问题,例如使用省略号和缺少分号。通过一些搜索,您可以在 SO cuda 标签上找到在 CUDA 中正确和典型使用 placement new 的示例。

是的,新展示位置是 supported/usable。您在此处描述的代码主要是主机代码(忽略对主机代码库的调用)。因此,在您所显示的上下文中对此操作(新放置)的支持实际上来自您正在使用的主机编译器,而不是 CUDA 工具包提供的任何内容。