gpt4 book ai didi

cuda - 推力:填充编译错误

转载 作者:行者123 更新时间:2023-12-04 14:55:08 27 4
gpt4 key购买 nike

我需要一些帮助来追踪 thrust::fill 给我的编译错误。

代码没有问题:

line 9   #include <thrust/device_vector.h>                // needed for other thrust stuff
line 10 #include <thrust/fill.h> // not needed (same err w/ or w/o)
.
.
line 389 thrust::device_vector<int> junk(20); // any ol array
line 390 thrust::fill(junk.begin(), junk.end(), (int)0); // the problem line

如果我注释掉“fill”行,它会编译正常。我使用的任何 (raw_pointer, device_vector,..) thrust::fill 命令都会产生此错误。其他 THRUST cmd 编译正常。错误有几页那么长。我不确定错误是什么。 'for_each' 被多次提及。最后一个带有“compute_capability”的是没有意义的,因为它不在我的任何代码中。我尝试添加一堆“#include”文件,但没有任何帮助。

如有任何想法,我们将不胜感激。

In file included from /usr/local/cuda/include/thrust/detail/backend/cuda/for_each.h:54:0,
from /usr/local/cuda/include/thrust/detail/backend/for_each.inl:23,
from /usr/local/cuda/include/thrust/detail/backend/for_each.h:55,
from /usr/local/cuda/include/thrust/detail/for_each.inl:22,
from /usr/local/cuda/include/thrust/for_each.h:91,
from /usr/local/cuda/include/thrust/detail/swap_ranges.inl:25,
from /usr/local/cuda/include/thrust/detail/swap.inl:33,
from /usr/local/cuda/include/thrust/swap.h:127,
from /usr/local/cuda/include/thrust/detail/contiguous_storage.inl:20,
from /usr/local/cuda/include/thrust/detail/contiguous_storage.h:92,
from /usr/local/cuda/include/thrust/detail/uninitialized_array.h:26,
from /usr/local/cuda/include/thrust/detail/backend/cuda/copy_cross_space.inl:20,
from /usr/local/cuda/include/thrust/detail/backend/cuda/copy_cross_space.h:57,
from /usr/local/cuda/include/thrust/detail/backend/cuda/dispatch/copy.h:23,
from /usr/local/cuda/include/thrust/detail/backend/cuda/copy.h:21,
from /usr/local/cuda/include/thrust/detail/backend/dispatch/copy.h:24,
from /usr/local/cuda/include/thrust/detail/backend/copy.inl:20,
from /usr/local/cuda/include/thrust/detail/backend/copy.h:44,
from /usr/local/cuda/include/thrust/detail/copy.inl:20,
from /usr/local/cuda/include/thrust/detail/copy.h:39,
from /usr/local/cuda/include/thrust/detail/reference_base.inl:18,
from /usr/local/cuda/include/thrust/detail/reference_base.h:138,
from /usr/local/cuda/include/thrust/device_reference.h:27,
from /usr/local/cuda/include/thrust/detail/device_ptr.inl:23,
from /usr/local/cuda/include/thrust/device_ptr.h:181,
from /usr/local/cuda/include/thrust/device_malloc_allocator.h:25,
from /usr/local/cuda/include/thrust/device_vector.h:25,
from /home/rrob/workspace/dicol/klm/src/Map.cpp:9:
/usr/local/cuda/include/thrust/detail/backend/cuda/for_each.inl: In function ‘RandomAccessIterator thrust::detail::backend::cuda::for_each_n(RandomAccessIterator, Size, UnaryFunction) [with RandomAccessIterator = thrust::detail::normal_iterator<thrust::device_ptr<int> >, Size = long int, UnaryFunction = thrust::detail::device_generate_functor<thrust::detail::fill_functor<int> >]’:
/usr/local/cuda/include/thrust/detail/backend/for_each.inl:56:63: instantiated from ‘OutputIterator thrust::detail::backend::dispatch::for_each_n(OutputIterator, Size, UnaryFunction, thrust::detail::cuda_device_space_tag) [with OutputIterator = thrust::detail::normal_iterator<thrust::device_ptr<int> >, Size = long int, UnaryFunction = thrust::detail::device_generate_functor<thrust::detail::fill_functor<int> >]’
/usr/local/cuda/include/thrust/detail/backend/for_each.inl:126:62: instantiated from ‘OutputIterator thrust::detail::backend::for_each_n(OutputIterator, Size, UnaryFunction) [with OutputIterator = thrust::detail::normal_iterator<thrust::device_ptr<int> >, Size = long int, UnaryFunction = thrust::detail::device_generate_functor<thrust::detail::fill_functor<int> >]’
/usr/local/cuda/include/thrust/detail/for_each.inl:39:57: instantiated from ‘OutputIterator thrust::detail::for_each_n(OutputIterator, Size, UnaryFunction) [with OutputIterator = thrust::detail::normal_iterator<thrust::device_ptr<int> >, Size = long int, UnaryFunction = thrust::detail::device_generate_functor<thrust::detail::fill_functor<int> >]’
/usr/local/cuda/include/thrust/detail/generate.inl:51:100: instantiated from ‘OutputIterator thrust::generate_n(OutputIterator, Size, Generator) [with OutputIterator = thrust::detail::normal_iterator<thrust::device_ptr<int> >, Size = long int, Generator = thrust::detail::fill_functor<int>]’
/usr/local/cuda/include/thrust/detail/backend/cuda/fill.inl:93:43: instantiated from ‘OutputIterator thrust::detail::backend::cuda::detail::fill_n(OutputIterator, Size, const T&, thrust::detail::false_type) [with OutputIterator = thrust::detail::normal_iterator<thrust::device_ptr<int> >, Size = long int, T = int, thrust::detail::false_type = thrust::detail::integral_constant<bool, false>]’
/usr/local/cuda/include/thrust/detail/backend/cuda/fill.inl:123:64: [ skipping 3 instantiation contexts ]
/usr/local/cuda/include/thrust/detail/backend/fill.inl:93:60: instantiated from ‘OutputIterator thrust::detail::backend::fill_n(OutputIterator, Size, const T&) [with OutputIterator = thrust::detail::normal_iterator<thrust::device_ptr<int> >, Size = long int, T = int]’
/usr/local/cuda/include/thrust/detail/backend/generic/fill.h:51:3: instantiated from ‘void thrust::detail::backend::generic::fill(ForwardIterator, ForwardIterator, const T&) [with ForwardIterator = thrust::detail::normal_iterator<thrust::device_ptr<int> >, T = int]’
/usr/local/cuda/include/thrust/detail/backend/fill.inl:51:3: instantiated from ‘void thrust::detail::backend::dispatch::fill(ForwardIterator, ForwardIterator, const T&, Backend) [with ForwardIterator = thrust::detail::normal_iterator<thrust::device_ptr<int> >, T = int, Backend = thrust::detail::cuda_device_space_tag]’
/usr/local/cuda/include/thrust/detail/backend/fill.inl:83:3: instantiated from ‘void thrust::detail::backend::fill(ForwardIterator, ForwardIterator, const T&) [with ForwardIterator = thrust::detail::normal_iterator<thrust::device_ptr<int> >, T = int]’
/usr/local/cuda/include/thrust/detail/fill.inl:34:3: instantiated from ‘void thrust::fill(ForwardIterator, ForwardIterator, const T&) [with ForwardIterator = thrust::detail::normal_iterator<thrust::device_ptr<int> >, T = int]’
/home/rrob/workspace/dicol/klm/src/Map.cpp:390:49: instantiated from here
/usr/local/cuda/include/thrust/detail/backend/cuda/for_each.inl:96:1: error: invalid application of ‘sizeof’ to incomplete type ‘thrust::detail::STATIC_ASSERTION_FAILURE<false>’
/usr/local/cuda/include/thrust/detail/backend/cuda/for_each.inl: In function ‘RandomAccessIterator thrust::detail::backend::cuda::for_each_n(RandomAccessIterator, Size, UnaryFunction) [with RandomAccessIterator = thrust::device_ptr<int>, Size = long int, UnaryFunction = thrust::detail::device_generate_functor<thrust::detail::fill_functor<int> >]’:
/usr/local/cuda/include/thrust/detail/backend/for_each.inl:56:63: instantiated from ‘OutputIterator thrust::detail::backend::dispatch::for_each_n(OutputIterator, Size, UnaryFunction, thrust::detail::cuda_device_space_tag) [with OutputIterator = thrust::device_ptr<int>, Size = long int, UnaryFunction = thrust::detail::device_generate_functor<thrust::detail::fill_functor<int> >]’
/usr/local/cuda/include/thrust/detail/backend/for_each.inl:126:62: instantiated from ‘OutputIterator thrust::detail::backend::for_each_n(OutputIterator, Size, UnaryFunction) [with OutputIterator = thrust::device_ptr<int>, Size = long int, UnaryFunction = thrust::detail::device_generate_functor<thrust::detail::fill_functor<int> >]’
/usr/local/cuda/include/thrust/detail/backend/generic/for_each.inl:36:84: instantiated from ‘InputIterator thrust::detail::backend::generic::for_each(InputIterator, InputIterator, UnaryFunction) [with InputIterator = thrust::device_ptr<int>, UnaryFunction = thrust::detail::device_generate_functor<thrust::detail::fill_functor<int> >]’
/usr/local/cuda/include/thrust/detail/backend/for_each.inl:91:67: instantiated from ‘InputIterator thrust::detail::backend::dispatch::for_each(InputIterator, InputIterator, UnaryFunction, Space) [with InputIterator = thrust::device_ptr<int>, UnaryFunction = thrust::detail::device_generate_functor<thrust::detail::fill_functor<int> >, Space = thrust::detail::cuda_device_space_tag]’
/usr/local/cuda/include/thrust/detail/backend/for_each.inl:136:61: instantiated from ‘InputIterator thrust::detail::backend::for_each(InputIterator, InputIterator, UnaryFunction) [with InputIterator = thrust::device_ptr<int>, UnaryFunction = thrust::detail::device_generate_functor<thrust::detail::fill_functor<int> >]’
/usr/local/cuda/include/thrust/detail/for_each.inl:48:58: [ skipping 7 instantiation contexts ]
/usr/local/cuda/include/thrust/detail/backend/fill.inl:93:60: instantiated from ‘OutputIterator thrust::detail::backend::fill_n(OutputIterator, Size, const T&) [with OutputIterator = thrust::detail::normal_iterator<thrust::device_ptr<int> >, Size = long int, T = int]’
/usr/local/cuda/include/thrust/detail/backend/generic/fill.h:51:3: instantiated from ‘void thrust::detail::backend::generic::fill(ForwardIterator, ForwardIterator, const T&) [with ForwardIterator = thrust::detail::normal_iterator<thrust::device_ptr<int> >, T = int]’
/usr/local/cuda/include/thrust/detail/backend/fill.inl:51:3: instantiated from ‘void thrust::detail::backend::dispatch::fill(ForwardIterator, ForwardIterator, const T&, Backend) [with ForwardIterator = thrust::detail::normal_iterator<thrust::device_ptr<int> >, T = int, Backend = thrust::detail::cuda_device_space_tag]’
/usr/local/cuda/include/thrust/detail/backend/fill.inl:83:3: instantiated from ‘void thrust::detail::backend::fill(ForwardIterator, ForwardIterator, const T&) [with ForwardIterator = thrust::detail::normal_iterator<thrust::device_ptr<int> >, T = int]’
/usr/local/cuda/include/thrust/detail/fill.inl:34:3: instantiated from ‘void thrust::fill(ForwardIterator, ForwardIterator, const T&) [with ForwardIterator = thrust::detail::normal_iterator<thrust::device_ptr<int> >, T = int]’
/home/rrob/workspace/dicol/klm/src/Map.cpp:390:49: instantiated from here
/usr/local/cuda/include/thrust/detail/backend/cuda/for_each.inl:96:1: error: invalid application of ‘sizeof’ to incomplete type ‘thrust::detail::STATIC_ASSERTION_FAILURE<false>’
/usr/local/cuda/include/thrust/detail/backend/cuda/for_each.inl: In function ‘RandomAccessIterator thrust::detail::backend::cuda::for_each_n(RandomAccessIterator, Size, UnaryFunction) [with RandomAccessIterator = thrust::device_ptr<unsigned int>, Size = long int, UnaryFunction = thrust::detail::device_generate_functor<thrust::detail::fill_functor<unsigned int> >]’:
/usr/local/cuda/include/thrust/detail/backend/for_each.inl:56:63: instantiated from ‘OutputIterator thrust::detail::backend::dispatch::for_each_n(OutputIterator, Size, UnaryFunction, thrust::detail::cuda_device_space_tag) [with OutputIterator = thrust::device_ptr<unsigned int>, Size = long int, UnaryFunction = thrust::detail::device_generate_functor<thrust::detail::fill_functor<unsigned int> >]’
/usr/local/cuda/include/thrust/detail/backend/for_each.inl:126:62: instantiated from ‘OutputIterator thrust::detail::backend::for_each_n(OutputIterator, Size, UnaryFunction) [with OutputIterator = thrust::device_ptr<unsigned int>, Size = long int, UnaryFunction = thrust::detail::device_generate_functor<thrust::detail::fill_functor<unsigned int> >]’
/usr/local/cuda/include/thrust/detail/backend/generic/for_each.inl:36:84: instantiated from ‘InputIterator thrust::detail::backend::generic::for_each(InputIterator, InputIterator, UnaryFunction) [with InputIterator = thrust::device_ptr<unsigned int>, UnaryFunction = thrust::detail::device_generate_functor<thrust::detail::fill_functor<unsigned int> >]’
/usr/local/cuda/include/thrust/detail/backend/for_each.inl:91:67: instantiated from ‘InputIterator thrust::detail::backend::dispatch::for_each(InputIterator, InputIterator, UnaryFunction, Space) [with InputIterator = thrust::device_ptr<unsigned int>, UnaryFunction = thrust::detail::device_generate_functor<thrust::detail::fill_functor<unsigned int> >, Space = thrust::detail::cuda_device_space_tag]’
/usr/local/cuda/include/thrust/detail/backend/for_each.inl:136:61: instantiated from ‘InputIterator thrust::detail::backend::for_each(InputIterator, InputIterator, UnaryFunction) [with InputIterator = thrust::device_ptr<unsigned int>, UnaryFunction = thrust::detail::device_generate_functor<thrust::detail::fill_functor<unsigned int> >]’
/usr/local/cuda/include/thrust/detail/for_each.inl:48:58: [ skipping 7 instantiation contexts ]
/usr/local/cuda/include/thrust/detail/backend/fill.inl:93:60: instantiated from ‘OutputIterator thrust::detail::backend::fill_n(OutputIterator, Size, const T&) [with OutputIterator = thrust::detail::normal_iterator<thrust::device_ptr<int> >, Size = long int, T = int]’
/usr/local/cuda/include/thrust/detail/backend/generic/fill.h:51:3: instantiated from ‘void thrust::detail::backend::generic::fill(ForwardIterator, ForwardIterator, const T&) [with ForwardIterator = thrust::detail::normal_iterator<thrust::device_ptr<int> >, T = int]’
/usr/local/cuda/include/thrust/detail/backend/fill.inl:51:3: instantiated from ‘void thrust::detail::backend::dispatch::fill(ForwardIterator, ForwardIterator, const T&, Backend) [with ForwardIterator = thrust::detail::normal_iterator<thrust::device_ptr<int> >, T = int, Backend = thrust::detail::cuda_device_space_tag]’
/usr/local/cuda/include/thrust/detail/backend/fill.inl:83:3: instantiated from ‘void thrust::detail::backend::fill(ForwardIterator, ForwardIterator, const T&) [with ForwardIterator = thrust::detail::normal_iterator<thrust::device_ptr<int> >, T = int]’
/usr/local/cuda/include/thrust/detail/fill.inl:34:3: instantiated from ‘void thrust::fill(ForwardIterator, ForwardIterator, const T&) [with ForwardIterator = thrust::detail::normal_iterator<thrust::device_ptr<int> >, T = int]’
/home/rrob/workspace/dicol/klm/src/Map.cpp:390:49: instantiated from here
/usr/local/cuda/include/thrust/detail/backend/cuda/for_each.inl:96:1: error: invalid application of ‘sizeof’ to incomplete type ‘thrust::detail::STATIC_ASSERTION_FAILURE<false>’
/usr/local/cuda/include/thrust/detail/backend/cuda/for_each.inl: In function ‘RandomAccessIterator thrust::detail::backend::cuda::for_each_n(RandomAccessIterator, Size, UnaryFunction) [with RandomAccessIterator = thrust::device_ptr<long long unsigned int>, Size = long int, UnaryFunction = thrust::detail::device_generate_functor<thrust::detail::fill_functor<long long unsigned int> >]’:
/usr/local/cuda/include/thrust/detail/backend/for_each.inl:56:63: instantiated from ‘OutputIterator thrust::detail::backend::dispatch::for_each_n(OutputIterator, Size, UnaryFunction, thrust::detail::cuda_device_space_tag) [with OutputIterator = thrust::device_ptr<long long unsigned int>, Size = long int, UnaryFunction = thrust::detail::device_generate_functor<thrust::detail::fill_functor<long long unsigned int> >]’
/usr/local/cuda/include/thrust/detail/backend/for_each.inl:126:62: instantiated from ‘OutputIterator thrust::detail::backend::for_each_n(OutputIterator, Size, UnaryFunction) [with OutputIterator = thrust::device_ptr<long long unsigned int>, Size = long int, UnaryFunction = thrust::detail::device_generate_functor<thrust::detail::fill_functor<long long unsigned int> >]’
/usr/local/cuda/include/thrust/detail/backend/generic/for_each.inl:36:84: instantiated from ‘InputIterator thrust::detail::backend::generic::for_each(InputIterator, InputIterator, UnaryFunction) [with InputIterator = thrust::device_ptr<long long unsigned int>, UnaryFunction = thrust::detail::device_generate_functor<thrust::detail::fill_functor<long long unsigned int> >]’
/usr/local/cuda/include/thrust/detail/backend/for_each.inl:91:67: instantiated from ‘InputIterator thrust::detail::backend::dispatch::for_each(InputIterator, InputIterator, UnaryFunction, Space) [with InputIterator = thrust::device_ptr<long long unsigned int>, UnaryFunction = thrust::detail::device_generate_functor<thrust::detail::fill_functor<long long unsigned int> >, Space = thrust::detail::cuda_device_space_tag]’
/usr/local/cuda/include/thrust/detail/backend/for_each.inl:136:61: instantiated from ‘InputIterator thrust::detail::backend::for_each(InputIterator, InputIterator, UnaryFunction) [with InputIterator = thrust::device_ptr<long long unsigned int>, UnaryFunction = thrust::detail::device_generate_functor<thrust::detail::fill_functor<long long unsigned int> >]’
/usr/local/cuda/include/thrust/detail/for_each.inl:48:58: [ skipping 7 instantiation contexts ]
/usr/local/cuda/include/thrust/detail/backend/fill.inl:93:60: instantiated from ‘OutputIterator thrust::detail::backend::fill_n(OutputIterator, Size, const T&) [with OutputIterator = thrust::detail::normal_iterator<thrust::device_ptr<int> >, Size = long int, T = int]’
/usr/local/cuda/include/thrust/detail/backend/generic/fill.h:51:3: instantiated from ‘void thrust::detail::backend::generic::fill(ForwardIterator, ForwardIterator, const T&) [with ForwardIterator = thrust::detail::normal_iterator<thrust::device_ptr<int> >, T = int]’
/usr/local/cuda/include/thrust/detail/backend/fill.inl:51:3: instantiated from ‘void thrust::detail::backend::dispatch::fill(ForwardIterator, ForwardIterator, const T&, Backend) [with ForwardIterator = thrust::detail::normal_iterator<thrust::device_ptr<int> >, T = int, Backend = thrust::detail::cuda_device_space_tag]’
/usr/local/cuda/include/thrust/detail/backend/fill.inl:83:3: instantiated from ‘void thrust::detail::backend::fill(ForwardIterator, ForwardIterator, const T&) [with ForwardIterator = thrust::detail::normal_iterator<thrust::device_ptr<int> >, T = int]’
/usr/local/cuda/include/thrust/detail/fill.inl:34:3: instantiated from ‘void thrust::fill(ForwardIterator, ForwardIterator, const T&) [with ForwardIterator = thrust::detail::normal_iterator<thrust::device_ptr<int> >, T = int]’
/home/rrob/workspace/dicol/klm/src/Map.cpp:390:49: instantiated from here
/usr/local/cuda/include/thrust/detail/backend/cuda/for_each.inl:96:1: error: invalid application of ‘sizeof’ to incomplete type ‘thrust::detail::STATIC_ASSERTION_FAILURE<false>’
/usr/local/cuda/include/thrust/detail/backend/cuda/arch.h: At global scope:
/usr/local/cuda/include/thrust/detail/backend/cuda/arch.h:90:15: warning: inline function ‘size_t thrust::detail::backend::cuda::arch::compute_capability()’ used but never defined
make[2]: *** [CMakeFiles/Map.dir/Map.cpp.o] Error 1
make[1]: *** [CMakeFiles/Map.dir/all] Error 2
make: *** [all] Error 2

最佳答案

您使用了错误的编译路径,因为您的代码文件扩展名不正确:

make[2]: *** [CMakeFiles/Map.dir/Map.cpp.o] Error 1

解决方案是将文件命名为 Map.cu 而不是 Map.ccp。 .cu 扩展名告诉 nvcc 文件中有设备代码,需要设备编译器轨迹。 thrust::fill 调用内核并引入设备代码,而向量声明仅使用主机编译器可以处理的 API 调用。这就是编译仅在 thrust::fill 调用就位时失败的原因。

关于cuda - 推力:填充编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10804040/

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