CUDA-9.2 尝试调整 thrust::complex<float> 的 device_vector 大小时推力编译失败?
CUDA-9.2 Thrust compilation failure when trying to resize a device_vector of thrust::complex<float>?
简单示例,在标题为 test.cu:
的文件中
#include <thrust/complex.h>
#include <thrust/device_vector.h>
#include <iostream>
int main(void) {
thrust::device_vector<thrust::complex<float> > V1(10);
V1.resize(20);
printf("%d\n", V1.size());
}
尝试使用 nvcc 构建上述内容失败,从 complex.inl(187) 开始出现大量推力错误:错误:没有重载函数的实例 "thrust::complex::real [with T=float]" 与参数列表匹配。但是,我可以确认 thrust/complex.h header 文件包含一个模板化的 real() 方法,它以 __host__
和 __device__
.[=16= 开头]
使用 host_vector 而不是 device_vector,代码编译并运行并获得预期结果。从 CUDA-9.2 开始,这只是一个不受支持的功能吗?
听起来这个问题在 CUDA-9 中可以重现,但在 CUDA-10 中已解决。我就升级
简单示例,在标题为 test.cu:
的文件中#include <thrust/complex.h>
#include <thrust/device_vector.h>
#include <iostream>
int main(void) {
thrust::device_vector<thrust::complex<float> > V1(10);
V1.resize(20);
printf("%d\n", V1.size());
}
尝试使用 nvcc 构建上述内容失败,从 complex.inl(187) 开始出现大量推力错误:错误:没有重载函数的实例 "thrust::complex::real [with T=float]" 与参数列表匹配。但是,我可以确认 thrust/complex.h header 文件包含一个模板化的 real() 方法,它以 __host__
和 __device__
.[=16= 开头]
使用 host_vector 而不是 device_vector,代码编译并运行并获得预期结果。从 CUDA-9.2 开始,这只是一个不受支持的功能吗?
听起来这个问题在 CUDA-9 中可以重现,但在 CUDA-10 中已解决。我就升级