[INFRA] Import NVIDIA/CCCL upstream as optimization reference library
CCCL (CUDA C++ Core Libraries) provides: - CUB: device/block/warp-level GPU primitives (reduce, scan, sort, topk) - Thrust: high-level parallel algorithms (transform_reduce, sort, scan) - libcudacxx: CUDA C++ standard library (atomics, barriers, memory) - cudax: experimental features (memory resources, allocators) - Tuning policies: per-SM hardware-specific algorithm parameters Competition optimization vectors mapped to CCCL: - Output TPS (83% weight): warp_reduce, block_reduce, device_topk - Input TPS (14% weight): device_scan, block_load, prefetch - Cache TPS (3% weight): prefix caching strategy patterns - Memory (0.9 util): pooled/cached/buddy allocators Source: https://github.com/NVIDIA/cccl (shallow clone, HEAD only) License: Apache-2.0
This commit is contained in:
67
cccl_upstream/cub/cub/util_macro.cuh
Normal file
67
cccl_upstream/cub/cub/util_macro.cuh
Normal file
@@ -0,0 +1,67 @@
|
||||
// SPDX-FileCopyrightText: Copyright (c) 2011, Duane Merrill. All rights reserved.
|
||||
// SPDX-FileCopyrightText: Copyright (c) 2011-2024, NVIDIA CORPORATION. All rights reserved.
|
||||
// SPDX-License-Identifier: BSD-3
|
||||
|
||||
/******************************************************************************
|
||||
* Common C/C++ macro utilities
|
||||
******************************************************************************/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <cuda/__cccl_config>
|
||||
|
||||
#if defined(_CCCL_IMPLICIT_SYSTEM_HEADER_GCC)
|
||||
# pragma GCC system_header
|
||||
#elif defined(_CCCL_IMPLICIT_SYSTEM_HEADER_CLANG)
|
||||
# pragma clang system_header
|
||||
#elif defined(_CCCL_IMPLICIT_SYSTEM_HEADER_MSVC)
|
||||
# pragma system_header
|
||||
#endif // no system header
|
||||
|
||||
#include <cub/detail/detect_cuda_runtime.cuh> // IWYU pragma: export
|
||||
#include <cub/util_namespace.cuh> // IWYU pragma: export
|
||||
|
||||
CUB_NAMESPACE_BEGIN
|
||||
|
||||
#ifdef _CCCL_DOXYGEN_INVOKED
|
||||
# define CUB_DISABLE_KERNEL_VISIBILITY_WARNING_SUPPRESSION
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @def CUB_DISABLE_KERNEL_VISIBILITY_WARNING_SUPPRESSION
|
||||
* If defined, the default suppression of kernel visibility attribute warning is disabled.
|
||||
*/
|
||||
#if !defined(CUB_DISABLE_KERNEL_VISIBILITY_WARNING_SUPPRESSION)
|
||||
_CCCL_DIAG_SUPPRESS_GCC("-Wattributes")
|
||||
_CCCL_DIAG_SUPPRESS_CLANG("-Wattributes")
|
||||
# if !_CCCL_CUDA_COMPILER(NVHPC)
|
||||
_CCCL_DIAG_SUPPRESS_NVHPC(attribute_requires_external_linkage)
|
||||
# endif // !_CCCL_CUDA_COMPILER(NVHPC)
|
||||
#endif // !CUB_DISABLE_KERNEL_VISIBILITY_WARNING_SUPPRESSION
|
||||
|
||||
#ifndef CUB_DEFINE_KERNEL_GETTER
|
||||
# define CUB_DEFINE_KERNEL_GETTER(name, ...) \
|
||||
_CCCL_HIDE_FROM_ABI CUB_RUNTIME_FUNCTION static constexpr decltype(&__VA_ARGS__) name() \
|
||||
{ \
|
||||
return &__VA_ARGS__; \
|
||||
}
|
||||
#endif
|
||||
|
||||
// TODO(bgruber): drop in CCCL 4.0 when we drop the public dispatchers
|
||||
#ifndef CUB_DEFINE_SUB_POLICY_GETTER
|
||||
# define CUB_DEFINE_SUB_POLICY_GETTER(name) \
|
||||
_CCCL_HOST_DEVICE static constexpr auto name() \
|
||||
{ \
|
||||
return MakePolicyWrapper(typename StaticPolicyT::name##Policy()); \
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(CUB_DEFINE_RUNTIME_POLICIES)
|
||||
# define CUB_DETAIL_STATIC_ISH_ASSERT(expr, msg) _CCCL_ASSERT(expr, msg)
|
||||
# define CUB_DETAIL_CONSTEXPR_ISH
|
||||
#else // ^^^ CUB_DEFINE_RUNTIME_POLICIES ^^^ / vvv !CUB_DEFINE_RUNTIME_POLICIES vvv
|
||||
# define CUB_DETAIL_STATIC_ISH_ASSERT(expr, msg) static_assert(expr, msg);
|
||||
# define CUB_DETAIL_CONSTEXPR_ISH constexpr
|
||||
#endif // !(CUB_DEFINE_RUNTIME_POLICIES)
|
||||
|
||||
CUB_NAMESPACE_END
|
||||
Reference in New Issue
Block a user