OpenACC - 如何查找设备是否忙于执行某些 CUDA 操作?

OpenACC - How to find if device is busy doing some CUDA operations?

我有一个基于 CUDA 的代码,我想将 OpenACC 合并到代码的某些部分。但是,我试图通过 OpenACC 代码并行化的函数有时由 CUDA 调用控制,有时则不受控制。

我的问题是如何查询 OpenACC 库以查看设备是否忙。是否有任何 API 呼吁?

注:我对CUDA不是很熟悉,所以直接用伪代码。

有时,当设备忙于计算时,目标函数 seq_function 会在主机上调用,如下所示。但是,有时它会在设备忙时被调用。

cudaMemAlloc(...);
cudaLaunchAsync(...);
...
//This is the function I am trying to parallelize with OpenACC
seq_function(...); 
...
cudaWait(...);
cudaDealloc(...);

所以,我想让我的目标函数灵活:

有没有办法知道设备是否忙?

我不知道以编程方式获取设备利用率的方法。您可以通过 cudaMemGetInfo 获取内存使用情况,您可以使用它来推断 GPU 上是否存在 运行。