Skip to content

Commit 2f49b0b

Browse files
feat: remove write to wasm, remove rayon as default feature (#52)
1 parent 5fdcda1 commit 2f49b0b

File tree

4 files changed

+40
-35
lines changed

4 files changed

+40
-35
lines changed

.github/workflows/ci.yml

Lines changed: 26 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ jobs:
2424
- run: cargo fmt --all -- --check
2525

2626
unit-tests:
27-
name: Tests - ${{ matrix.os }} - ${{ matrix.toolchain }} - ${{ matrix.llvm[0] }}
27+
name: Tests - ${{ matrix.os }} - ${{ matrix.toolchain }} - ${{ matrix.llvm[0] }} - ${{ matrix.features }}
2828
runs-on: ${{ matrix.os }}
2929
strategy:
3030
matrix:
@@ -37,13 +37,17 @@ jobs:
3737
- stable
3838
os:
3939
- ubuntu-latest
40+
features:
41+
- "rayon cranelift"
4042
include:
4143
- toolchain: stable
4244
os: windows-latest
4345
llvm: ""
46+
features: "rayon cranelift"
4447
- toolchain: stable
4548
os: macos-latest
4649
llvm: ["16.0", "16-0"]
50+
features: "rayon cranelift"
4751
#- toolchain: stable
4852
# os: ubuntu-24.04-arm
4953
# llvm: ["16.0", "16-0"]
@@ -53,9 +57,24 @@ jobs:
5357
- toolchain: beta
5458
os: ubuntu-latest
5559
llvm: ["16.0", "16-0"]
60+
features: "rayon cranelift"
5661
- toolchain: nightly
5762
os: ubuntu-latest
5863
llvm: ["16.0", "16-0"]
64+
features: "rayon cranelift"
65+
- toolchain: stable
66+
os: ubuntu-latest
67+
llvm: ""
68+
features: ""
69+
- toolchain: stable
70+
os: ubuntu-latest
71+
llvm: ""
72+
features: "rayon"
73+
- toolchain: stable
74+
os: ubuntu-latest
75+
llvm: ""
76+
features: "cranelift"
77+
5978

6079

6180
steps:
@@ -67,14 +86,14 @@ jobs:
6786
path: |
6887
${{ env.CARGO_HOME }}
6988
target
70-
key: unit-test-${{ runner.os }}-${{ matrix.toolchain}}-${{ matrix.llvm }}
89+
key: unit-test-${{ runner.os }}-${{ matrix.toolchain}}-${{ matrix.llvm }}-${{ matrix.features }}
7190
- name: Set up Rust
7291
run: rustup default ${{ matrix.toolchain }} && rustup update ${{ matrix.toolchain }} --no-self-update && rustup component add clippy rust-docs
7392
- name: Rust version
7493
run: rustc -Vv
7594
- name: Install LLVM and Clang
7695
uses: KyleMayes/install-llvm-action@v2
77-
if : matrix.os == 'ubuntu-latest' || matrix.os == 'macos-latest' || matrix.os == 'ubuntu-24.04-arm'
96+
if : matrix.llvm != '' && (matrix.os == 'ubuntu-latest' || matrix.os == 'macos-latest' || matrix.os == 'ubuntu-24.04-arm')
7897
with:
7998
version: ${{ matrix.llvm[0] }}
8099
- name: Install LLVM 16 (macos-13)
@@ -83,16 +102,16 @@ jobs:
83102
brew install llvm@16
84103
- name: Run tests (LLVM)
85104
if : matrix.llvm != ''
86-
run: cargo test --verbose --features llvm${{ matrix.llvm[1] }} --features cranelift
105+
run: cargo test --verbose --features llvm${{ matrix.llvm[1] }} --features "${{ matrix.features }}"
87106
- name: Run tests
88107
if : matrix.llvm == ''
89-
run: cargo test --verbose --features cranelift
108+
run: cargo test --verbose --features "${{ matrix.features }}"
90109
- name: Run Clippy (LLVM)
91110
if: matrix.toolchain == 'nightly'
92-
run: cargo clippy --verbose --features llvm${{ matrix.llvm[1] }} --features cranelift
111+
run: cargo clippy --verbose --features llvm${{ matrix.llvm[1] }} --features "${{ matrix.features }}"
93112
- name: Run Docs (LLVM)
94113
if: matrix.toolchain == 'nightly'
95-
run: cargo rustdoc --features llvm${{ matrix.llvm[1] }} --features cranelift
114+
run: cargo rustdoc --features llvm${{ matrix.llvm[1] }} --features "${{ matrix.features }}"
96115
book:
97116
runs-on: ubuntu-latest
98117
steps:

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ repository = "https://github.com/martinjrobins/diffsl"
1111
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
1212

1313
[features]
14-
default = ["rayon"]
14+
default = []
1515
llvm15-0 = ["inkwell-150", "llvm-sys-150", "llvm", "enzyme"]
1616
llvm16-0 = ["inkwell-160", "llvm-sys-160", "llvm", "enzyme"]
1717
llvm17-0 = ["inkwell-170", "llvm-sys-170", "llvm", "enzyme"]

src/execution/compiler.rs

Lines changed: 9 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,7 @@ impl<M: CodegenModule> Compiler<M> {
257257
}
258258
}
259259

