BELFEM 0.9.0
Berkeley Lab Finite Element Framework
Loading...
Searching...
No Matches
blaze_config.hpp
Go to the documentation of this file.
1/*
2 * BELFEM -- The Berkeley Lab Finite Element Framework
3 * Copyright (c) 2026, The Regents of the University of California,
4 * through Lawrence Berkeley National Laboratory (subject to receipt of any required
5 * approvals from the U.S. Dept. of Energy). All rights reserved.
6 *
7 * Developers: Christian Messe, Gregory Giard
8 *
9 * See the top-level LICENSE file for the complete license and disclaimer.
10 */
11
12
13#ifndef BELFEM_BLAZE_CONFIG_HPP
14#define BELFEM_BLAZE_CONFIG_HPP
15
16//------------------------------------------------------------------------------
17// DEBUG SETTINGS
18//------------------------------------------------------------------------------
19
20#if !defined( NDEBUG ) || defined( DEBUG )
21#ifndef BLAZE_USER_ASSERTION
22#define BLAZE_USER_ASSERTION 1
23#endif
24#ifndef BLAZE_USE_DEBUG_MODE
25#define BLAZE_USE_DEBUG_MODE 1
26#endif
27#ifndef BLAZE_USE_FUNCTION_TRACES
28#define BLAZE_USE_FUNCTION_TRACES 0
29#endif
30#else
31#ifndef BLAZE_USER_ASSERTION
32#define BLAZE_USER_ASSERTION 0
33#endif
34#ifndef BLAZE_USE_DEBUG_MODE
35#define BLAZE_USE_DEBUG_MODE 0
36#endif
37#ifndef BLAZE_USE_FUNCTION_TRACES
38#define BLAZE_USE_FUNCTION_TRACES 0
39#endif
40#endif
41
42//------------------------------------------------------------------------------
43// PARALLEL MODE
44//------------------------------------------------------------------------------
45
46#ifdef BELFEM_MPI
47#define BLAZE_MPI_PARALLEL_MODE 1
48#else
49#define BLAZE_MPI_PARALLEL_MODE 0
50#endif
51
52//------------------------------------------------------------------------------
53// STORAGE ORDER
54//------------------------------------------------------------------------------
55#define BLAZE_DEFAULT_STORAGE_ORDER blaze::columnMajor
56
57//------------------------------------------------------------------------------
58// BLAS
59//------------------------------------------------------------------------------
60
61#ifdef BELFEM_NETLIB
62#define BLAZE_BLAS_MODE 0
63#elif BELFEM_ACCELLERATE
64#define BLAZE_BLAS_MODE 1
65#define BLAZE_BLAS_INCLUDE_FILE <vecLib/cblas.h>
66#elif BELFEM_MKL
67#define BLAZE_BLAS_MODE 1
68#define BLAZE_BLAS_INCLUDE_FILE <mkl_cblas.h>
69#endif
70
71#if !defined( BLAZE_BLAS_MODE )
72#define BLAZE_BLAS_MODE 1
73#endif
74
75// keep Blaze's BLAS integer in sync with belfem::int_t ( SCLS builds all
76// third party libraries with one consistent integer width ); without this,
77// blaze::blas_int_t stays 32 bit under an ILP64 build and the static_assert
78// in lapacktools.hpp fires
79#ifdef BELFEM_INT64
80#define BLAZE_BLAS_IS_64BIT 1
81#endif
82
83//------------------------------------------------------------------------------
84// COMPILER
85//------------------------------------------------------------------------------
86
87#ifdef BELFEM_CLANG
88#define _BLAZE_SYSTEM_COMPILER_H_
89#define BLAZE_GNU_COMPILER 0
90#define BLAZE_CLANG_COMPILER 1
91#define BLAZE_MSC_COMPILER 0
92#define BLAZE_INTEL_COMPILER 0
93#elif BELFEM_GCC
94#define _BLAZE_SYSTEM_COMPILER_H_
95#define BLAZE_GNU_COMPILER 1
96#define BLAZE_CLANG_COMPILER 0
97#define BLAZE_MSC_COMPILER 0
98#define BLAZE_INTEL_COMPILER 0
99#elif BELFEM_INTEL
100#define _BLAZE_SYSTEM_COMPILER_H_
101#define BLAZE_GNU_COMPILER 0
102#define BLAZE_CLANG_COMPILER 0
103#define BLAZE_MSC_COMPILER 0
104#define BLAZE_INTEL_COMPILER 1
105#endif
106#include <blaze/util/typetraits/HasSize.h>
107//------------------------------------------------------------------------------
108
109#endif //BELFEM_BLAZE_CONFIG_HPP