在 cuda malloc 管理内存后放置 new

时间:2021-02-10 13:43:49

标签: c++ cuda

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

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

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

1 个答案:

答案 0 :(得分:1)

是的,这应该是可用的,忽略使用省略号和缺少分号等小问题。只需稍加搜索,您就可以在此处的 SO ... 标签上找到在 CUDA 中正确和典型使用 Placement new 的示例。

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