260+
#[cfg(feature = "rayon")]
260261
fn with_threading<F>(&self, f: F)
261262
where
262263
F: Fn(u32, u32) + Sync + Send,
@@ -278,7 +279,13 @@ impl<M: CodegenModule> Compiler<M> {
278279
} else {
279280
f(0, 1);
280281
}
281-
#[cfg(not(feature = "rayon"))]
282+
}
283+
284+
#[cfg(not(feature = "rayon"))]
285+
fn with_threading<F>(&self, f: F)
286+
where
287+
F: Fn(u32, u32),
288+
{
282289
f(0, 1);
283290
}
284291

@@ -864,15 +871,11 @@ impl<M: CodegenModule> Compiler<M> {
864871
mod tests {
865872
use crate::{
866873
discretise::DiscreteModel,
867-
execution::module::{
868-
CodegenModule, CodegenModuleCompile, CodegenModuleEmit, CodegenModuleJit,
869-
},
874+
execution::module::{CodegenModule, CodegenModuleCompile, CodegenModuleJit},
870875
parser::parse_ds_string,
871876
Compiler,
872877
};
873878
use approx::assert_relative_eq;
874-
use std::io::Write;
875-
use target_lexicon::triple;
876879

877880
use super::CompilerMode;
878881

@@ -1096,24 +1099,6 @@ mod tests {
10961099
.unwrap();
10971100
}
10981101

1099-
#[allow(dead_code)]
1100-
fn write_to_wasm<M: CodegenModuleCompile + CodegenModuleEmit>(
1101-
discrete_model: &DiscreteModel,
1102-
filename: &str,
1103-
mode: CompilerMode,
1104-
) {
1105-
let module = M::from_discrete_model(
1106-
discrete_model,
1107-
mode,
1108-
Some(triple!("wasm32-unknown-unknown")),
1109-
)
1110-
.unwrap();
1111-
let buffer = module.to_object().unwrap();
1112-
let full_filename = format!("test_output/{filename}.wasm");
1113-
let mut file = std::fs::File::create(full_filename.as_str()).unwrap();
1114-
file.write_all(&buffer).unwrap();
1115-
}
1116-
11171102
#[allow(dead_code)]
11181103
fn tensor_test_common<T: CodegenModuleCompile + CodegenModuleJit>(
11191104
discrete_model: &DiscreteModel,
@@ -1364,7 +1349,6 @@ mod tests {
13641349
#[cfg(feature = "llvm")]
13651350
{
13661351
use crate::execution::llvm::codegen::LlvmModule;
1367-
write_to_wasm::<LlvmModule>(&discrete_model, concat!(stringify!($name),"_llvm"), CompilerMode::SingleThreaded);
13681352
let results = tensor_test_common::<LlvmModule>(&discrete_model, $tensor_name, CompilerMode::SingleThreaded);
13691353
assert_relative_eq!(results[0].as_slice(), $expected_value.as_slice());
13701354
}
@@ -1567,7 +1551,6 @@ mod tests {
15671551
#[cfg(feature = "llvm")]
15681552
{
15691553
use crate::execution::llvm::codegen::LlvmModule;
1570-
write_to_wasm::<LlvmModule>(&discrete_model, concat!(stringify!($name),"_llvm"), CompilerMode::SingleThreaded);
15711554
let results = tensor_test_common::<LlvmModule>(&discrete_model, $tensor_name, CompilerMode::SingleThreaded);
15721555
assert_relative_eq!(results[1].as_slice(), $expected_grad.as_slice());
15731556
assert_relative_eq!(results[2].as_slice(), $expected_rgrad.as_slice());
@@ -1651,7 +1634,6 @@ mod tests {
16511634
#[cfg(feature = "llvm")]
16521635
{
16531636
use crate::execution::llvm::codegen::LlvmModule;
1654-
write_to_wasm::<LlvmModule>(&discrete_model, concat!(stringify!($name),"_llvm"), CompilerMode::SingleThreaded);
16551637
let results = tensor_test_common::<LlvmModule>(&discrete_model, $tensor_name, CompilerMode::SingleThreaded);
16561638
assert_relative_eq!(results[0].as_slice(), $expected_value.as_slice());
16571639
assert_relative_eq!(results[1].as_slice(), $expected_grad.as_slice());

src/execution/module.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,12 @@ use crate::discretise::DiscreteModel;
77

88
use super::compiler::CompilerMode;
99

10+
#[cfg(feature = "rayon")]
1011
pub trait CodegenModule: Sized + Sync {}
1112

13+
#[cfg(not(feature = "rayon"))]
14+
pub trait CodegenModule: Sized {}
15+
1216
pub trait CodegenModuleCompile: CodegenModule {
1317
fn from_discrete_model(
1418
model: &DiscreteModel,

0 commit comments

Comments
 (0)