我在使用rocthrust的scan时编译报错
#include <thrust/scan.h>
#include <iostream>
#define array_size 6
int main()
{
int data[array_size] = {1, 0, 2, 2, 1, 3};
int *data_d;
hipMalloc((void**)&data_d,sizeof(int)*array_size);
hipMemcpy(data_d,data,sizeof(int)*array_size,hipMemcpyHostToDevice);
thrust::exclusive_scan(thrust::device, data_d, data_d+array_size, data_d);
int data_res[array_size];
hipMemcpy(data_res,data_d,sizeof(int)*array_size,hipMemcpyDeviceToHost);
for (int i=0;i<array_size;++i) {
std::cout << data_res[i] << "\n";
}
return 0;
}
编译错误信息如下
这在老版本的rocm编译器上没有问题。对比两个版本的源码,发现这是由于thrust/system/cuda/config.h中加了一句#include <cub/util_namespace.cuh> 导致的。而我自己添加cub后又报了cub版本不匹配的错误。请问有无解决办法?

暂无数据
dtk底层用的 .../thrust/system/hip/config.h,自己添加cub应该不行的,不应该用到thrust/system/cuda/config.h (这个是走cuda的分支)。
我用dtk-22.04.2试了下代码,编译 运行都没有问题呀。是不是编译哪里有问题?
//test_thrust_scan.cpp
#include <hip/hip_runtime.h>
#include <thrust/scan.h>
#include <iostream>
#define array_size 6
int main()
{
int data[array_size] = {1, 0, 2, 2, 1, 3};
int *data_d;
hipMalloc((void**)&data_d,sizeof(int)*array_size);
hipMemcpy(data_d,data,sizeof(int)*array_size,hipMemcpyHostToDevice);
thrust::exclusive_scan(thrust::device, data_d, data_d+array_size, data_d);
int data_res[array_size];
hipMemcpy(data_res,data_d,sizeof(int)*array_size,hipMemcpyDeviceToHost);
for (int i=0;i<array_size;++i) {
std::cout << data_res[i] << "\n";
}
return 0;
}
// 0 1 1 3 5 6