Skip to content

Commit 7ed11cf

Browse files
committed
fixes plus compiler options for installation
1 parent 5d78777 commit 7ed11cf

9 files changed

Lines changed: 939 additions & 2 deletions

File tree

.github/workflows/cibuildwheel.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ jobs:
8686
CIBW_MANYLINUX_X86_64_IMAGE: manylinux_2_28
8787
CIBW_MANYLINUX_AARCH64_IMAGE: manylinux_2_28
8888
# Environment variables
89-
CIBW_ENVIRONMENT: "SETUPTOOLS_SCM_PRETEND_VERSION=${{ steps.get_version.outputs.version }}"
89+
CIBW_ENVIRONMENT: "SETUPTOOLS_SCM_PRETEND_VERSION=${{ steps.get_version.outputs.version }} CXXFLAGS='-O2' LDFLAGS='-O2'"
9090

9191
- name: Install twine
9292
run: python -m pip install twine

CHANGELOG.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,18 @@
11
# Changelog
22

3+
## 1.11.0
4+
5+
- Run of the mill optmisations + benchmarks. Even up to 40% speedup (best results with maximum optmisation flags, see README.md)
6+
7+
## 1.10.0
8+
9+
- Added generalised constants which an be modified via the interface
10+
- BREAKING: _dropped Python3.9-3.10_ support
11+
12+
## 1.9.1
13+
14+
- Switched to more modern builds with multilinux
15+
316
## 1.9.0
417

518
- Added generalised linearisation options for frequency computing in linear models

README.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,15 @@ Let us know if you have any issues with the demo.
8484
The recommended way is to use the `pip` package manager and virtualenv (or conda).
8585
Installation is as easy as doing:
8686

87+
**Recommendation**
88+
Use the following flagswhen installing/compiling from start. They provide optimimum performance,
89+
but even without them, `cmtj` is very fast.
90+
91+
```bash
92+
export LDFLAGS="-O3"
93+
export CXXFLAGS="-O3 -march=native -ffast-math"
94+
```
95+
8796
1. With `virtualenv` (recommended):
8897

