Skip to content

Conversation

@sleeepyjack
Copy link
Collaborator

No description provided.

Clang complains:

  In file included from cuco/static_map.cuh:24:
  In file included from cuco/pair.cuh:147:
  In file included from cuco/detail/pair/pair.inl:54:
  cuco/detail/pair/tuple_helpers.inl:18:8: error:
        cannot specialize a dependent template
     18 | struct tuple_size<cuco::pair<T1, T2>> : integral_constant<size_t, 2> {
        |        ^
  cuco/detail/pair/tuple_helpers.inl:22:8: error:
        cannot specialize a dependent template
     22 | struct tuple_size<const cuco::pair<T1, T2>> : tuple_size<cuco::pair<T1, T2>> {
        |        ^
  cuco/detail/pair/tuple_helpers.inl:26:8: error:
        cannot specialize a dependent template
     26 | struct tuple_size<volatile cuco::pair<T1, T2>> : tuple_size<cuco::pair<T1, T2>> {
        |        ^
  cuco/detail/pair/tuple_helpers.inl:30:8: error:
        cannot specialize a dependent template
     30 | struct tuple_size<const volatile cuco::pair<T1, T2>> : tuple_size<cuco::pair<T1, T2>> {
        |        ^
  cuco/detail/pair/tuple_helpers.inl:34:8: error:
        cannot specialize a dependent template
     34 | struct tuple_element<I, cuco::pair<T1, T2>> {
        |        ^
  cuco/detail/pair/tuple_helpers.inl:39:8: error:
        cannot specialize a dependent template
     39 | struct tuple_element<0, cuco::pair<T1, T2>> {
        |        ^
  cuco/detail/pair/tuple_helpers.inl:44:8: error:
        cannot specialize a dependent template
     44 | struct tuple_element<1, cuco::pair<T1, T2>> {
        |        ^
  cuco/detail/pair/tuple_helpers.inl:49:8: error:
        cannot specialize a dependent template
     49 | struct tuple_element<0, const cuco::pair<T1, T2>> : tuple_element<0, cuco::pair<T1, T2>> {
        |        ^
  cuco/detail/pair/tuple_helpers.inl:53:8: error:
        cannot specialize a dependent template
     53 | struct tuple_element<1, const cuco::pair<T1, T2>> : tuple_element<1, cuco::pair<T1, T2>> {
        |        ^
  cuco/detail/pair/tuple_helpers.inl:57:8: error:
        cannot specialize a dependent template
     57 | struct tuple_element<0, volatile cuco::pair<T1, T2>> : tuple_element<0, cuco::pair<T1, T2>> {
        |        ^
  cuco/detail/pair/tuple_helpers.inl:61:8: error:
        cannot specialize a dependent template
     61 | struct tuple_element<1, volatile cuco::pair<T1, T2>> : tuple_element<1, cuco::pair<T1, T2>> {
        |        ^
  cuco/detail/pair/tuple_helpers.inl:65:8: error:
        cannot specialize a dependent template
     65 | struct tuple_element<0, const volatile cuco::pair<T1, T2>> : tuple_element<0, cuco::pair<T1, T2>> {
        |        ^
  cuco/detail/pair/tuple_helpers.inl:69:8: error:
        cannot specialize a dependent template
     69 | struct tuple_element<1, const volatile cuco::pair<T1, T2>> : tuple_element<1, cuco::pair<T1, T2>> {
        |        ^

If we dig in, include/cuco/detail/pair/pair.inl is trying to teach
tuple_size and tuple_element to work with cuco::pair's.

thrust/pair.h defines thrust::tuple_size to be:

  template <class T>
  using tuple_size = ::cuda::std::tuple_size<T>;

This is a using statement, not a class.  So, we only need to teach
cuda::std::{tuple_size, tuple_element} how to work with cuco::pair, not
thrust::{tuple_size, tuple_element}.

Signed-off-by: Austin Schuh <[email protected]>
Clang complains:

  external/com_github_nvidia_cuco/include/cuco/detail/static_map.inl:446:21: error:
        explicit qualification required to use member 'initial_slot' from dependent base class
    446 |   auto current_slot{initial_slot(insert_pair.first, hash)};
        |                     ^
  frc971/orin/cuda.cc:219:32: note: in instantiation of function template
        specialization 'cuco::static_map<unsigned long, unsigned
        long>::device_mutable_view::insert_and_find<cuco::detail::XXHash_32<unsigned long>,
        thrust::equal_to<unsigned long>>' requested here
    219 |   auto [iter, inserted] = view.insert_and_find(thrust::make_pair(union_markers[i], 1));
        |                                ^

Signed-off-by: Austin Schuh <[email protected]>
@copy-pr-bot
Copy link

copy-pr-bot bot commented Dec 20, 2023

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

@sleeepyjack
Copy link
Collaborator Author

/ok to test

@sleeepyjack
Copy link
Collaborator Author

/ok to test

@sleeepyjack
Copy link
Collaborator Author

/ok to test

@sleeepyjack
Copy link
Collaborator Author

/ok to test

@PointKernel
Copy link
Member

Closing as LLVM CI is up

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants