【发布时间】:2016-11-19 00:51:39
【问题描述】:
我有一个基于 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 的计算 => 使用主机。
- 如果设备不忙碌 => 通过启用 OpenACC 的代码使用 GPU。
有没有办法查看设备是否忙?
【问题讨论】: