您如何获得与推力执行策略相关的信息流?

时间:2018-12-06 22:40:57

标签: cuda thrust

我希望能够获得与推力执行策略相关联的stream-id。我正在尝试访问this function

我已经尝试过了:

cudaStream_t stream = 0;
auto policy = thrust::cuda::par.on(stream);
cudaStream_t str = stream(policy);

但是我遇到编译错误:

stream.cu(7): error: expression preceding parentheses of apparent call must have (pointer-to-) function type

我可以从中获得一些想法吗?

1 个答案:

答案 0 :(得分:1)

“我正在尝试访问此功能。”尝试直接使用例如detail中的内容是实现的一部分,并且可能从一个版本更改为另一个版本。算一下:您所引用的文件甚至在CUDA 10分发的当前推力中甚至都不存在。

但是,这似乎对我有用:

$ cat t354.cu
#include <thrust/execution_policy.h>
#include <iostream>
#include <cstring>

int main(){
  cudaStream_t mystream;
  cudaStreamCreate(&mystream);
  auto policy = thrust::cuda::par.on(mystream);
  cudaStream_t str = stream(policy);
  for (int i = 0; i < sizeof(cudaStream_t); i++)
    if (  *(reinterpret_cast<unsigned char *>(&mystream)+i) != *(reinterpret_cast<unsigned char *>(&str)+i)) {std::cout << "mismatch" << std::endl; return -1;}
  std::cout << "match" << std::endl;
}
$ nvcc -std=c++11 -o t354 t354.cu
$ cuda-memcheck ./t354
========= CUDA-MEMCHECK
match
========= ERROR SUMMARY: 0 errors
$