| //===------------ option.h - NVPTX OpenMP GPU options ------------ CUDA -*-===// |
| // |
| // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
| // See https://llvm.org/LICENSE.txt for license information. |
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| // |
| //===----------------------------------------------------------------------===// |
| // |
| // GPU default options |
| // |
| //===----------------------------------------------------------------------===// |
| #ifndef _OPTION_H_ |
| #define _OPTION_H_ |
| |
| #include "interface.h" |
| |
| //////////////////////////////////////////////////////////////////////////////// |
| // Kernel options |
| //////////////////////////////////////////////////////////////////////////////// |
| |
| //////////////////////////////////////////////////////////////////////////////// |
| // The following def must match the absolute limit hardwired in the host RTL |
| // max number of threads per team |
| #define MAX_THREADS_PER_TEAM 1024 |
| |
| #define WARPSIZE 32 |
| |
| // The named barrier for active parallel threads of a team in an L1 parallel |
| // region to synchronize with each other. |
| #define L1_BARRIER (1) |
| |
| // Maximum number of preallocated arguments to an outlined parallel/simd function. |
| // Anything more requires dynamic memory allocation. |
| #define MAX_SHARED_ARGS 20 |
| |
| // Maximum number of omp state objects per SM allocated statically in global |
| // memory. |
| #if __CUDA_ARCH__ >= 700 |
| #define OMP_STATE_COUNT 32 |
| #define MAX_SM 84 |
| #elif __CUDA_ARCH__ >= 600 |
| #define OMP_STATE_COUNT 32 |
| #define MAX_SM 56 |
| #else |
| #define OMP_STATE_COUNT 16 |
| #define MAX_SM 16 |
| #endif |
| |
| #define OMP_ACTIVE_PARALLEL_LEVEL 128 |
| |
| //////////////////////////////////////////////////////////////////////////////// |
| // algo options |
| //////////////////////////////////////////////////////////////////////////////// |
| |
| //////////////////////////////////////////////////////////////////////////////// |
| // misc options (by def everythig here is device) |
| //////////////////////////////////////////////////////////////////////////////// |
| |
| #define INLINE __forceinline__ __device__ |
| #define NOINLINE __noinline__ __device__ |
| #ifndef TRUE |
| #define TRUE 1 |
| #endif |
| #ifndef FALSE |
| #define FALSE 0 |
| #endif |
| |
| #endif |