gpt4 book ai didi

c++ - 将 cuda 上下文传递给工作线程

转载 作者:行者123 更新时间:2023-11-30 04:33:25 25 4
gpt4 key购买 nike

我有一些 CUDA 内核,我想在单独的 pthread 中运行。

我基本上必须让每个 pthread 执行,比如说,3 个 cuda 内核,并且它们必须按顺序执行。

我想我会尝试向每个 pthread 传递一个流的引用,这样这 3 个 cuda 内核中的每一个都会在同一个流中按顺序执行。

我可以在 pthread 的不同上下文中使用它,然后它会正常执行内核,但这似乎需要很多开销。

那么如何让每个 pthread 在相同的上下文中与其他 pthreads 同时工作?

谢谢

最佳答案

在 CUDA 4.0 之前,从不同 CPU 线程访问给定上下文的方法是使用 cuCtxPopCurrent()/cuCtxPushCurrent()。上下文一次只能对一个 CPU 线程有效。

在 CUDA 4.0 中,您可以在每个 pthread 中调用 cudaSetDevice(),并且它可以同时为多个线程所用。

内核调用将按接收顺序按上下文序列化,但您可能必须执行 CPU 线程同步以确保工作按所需顺序提交。

关于c++ - 将 cuda 上下文传递给工作线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6878260/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com