4#if defined(__INTELLISENSE__) && !defined(OPENNN_HAS_CUDA)
8#ifndef EIGEN_USE_THREADS
9#define EIGEN_USE_THREADS
12#define EIGEN_MAX_ALIGN_BYTES 64
19#define _SILENCE_CXX17_ITERATOR_BASE_CLASS_DEPRECATION_WARNING
20#define _CRT_SECURE_NO_WARNINGS
21#define EIGEN_PERMANENTLY_DISABLE_STUPID_WARNINGS
22#define _SILENCE_EXPERIMENTAL_FILESYSTEM_DEPRECATION_WARNING
28#include <source_location>
46#include <unordered_map>
47#include <unordered_set>
62#include <unsupported/Eigen/CXX11/Tensor>
63#include <Eigen/src/Core/util/DisableStupidWarnings.h>
68#include <cuda_runtime.h>
75#include <nvtx3/nvToolsExt.h>
119#ifdef OPENNN_HAS_CUDA
121#include "../opennn/kernel.cuh"
124void check_cuda_status(T status,
const char* msg,
125 std::source_location loc = std::source_location::current())
130 throw std::runtime_error(std::string(msg) +
" Error: " + std::to_string(
static_cast<int>(status)) +
131 " in " + loc.file_name() +
":" + std::to_string(loc.line()));
134#define CHECK_CUDA(x) check_cuda_status(x, "CUDA")
135#define CHECK_CUBLAS(x) check_cuda_status(x, "CuBLAS")
136#define CHECK_CUDNN(x) check_cuda_status(x, "cuDNN")
141using namespace Eigen;
147inline void throw_if(
bool condition,
const string& message,
148 const source_location& loc = source_location::current())
151 throw runtime_error(std::format(
"{} [at {}:{}]",
152 message, loc.file_name(), loc.line()));
155constexpr float EPSILON = numeric_limits<float>::epsilon();
156constexpr float MAX = numeric_limits<float>::max();
158constexpr float QUIET_NAN = numeric_limits<float>::quiet_NaN();
165 for (
size_t i = 0; i < vec.size(); ++i)
168 if (i + 1 < vec.size()) os <<
"; ";
177using MatrixR = Matrix<float, Dynamic, Dynamic, Layout>;
178using MatrixI = Matrix<Index, Dynamic, Dynamic, Layout>;
179using MatrixB = Matrix<bool, Dynamic, Dynamic, Layout>;
188using Tensor0 = Tensor<float, 0, Layout | AlignedMax>;
189using Tensor2 = Tensor<float, 2, Layout | AlignedMax>;
190using Tensor3 = Tensor<float, 3, Layout | AlignedMax>;
191using Tensor4 = Tensor<float, 4, Layout | AlignedMax>;
194using TensorR = Tensor<float, Rank, Layout | AlignedMax>;
196using TensorMap2 = TensorMap<Tensor<float, 2, Layout | AlignedMax>, AlignedMax>;
197using TensorMap3 = TensorMap<Tensor<float, 3, Layout | AlignedMax>, AlignedMax>;
198using TensorMap4 = TensorMap<Tensor<float, 4, Layout | AlignedMax>, AlignedMax>;
201using TensorMapR = TensorMap<Tensor<float, Rank, Layout | AlignedMax>, AlignedMax>;
203#pragma GCC diagnostic push
204#pragma GCC diagnostic ignored "-Wunused-parameter"
206#pragma GCC diagnostic pop
Definition adaptive_moment_estimation.h:14
constexpr float MAX
Definition pch.h:156
constexpr float NEG_INFINITY
Definition pch.h:157
constexpr float EPSILON
Definition pch.h:155
constexpr float SOFTMAX_MASK_VALUE
Definition pch.h:159
void throw_if(bool condition, const string &message, const source_location &loc=source_location::current())
Definition pch.h:147
constexpr float QUIET_NAN
Definition pch.h:158
ostream & operator<<(ostream &os, const vector< T > &vec)
Definition pch.h:162
__nv_bfloat16 bfloat16
Definition pch.h:145
cudnnTensorStruct * cudnnTensorDescriptor_t
Definition pch.h:109
Map< VectorR, AlignedMax > VectorMap
Definition pch.h:185
TensorMap< Tensor< float, Rank, Layout|AlignedMax >, AlignedMax > TensorMapR
Definition pch.h:201
void * cudnnHandle_t
Definition pch.h:86
Tensor< float, 3, Layout|AlignedMax > Tensor3
Definition pch.h:190
void * cudaEvent_t
Definition pch.h:83
Matrix< float, Dynamic, 1 > VectorR
Definition pch.h:181
void * cudaStream_t
Definition pch.h:82
cudnnConvolutionFwdAlgo_t
Definition pch.h:103
@ CUDNN_CONVOLUTION_FWD_ALGO_IMPLICIT_GEMM
Definition pch.h:103
Matrix< bool, Dynamic, 1 > VectorB
Definition pch.h:183
void * cudnnFilterDescriptor_t
Definition pch.h:110
cudaDataType_t
Definition pch.h:93
@ CUDA_R_32F
Definition pch.h:93
@ CUDA_R_16F
Definition pch.h:93
@ CUDA_R_8I
Definition pch.h:93
@ CUDA_R_32I
Definition pch.h:93
@ CUDA_R_16BF
Definition pch.h:93
Tensor< float, Rank, Layout|AlignedMax > TensorR
Definition pch.h:194
Tensor< float, 2, Layout|AlignedMax > Tensor2
Definition pch.h:189
TensorMap< Tensor< float, 4, Layout|AlignedMax >, AlignedMax > TensorMap4
Definition pch.h:198
void * cublasLtHandle_t
Definition pch.h:85
cudnnActivationMode_t
Definition pch.h:100
@ CUDNN_ACTIVATION_RELU
Definition pch.h:100
@ CUDNN_ACTIVATION_SIGMOID
Definition pch.h:100
@ CUDNN_ACTIVATION_TANH
Definition pch.h:100
@ CUDNN_ACTIVATION_IDENTITY
Definition pch.h:100
@ CUDNN_ACTIVATION_ELU
Definition pch.h:100
void * cudnnOpTensorDescriptor_t
Definition pch.h:115
Matrix< Index, Dynamic, Dynamic, Layout > MatrixI
Definition pch.h:178
cudnnPoolingMode_t
Definition pch.h:101
@ CUDNN_POOLING_MAX
Definition pch.h:101
Tensor< float, 0, Layout|AlignedMax > Tensor0
Definition pch.h:188
void * cudnnDropoutDescriptor_t
Definition pch.h:114
cublasLtEpilogue_t
Definition pch.h:96
@ CUBLASLT_EPILOGUE_BIAS
Definition pch.h:96
@ CUBLASLT_EPILOGUE_RELU_BIAS
Definition pch.h:96
@ CUBLASLT_EPILOGUE_DEFAULT
Definition pch.h:96
void * cublasHandle_t
Definition pch.h:84
cublasOperation_t
Definition pch.h:95
@ CUBLAS_OP_N
Definition pch.h:95
@ CUBLAS_OP_T
Definition pch.h:95
cudnnDataType_t
Definition pch.h:99
@ CUDNN_DATA_INT32
Definition pch.h:99
@ CUDNN_DATA_BFLOAT16
Definition pch.h:99
@ CUDNN_DATA_HALF
Definition pch.h:99
@ CUDNN_DATA_INT8
Definition pch.h:99
@ CUDNN_DATA_FLOAT
Definition pch.h:99
Matrix< bool, Dynamic, Dynamic, Layout > MatrixB
Definition pch.h:179
void * cudnnPoolingDescriptor_t
Definition pch.h:112
cudnnConvolutionBwdDataAlgo_t
Definition pch.h:104
@ CUDNN_CONVOLUTION_BWD_DATA_ALGO_0
Definition pch.h:104
cudnnBatchNormMode_t
Definition pch.h:102
@ CUDNN_BATCHNORM_PER_ACTIVATION
Definition pch.h:102
Matrix< float, Dynamic, Dynamic, Layout > MatrixR
Definition pch.h:177
TensorMap< Tensor< float, 2, Layout|AlignedMax >, AlignedMax > TensorMap2
Definition pch.h:196
Matrix< Index, Dynamic, 1 > VectorI
Definition pch.h:182
Map< MatrixR, Layout|AlignedMax > MatrixMap
Definition pch.h:186
void * cudnnActivationDescriptor_t
Definition pch.h:113
void * cudnnConvolutionDescriptor_t
Definition pch.h:111
constexpr int Layout
Definition pch.h:175
TensorMap< Tensor< float, 3, Layout|AlignedMax >, AlignedMax > TensorMap3
Definition pch.h:197
Tensor< float, 4, Layout|AlignedMax > Tensor4
Definition pch.h:191
cudnnConvolutionBwdFilterAlgo_t
Definition pch.h:105
@ CUDNN_CONVOLUTION_BWD_FILTER_ALGO_0
Definition pch.h:105
cublasComputeType_t
Definition pch.h:94
@ CUBLAS_COMPUTE_32F_FAST_TF32
Definition pch.h:94
@ CUBLAS_COMPUTE_32F
Definition pch.h:94
@ CUBLAS_COMPUTE_32F_FAST_16BF
Definition pch.h:94