Line data Source code
1 0 : // Distributed under the MIT License.
2 : // See LICENSE.txt for details.
3 :
4 : #pragma once
5 :
6 : #include <csignal>
7 :
8 : // Blaze 3.8.2 has a missing include that causes nvcc to fail
9 : // (fixed in https://bitbucket.org/blaze-lib/blaze/pull-requests/63).
10 : // We just include it here to fix the issue.
11 : // NOLINTBEGIN
12 : #include <blaze/util/EnableIf.h>
13 : #include <blaze/math/traits/ReduceTrait.h>
14 : // NOLINTEND
15 :
16 : #ifdef __CUDA_ARCH__
17 : // When building for Nvidia GPUs we need to disable the use of vector
18 : // intrinsics.
19 : #define BLAZE_USE_VECTORIZATION 0
20 : #endif
21 :
22 : #ifdef SPECTRE_DEBUG
23 : #define BLAZE_THROW(EXCEPTION) \
24 : struct sigaction handler {}; \
25 : handler.sa_handler = SIG_IGN; \
26 : handler.sa_flags = 0; \
27 : sigemptyset(&handler.sa_mask); \
28 : sigaction(SIGTRAP, &handler, nullptr); \
29 : raise(SIGTRAP); \
30 : throw EXCEPTION
31 : #else // SPECTRE_DEBUG
32 0 : #define BLAZE_THROW(EXCEPTION)
33 : #endif // SPECTRE_DEBUG
|