| | |
| | * Copyright 2021 NVIDIA Corporation |
| | * |
| | * Licensed under the Apache License, Version 2.0 (the "License"); |
| | * you may not use this file except in compliance with the License. |
| | * You may obtain a copy of the License at |
| | * |
| | * http://www.apache.org/licenses/LICENSE-2.0 |
| | * |
| | * Unless required by applicable law or agreed to in writing, software |
| | * distributed under the License is distributed on an "AS IS" BASIS, |
| | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| | * See the License for the specific language governing permissions and |
| | * limitations under the License. |
| | */ |
| |
|
| | #pragma once |
| |
|
| | #include <cub/detail/detect_cuda_runtime.cuh> |
| | #include <cub/detail/exec_check_disable.cuh> |
| | #include <cub/util_arch.cuh> |
| | #include <cub/util_namespace.cuh> |
| |
|
| | #include <nv/target> |
| |
|
| | #include <cuda_runtime_api.h> |
| |
|
| | CUB_NAMESPACE_BEGIN |
| |
|
| | namespace detail |
| | { |
| |
|
| | |
| | * Call `cudaDeviceSynchronize()` using the proper API for the current CUB and |
| | * CUDA configuration. |
| | */ |
| | CUB_EXEC_CHECK_DISABLE |
| | CUB_RUNTIME_FUNCTION inline cudaError_t device_synchronize() |
| | { |
| | cudaError_t result = cudaErrorNotSupported; |
| |
|
| | |
| | #if defined(CUB_DETAIL_CDPv1) |
| |
|
| | #if ((__CUDACC_VER_MAJOR__ > 11) || \ |
| | ((__CUDACC_VER_MAJOR__ == 11) && (__CUDACC_VER_MINOR__ >= 6))) |
| | |
| | #define CUB_TMP_DEVICE_SYNC_IMPL \ |
| | result = __cudaDeviceSynchronizeDeprecationAvoidance(); |
| | #else |
| | #define CUB_TMP_DEVICE_SYNC_IMPL result = cudaDeviceSynchronize(); |
| | #endif |
| |
|
| | #else |
| |
|
| | #define CUB_TMP_DEVICE_SYNC_IMPL |
| |
|
| | #endif |
| |
|
| | NV_IF_TARGET(NV_IS_HOST, |
| | (result = cudaDeviceSynchronize();), |
| | (CUB_TMP_DEVICE_SYNC_IMPL)); |
| |
|
| | #undef CUB_TMP_DEVICE_SYNC_IMPL |
| |
|
| | return result; |
| | } |
| |
|
| | } |
| |
|
| | CUB_NAMESPACE_END |
| |
|