Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[DO NOT MERGE] Testing LLVM CI config #411

Draft
wants to merge 3 commits into
base: dev
Choose a base branch
from

Commits on Dec 20, 2023

  1. Fix error compiling tuple_size in clang 17.

    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]>
    AustinSchuh committed Dec 20, 2023
    Configuration menu
    Copy the full SHA
    e5c9282 View commit details
    Browse the repository at this point in the history
  2. Make member access explicitly qualified for clang 17

    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]>
    AustinSchuh committed Dec 20, 2023
    Configuration menu
    Copy the full SHA
    8c9798b View commit details
    Browse the repository at this point in the history
  3. Add llvm config in CI

    sleeepyjack committed Dec 20, 2023
    Configuration menu
    Copy the full SHA
    ef3bc7f View commit details
    Browse the repository at this point in the history