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

时间:2016-07-15 17:54:53

标签: cuda gpgpu openacc

我有一个基于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(...);

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

  • 如果设备忙或基于CUDA的计算正在运行=>使用主机。
  • 如果设备 busy =>通过支持OpenACC的代码使用GPU。

有没有办法查找设备是否忙碌?

1 个答案:

答案 0 :(得分:1)

我不知道以编程方式获取设备利用率的方法。您可以通过cudaMemGetInfo获取内存使用量,如果GPU上运行了某些内容,您可以使用它来进行推断。