Skip to content

Commit 5591c95

Browse files
authored
Added kgen (#12)
- Add `kgen`, and all necessary subroutines within "src\kernel_writer\kernel_write.jl" - Add "math_kernels.jl", which contains working kernels for individual math operations. These are not directly used in `kgen`, but are useful for debugging and testing - Add "string_math_kernels.jl", which contains buffer/string versions of the kernels in "math_kernels.jl". These are used by `kgen` to generate/write new kernels. - Add development example: "even_power_example.jl". This example shows how longer kernels can have faster performance but longer compilation times
1 parent fe56817 commit 5591c95

File tree

8 files changed

+23473
-2
lines changed

8 files changed

+23473
-2
lines changed

Project.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,17 @@
11
name = "SourceCodeMcCormick"
22
uuid = "a7283dc5-4ecf-47fb-a95b-1412723fc960"
33
authors = ["Robert Gottlieb <[email protected]>"]
4-
version = "0.4.1"
4+
version = "0.5.0"
55

66
[deps]
77
CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba"
88
Dates = "ade2ca70-3891-5945-98fb-dc099432e06a"
99
DocStringExtensions = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae"
1010
Graphs = "86223c79-3864-5bf0-83f7-82e725a168b6"
1111
IfElse = "615f187c-cbe4-4ef1-ba3b-2fcf58d6d173"
12+
PrecompileTools = "aea7be01-6a6a-4083-8856-8a6e6704d82a"
1213
Reexport = "189a3867-3050-52da-a836-e630ba90ab69"
14+
StaticArrays = "90137ffa-7385-5640-81b9-e52037218182"
1315
SymbolicUtils = "d1185830-fcd6-423d-90d6-eec64667417b"
1416
Symbolics = "0c5d862f-8b57-4792-8d23-62f2024744c7"
1517

src/SourceCodeMcCormick.jl

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ using IfElse
88
using DocStringExtensions
99
using Graphs
1010
using CUDA
11+
using StaticArrays: @MVector
1112
import Dates
1213
import SymbolicUtils: BasicSymbolic, exprtype, SYM, TERM, ADD, MUL, POW, DIV
1314

@@ -46,12 +47,21 @@ include(joinpath(@__DIR__, "interval", "interval.jl"))
4647
include(joinpath(@__DIR__, "relaxation", "relaxation.jl"))
4748
include(joinpath(@__DIR__, "transform", "transform.jl"))
4849
include(joinpath(@__DIR__, "grad", "grad.jl"))
50+
include(joinpath(@__DIR__, "kernel_writer", "kernel_write.jl"))
51+
include(joinpath(@__DIR__, "precompile.jl"))
52+
_precompile_()
4953

5054
export McCormickIntervalTransform, IntervalTransform
5155

5256
export apply_transform, all_evaluators, convex_evaluator, extract_terms,
5357
genvar, genparam, get_name, factor, binarize!, pull_vars, shrink_eqs,
5458
grad, shrink_grad!, convex_subgradient, all_subgradients, grad_transform!,
55-
levels, eqn_edges, eval_generator, grad_eval_generator, fgen
59+
levels, eqn_edges, eval_generator, grad_eval_generator, fgen, kgen,
60+
perform_substitutions
61+
62+
# export individual kernels
63+
export SCMC_cadd_kernel, SCMC_add_to_kernel, SCMC_negate_kernel, SCMC_exp_kernel,
64+
SCMC_log_kernel, SCMC_inv_kernel, SCMC_cmul_kernel, SCMC_sigmoid_kernel,
65+
SCMC_mult_kernel, SCMC_add_kernel
5666

5767
end

0 commit comments

Comments
 (0)