调用主机上的推力函子执行多线程
Calling a thrust functor on the host to execute multiple threads
我知道使用 thrust::for_each
和 thrust::host_vector
中的数据调用仿函数具有并行执行策略,但它们实际上是并行执行的吗?
如果不是,调用这些的正确方法是什么?我 运行 所在的系统是虚拟化的,因此所有内核似乎都在同一台机器上?
[编辑]
我知道有 thrust::omp::par
这样的东西,但是,我似乎无法使用 OpenMP 找到完整的 Thrust 示例。
一般来说,在 "host" 上调度的推进操作不是 运行 并行的。他们使用单个主机线程。
如果您想 运行 在 CPU 上并行推进操作(使用多个 CPU 线程),那么推荐的做法是使用 thrust OpenMP 后端。
一个完整的示例是 here。
另一个有效的例子是here。
我知道使用 thrust::for_each
和 thrust::host_vector
中的数据调用仿函数具有并行执行策略,但它们实际上是并行执行的吗?
如果不是,调用这些的正确方法是什么?我 运行 所在的系统是虚拟化的,因此所有内核似乎都在同一台机器上?
[编辑]
我知道有 thrust::omp::par
这样的东西,但是,我似乎无法使用 OpenMP 找到完整的 Thrust 示例。
一般来说,在 "host" 上调度的推进操作不是 运行 并行的。他们使用单个主机线程。
如果您想 运行 在 CPU 上并行推进操作(使用多个 CPU 线程),那么推荐的做法是使用 thrust OpenMP 后端。
一个完整的示例是 here。
另一个有效的例子是here。