0

cudaEventRecord将事件 ID 和流 ID 作为参数。运行时 API 参考并没有说明是否需要将流与当前设备关联 - 我无法测试是否是这种情况,因为我现在可以访问的任何系统上最多只有一个 GPU。

假设它必须是当前设备上的流:

  • 如果它在另一台设备上获得流会发生什么?

假设它可以是任何设备上的流:

  • 当它获得(当前设备的)默认流的 ID 时会发生什么?毕竟,所有设备的默认流都具有相同的(空)ID?
  • 基于流的设备是否是最新的,行为是否有任何差异?
4

1 回答 1

1

结合@Talonmies 的回答和@RobertCrovella 在他的评论中链接到的CUDA C 编程指南的流和事件行为部分的信息。

流必须与当前设备相关联吗?

,它可以是任何设备。但是,事件记录确实要求流和事件与同一设备相关联。

基于流的设备是否是最新的,行为是否有任何差异?

通常,不,但是...

当它获得(当前设备的)默认流的 ID 时会发生什么?

...默认流是该规则的一个例外。由于(每个设备自己的)默认流具有相同的 ID,因此将空 ID 传递给cudaEventRecord意味着它将检查当前设置的设备以确定在哪个流上记录事件(并且这需要与事件关联的设备相同和)。

于 2016-11-18T14:50:29.430 回答