gpt4 book ai didi

c++ - 在 curand_kernel.h 之前包含 thrust/sort.h 会产生编译错误

转载 作者:太空狗 更新时间:2023-10-29 20:59:57 25 4
gpt4 key购买 nike

这段代码编译得很好:

#include <curand_kernel.h>
#include <thrust/sort.h>

int main(void) {
return 0;
}

虽然这会产生编译错误:

#include <thrust/sort.h>
#include <curand_kernel.h>

int main(void) {
return 0;
}

CUDA 6 给我三个错误:

... curand_mtgp32_kernel.h(315): error: calling a __device__ function("__syncthreads") from a __host__ __device__ function("curand_mtgp32_single") is not allowed

... include/curand_mtgp32_kernel.h(373): error: calling a __device__ function("__syncthreads") from a __host__ __device__ function("curand_mtgp32_single_specific") is not allowed

... curand_kernel.h(392): warning: missing return statement at end of non-void function "__curand_uint32_as_float"

在 CUDA 5 上我只得到:

... curand_kernel.h(405): warning: missing return statement at end of non-void function "__curand_uint32_as_float"

其中“...”是我的 CUDA 安装目录。似乎所有这些区域都包含在宏中,用于测试是否定义了 __CUDA_ARCH__,或者它的值是什么。我看到这个问题 sort.h,而不是我包括的各种其他推力 header (主机/设备 vector 、扫描、分散+收集和一些花哨的迭代器).

鉴于这种行为,我不能(轻松而明智地)使我当前项目中的所有 header 自给自足。 任何人都可以向我解释为什么顺序在这里很重要,或者它是否是这些 header 之一的错误或“功能”?

最佳答案

这是一个已知问题(实际上是 2 个不同的问题)。它被确定为太接近 CUDA 6 版本,无法在 CUDA 6 中修复。

它应该会在未来的版本中修复。

与此同时,您应该能够通过颠倒这些头文件的包含顺序来解决这个问题,或者您可以尝试更新到当前的 Thrust master branch。 .

关于c++ - 在 curand_kernel.h 之前包含 thrust/sort.h 会产生编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23352122/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com