1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184
//! Defines the constant key names for various Weld properties. //! //! This module is re-exported at the top-level. /// Bytes a single `WeldContext` is allowed to allocate. /// /// If a run allocates more memory than specified by this parameter across *all runs using the /// context*, the run will fail with an `OutOfMemoryError`. /// /// This parameter should be set in a configuration passed to a `WeldContext`. pub const CONF_MEMORY_LIMIT_KEY: &str = "weld.memory.limit"; /// Specifies the number of threads to use during execution. /// /// This parameter should be set in a configuration passed to a `WeldContext`. pub const CONF_THREADS_KEY: &str = "weld.threads"; /// Specifies whether tracing should be enabled when compiling the program. /// /// Tracing will print, during runtime, the internal Weld instruction before executing it. This has /// a very large performance overhead and will print lots of output on large inputs: it should only /// be enabled for debugging (e.g., to identify a crash). /// /// This parameter should be set for compilation. pub const CONF_TRACE_RUN_KEY: &str = "weld.compile.traceExecution"; /// Specifies an ordered list of the optimizations to apply to a Weld program. /// /// This supercedes the default optimization set. /// /// This parameter should be set for compilation. pub const CONF_OPTIMIZATION_PASSES_KEY: &str = "weld.optimization.passes"; /// Enables experimental (unstable) optimizations. /// /// Experimental optimizations may produce adverse effects in certain programs, as they are /// unstable/still being tested. They may also improve the performance of a program, however. /// /// This parameter should be set for compilation. pub const CONF_EXPERIMENTAL_PASSES_KEY: &str = "weld.optimization.applyExperimentalTransforms"; /// Enables internal Sequential IR (SIR) optimizations. /// /// This enables optimizations over the internal "sequential" Weld IR. Certain optimizations are /// easier to apply over this IR, and are thus implemented over the SIR rather than the expression /// tree. /// /// This parameter should be set for compilation. pub const CONF_SIR_OPT_KEY: &str = "weld.optimization.sirOptimization"; /// Set the LLVM optimization level. /// /// This parameter should be set for compilation. pub const CONF_LLVM_OPTIMIZATION_LEVEL_KEY: &str = "weld.llvm.optimization.level"; /// Toggles LLVM loop unrolling. /// /// This parameter should be set for compilation. pub const CONF_LLVM_UNROLLER_KEY: &str = "weld.llvm.optimization.unroller"; /// Toggles LLVM vectorization. /// /// Requires targetPasses to be true to have an effect. /// /// This parameter should be set for compilation. pub const CONF_LLVM_VECTORIZER_KEY: &str = "weld.llvm.optimization.vectorizer"; /// Toggles LLVM target passes. /// /// This parameter should be set for compilation. pub const CONF_LLVM_TARGET_PASSES_KEY: &str = "weld.llvm.optimization.targetPasses"; /// Toggles full module optimizations. /// /// This parameter should be set for compilation. pub const CONF_LLVM_MODULE_OPTS_KEY: &str = "weld.llvm.optimization.moduleOpts"; /// Toggles per-function optimizations. /// /// This parameter should be set for compilation. pub const CONF_LLVM_FUNC_OPTS_KEY: &str = "weld.llvm.optimization.funcOpts"; /// Sets the symbol name of the entry-point function. pub const CONF_LLVM_RUN_FUNC_NAME_KEY: &str = "weld.llvm.runFunctionName"; /// Enables dumping code during compilation. /// /// This will produce several files in the directory specified by `weld.compile.dumpCodeDir`: /// /// * The un-optimized Weld program passed to the compiler /// * THe optimized Weld program. /// * The internal SIR representation of the optimized program. /// * Unoptimized backend code (e.g., LLVM) generated by the Weld backend. /// * Optimized backend code (e.g.,) after LLVM passes. /// * Assembly code for target architecture (e.g,. x64 assembly) /// /// This parameter should be set for compilation. pub const CONF_DUMP_CODE_KEY: &str = "weld.compile.dumpCode"; /// Specifies the directory to dump code into. /// /// This parameter should be set for compilation. pub const CONF_DUMP_CODE_DIR_KEY: &str = "weld.compile.dumpCodeDir"; /// Specifies the filename prefix for dumped code. /// /// This parameter should be set for compilation. pub const CONF_DUMP_CODE_FILENAME_KEY: &str = "weld.compile.dumpCodeFilename"; /// Specifies the formats to dump for dumped code. /// /// This key does not have an explicit default value: if it is not specified, all formats /// are dumped. The possible formats are: /// /// weld,weldopt,llvm,llvmopt,sir,assembly. /// /// This parameter should be set for compilation. pub const CONF_DUMP_CODE_FORMATS_KEY: &str = "weld.compile.dumpCodeFormats"; /// Enables runtime bounds checking for loops before executing them. /// /// This parameter should be set for compilation. pub const CONF_ENABLE_BOUNDS_CHECKS_KEY: &str = "weld.compile.enableBoundsChecks"; /// Default memory limit. pub const CONF_MEMORY_LIMIT_DEFAULT: i64 = 1_000_000_000; /// Default number of threads. pub const CONF_THREADS_DEFAULT: i32 = 1; /// Default setting for SIR optimization. pub const CONF_SIR_OPT_DEFAULT: bool = true; /// Default LLVM optimization level. pub const CONF_LLVM_OPTIMIZATION_LEVEL_DEFAULT: u32 = 2; /// Default LLVM loop unroller setting. pub const CONF_LLVM_UNROLLER_DEFAULT: bool = true; /// Default LLVM loop vectorizer setting. pub const CONF_LLVM_VECTORIZER_DEFAULT: bool = true; /// Default LLVM target analysis passes. pub const CONF_LLVM_TARGET_PASSES_DEFAULT: bool = true; /// Default LLVM module passes setting. pub const CONF_LLVM_MODULE_OPTS_DEFAULT: bool = true; /// Default LLVM function passes setting. pub const CONF_LLVM_FUNC_OPTS_DEFAULT: bool = true; /// Default symbol name for LLVM entry-point function. pub const CONF_LLVM_RUN_FUNC_NAME_DEFAULT: &str = "run"; /// Default setting for whether to dump code. pub const CONF_DUMP_CODE_DEFAULT: bool = false; /// Default setting for whether to trace SIR instructions. pub const CONF_TRACE_RUN_DEFAULT: bool = false; /// Default setting for whether to enable experimental (unstable) optimizations. pub const CONF_EXPERIMENTAL_PASSES_DEFAULT: bool = false; /// Default setting for whether to enable bounds checking. pub const CONF_ENABLE_BOUNDS_CHECKS_DEFAULT: bool = false; /// Default directory for dumping code. pub const CONF_DUMP_CODE_DIR_DEFAULT: &str = "."; /// Default set of optimization passes. pub const CONF_OPTIMIZATION_PASSES_DEFAULT: &[&str] = &[ "inline-zip", "inline-apply", "inline-let", "loop-fusion", "unroll-static-loop", "infer-size", "algebraic", "inline-literals", "cse", "short-circuit-booleans", "predicate", "vectorize", ];