8998
```bash

benchmarks/BENCHMARK_RESULTS.md

Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
# CMTJ 1.11.0 (-O3 -march=native -ffast-math)
2+
======================================================================
3+
SUMMARY
4+
======================================================================
5+
Total benchmark time: 4.0430s
6+
7+
Individual results:
8+
1. Single layer RK4: 0.4793s ± 0.0271s
9+
2. Multi-layer RK4: 0.3105s ± 0.0310s
10+
3. Dormand-Prince: 0.0001s ± 0.0000s
11+
4. Field sweep (50 steps): 1.2400s ± 0.0545s
12+
5. Tensor operations: 2.0131s ± 0.1256s
13+
==================================================
14+
================================================================================
15+
BENCHMARK MODE: Testing current version
16+
================================================================================
17+
Running benchmark: Single layer RK4 simulation...
18+
Mean: 0.0573s ± 0.0146s
19+
Running benchmark: Multi-layer (3 layers) RK4 simulation...
20+
Mean: 0.0375s ± 0.0141s
21+
Running benchmark: Single layer adaptive Dormand-Prince solver...
22+
Mean: 0.0000s ± 0.0000s
23+
Running benchmark: Field sweep with 50 steps...
24+
Mean: 1.2081s ± 0.0326s
25+
Running benchmark: Heavy tensor interaction calculations...
26+
Mean: 0.1989s ± 0.0159s
27+
28+
# CMTJ 1.11.0 (-O3 -march=native)
29+
======================================================================
30+
SUMMARY
31+
======================================================================
32+
Total benchmark time: 4.5457s
33+
34+
Individual results:
35+
1. Single layer RK4: 0.5307s ± 0.0169s
36+
2. Multi-layer RK4: 0.3361s ± 0.0318s
37+
3. Dormand-Prince: 0.0001s ± 0.0000s
38+
4. Field sweep (50 steps): 1.4698s ± 0.1361s
39+
5. Tensor operations: 2.2090s ± 0.0996s
40+
======================================================================
41+
================================================================================
42+
BENCHMARK MODE: Testing current version
43+
================================================================================
44+
Running benchmark: Single layer RK4 simulation...
45+
Mean: 0.0846s ± 0.0321s
46+
Running benchmark: Multi-layer (3 layers) RK4 simulation...
47+
Mean: 0.0326s ± 0.0032s
48+
Running benchmark: Single layer adaptive Dormand-Prince solver...
49+
Mean: 0.0000s ± 0.0000s
50+
Running benchmark: Field sweep with 50 steps...
51+
Mean: 1.3227s ± 0.0342s
52+
Running benchmark: Heavy tensor interaction calculations...
53+
Mean: 0.2101s ± 0.0062s
54+
55+
# CMTJ 1.11.0 (02)
56+
======================================================================
57+
SUMMARY
58+
======================================================================
59+
Total benchmark time: 5.6739s
60+
61+
Individual results:
62+
1. Single layer RK4: 0.7935s ± 0.0907s
63+
2. Multi-layer RK4: 0.4096s ± 0.0339s
64+
3. Dormand-Prince: 0.0002s ± 0.0000s
65+
4. Field sweep (50 steps): 1.9164s ± 0.0204s
66+
5. Tensor operations: 2.5543s ± 0.0314s
67+
======================================================================
68+
================================================================================
69+
BENCHMARK MODE: Testing current version
70+
================================================================================
71+
Running benchmark: Single layer RK4 simulation...
72+
Mean: 0.0790s ± 0.0230s
73+
Running benchmark: Multi-layer (3 layers) RK4 simulation...
74+
Mean: 0.0379s ± 0.0009s
75+
Running benchmark: Single layer adaptive Dormand-Prince solver...
76+
Mean: 0.0000s ± 0.0000s
77+
Running benchmark: Field sweep with 50 steps...
78+
Mean: 1.7432s ± 0.1066s
79+
Running benchmark: Heavy tensor interaction calculations...
80+
Mean: 0.2610s ± 0.0139s
81+
82+
# CMTJ 1.11.0 (Normal)
83+
======================================================================
84+
SUMMARY
85+
======================================================================
86+
Total benchmark time: 4.4801s
87+
88+
Individual results:
89+
1. Single layer RK4: 0.5528s ± 0.0273s
90+
2. Multi-layer RK4: 0.3410s ± 0.0256s
91+
3. Dormand-Prince: 0.0001s ± 0.0000s
92+
4. Field sweep (50 steps): 1.3679s ± 0.0267s
93+
5. Tensor operations: 2.2183s ± 0.0580s
94+
======================================================================
95+
================================================================================
96+
BENCHMARK MODE: Testing current version
97+
================================================================================
98+
Running benchmark: Single layer RK4 simulation...
99+
Mean: 0.0594s ± 0.0079s
100+
Running benchmark: Multi-layer (3 layers) RK4 simulation...
101+
Mean: 0.0357s ± 0.0062s
102+
Running benchmark: Single layer adaptive Dormand-Prince solver...
103+
Mean: 0.0000s ± 0.0000s
104+
Running benchmark: Field sweep with 50 steps...
105+
Mean: 1.3619s ± 0.0665s
106+
Running benchmark: Heavy tensor interaction calculations...
107+
Mean: 0.2174s ± 0.0102s
108+
109+
# CMTJ 1.10.0
110+
======================================================================
111+
SUMMARY
112+
======================================================================
113+
Total benchmark time: 5.7974s
114+
115+
Individual results:
116+
1. Single layer RK4: 0.7144s ± 0.0544s
117+
2. Multi-layer RK4: 0.4148s ± 0.0266s
118+
3. Dormand-Prince: 0.0001s ± 0.0000s
119+
4. Field sweep (50 steps): 1.6580s ± 0.0510s
120+
5. Tensor operations: 3.0100s ± 0.3041s
121+
======================================================================
122+
================================================================================
123+
BENCHMARK MODE: Testing current version
124+
================================================================================
125+
Running benchmark: Single layer RK4 simulation...
126+
Mean: 0.2049s ± 0.0741s
127+
Running benchmark: Multi-layer (3 layers) RK4 simulation...
128+
Mean: 0.1206s ± 0.0303s
129+
Running benchmark: Single layer adaptive Dormand-Prince solver...
130+
Mean: 0.0002s ± 0.0007s
131+
Running benchmark: Field sweep with 50 steps...
132+
Mean: 1.6958s ± 0.0452s
133+
Running benchmark: Heavy tensor interaction calculations...
134+
Mean: 0.2948s ± 0.0182s
135+
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# CMTJ Benchmark Results Table
2+
3+
!Recommendation!:
4+
Install from source, and compile with the following flags:
5+
6+
```bash
7+
export LDFLAGS="-O3"
8+
export CXXFLAGS="-O3 -march=native -ffast-math"
9+
```
10+
11+
12+
| Version | Single layer RK4 (perf) | Single layer RK4 (quick) | Multi-layer RK4 (perf) | Multi-layer RK4 (quick) | Dormand-Prince (perf) | Dormand-Prince (quick) | Field sweep (50 steps) (perf) | Field sweep (50 steps) (quick) | Tensor operations (perf) | Tensor operations (quick) | Total benchmark time (perf) |
13+
|---|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:|
14+
| 1.11.0 (-O3 -march=native -ffast-math) | 0.4793 s ± 0.0271 s | 0.0573 s ± 0.0146 s | 0.3105 s ± 0.0310 s | 0.0375 s ± 0.0141 s | 0.0001 s ± 0.0000 s | 0.0000 s ± 0.0000 s | 1.2400 s ± 0.0545 s | 1.2081 s ± 0.0326 s | 2.0131 s ± 0.1256 s | 0.1989 s ± 0.0159 s | 4.0430 s |
15+
| 1.11.0 (-O3 -march=native) | 0.5307 s ± 0.0169 s | 0.0846 s ± 0.0321 s | 0.3361 s ± 0.0318 s | 0.0326 s ± 0.0032 s | 0.0001 s ± 0.0000 s | 0.0000 s ± 0.0000 s | 1.4698 s ± 0.1361 s | 1.3227 s ± 0.0342 s | 2.2090 s ± 0.0996 s | 0.2101 s ± 0.0062 s | 4.5457 s |
16+
| 1.11.0 (02) | 0.7935 s ± 0.0907 s | 0.0790 s ± 0.0230 s | 0.4096 s ± 0.0339 s | 0.0379 s ± 0.0009 s | 0.0002 s ± 0.0000 s | 0.0000 s ± 0.0000 s | 1.9164 s ± 0.0204 s | 1.7432 s ± 0.1066 s | 2.5543 s ± 0.0314 s | 0.2610 s ± 0.0139 s | 5.6739 s |
17+
| 1.11.0 (Normal) | 0.5528 s ± 0.0273 s | 0.0594 s ± 0.0079 s | 0.3410 s ± 0.0256 s | 0.0357 s ± 0.0062 s | 0.0001 s ± 0.0000 s | 0.0000 s ± 0.0000 s | 1.3679 s ± 0.0267 s | 1.3619 s ± 0.0665 s | 2.2183 s ± 0.0580 s | 0.2174 s ± 0.0102 s | 4.4801 s |
18+
| 1.10.0 | 0.7144 s ± 0.0544 s | 0.2049 s ± 0.0741 s | 0.4148 s ± 0.0266 s | 0.1206 s ± 0.0303 s | 0.0001 s ± 0.0000 s | 0.0002 s ± 0.0007 s | 1.6580 s ± 0.0510 s | 1.6958 s ± 0.0452 s | 3.0100 s ± 0.3041 s | 0.2948 s ± 0.0182 s | 5.7974 s |
19+

0 commit comments

Comments
 (0)