我希望能够获得与推力执行策略相关联的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
我可以从中获得一些想法吗?
答案 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
$