cuda - 是否可以在 CUDA 内核上使用 push_back 方法?

标签 cuda thrust

在我的代码中,我想在 __global__ 函数 上 push_back 我的日期,这里很难使用数组。所以我想知道是否可以在 CUDA 内核上使用 push_back 方法? 我可以通过其他方式在 __global__ 函数上使用 std::vector 吗,或者如何在 上使用 thrust::vector >__global__ 函数。

谁能给我一个示例代码?

最佳答案

std::vectorthrust::vector 在 CUDA 内核代码中是不可能的。 Thrust 是 GPU 阵列和算法的主机端抽象,不能在 CUDA 内核中使用。

您应该重新考虑方法。 push_back 样式的数据附加是一种基本的串行操作,需要在数据并行执行模型中进行某种锁定或原子操作。这几乎总是对 GPU 代码产生负面的性能影响。

关于cuda - 是否可以在 CUDA 内核上使用 push_back 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23103540/

相关文章:

c++ - CUDA 中的全局内存与动态全局内存分配

c - 分析 cublas 应用程序

c++ - CUDA 内核自动调用内核完成 vector 加法。为什么?

types - 在哪里可以找到矢量类型(uchar3、float3、uint2 等)的定义?

c++ - Visual Studio 2017 msvc vs nvcc __cplusplus 宏不匹配

multithreading - 如何管理来自多个 CPU 线程的相同 CUDA 内核调用?

cuda - Thrust::min_element 在 Thrust::device_vector 上发生崩溃(CUDA Thrust)

cuda - 推力收集/过滤

c++ - 推力:如何有意避免将参数传递给算法?

c++ - 在全局范围内拥有 thrust::device_vector