283 Commits

Author SHA1 Message Date
2044397047 app: stacked_cores: prototype
the long term goal of this demo is to see if:
(a) we can get stronger coupling between two cores than with multi-core-inverter.
(b) we can get amplification by using a charge-pump like concept.
(c) we can construct a *working* multi-core-inverter from this.
2022-09-01 18:41:49 -07:00
19ff08ada8 app: buffer_proto5: increase fps by setting steps_per_stim
the bottleneck seems mostly to be transferring data CPU <-> GPU.
boosting to 200 steps per stim gets us like 50 fps, but causes serious
CPU-side lag.
2022-09-01 17:41:13 -07:00
482f07520c app: buffer_proto5: fix so DiskCache::get_or_insert flushes 2022-08-31 03:03:13 -07:00
0a1452cb5c buffer_proto5: parallelize a bit more 2022-08-31 02:55:40 -07:00
184997a701 app: buffer_proto5: parallelize the geometry searches 2022-08-31 02:40:47 -07:00
a6fe05a993 app: multi-core-inverter: add more sims 2022-08-31 01:40:29 -07:00
c050b0406f app: multi-core-inverter: add some more simulations 2022-08-30 01:10:39 -07:00
a811561f14 app: multi-core-inverter: more simulations 2022-08-28 02:01:51 -07:00
538db399a9 Stimulus: Sinusoid: remove the amp component 2022-08-28 02:01:33 -07:00
19f08fce9f app: multi-core-inverter: tune drive current and conductivity 2022-08-27 03:14:41 -07:00
529ad943ac app: multi-core-inverter: explore a few more simulations 2022-08-27 01:37:23 -07:00
532055e045 app: multi-core-inverter: define a few more sims
trying to strike the right balance between coupling conductivity and
decay time.
2022-08-26 18:13:50 -07:00
5b66c2bc26 app: multi-core-inverter: parameterize a few more cases
exploring how low control conductivity can go
2022-08-26 04:17:01 -07:00
7f40b3ccd5 app: multi-core-inverter: more experiments with varied conductivities 2022-08-25 19:38:12 -07:00
bf3f79dd50 app: multi-core-inverter: implement some sims which specify conductivities separately 2022-08-25 15:43:13 -07:00
f80b2e22a4 app: multi-core-inverter: allow setting coupling and drive conductivities separately 2022-08-25 15:37:06 -07:00
6afa65c3e4 app: multi-core-inverter: design a few new experiments which vary the conductivity 2022-08-25 15:32:37 -07:00
2c68a53668 rename StimExt to TimeVaryingExt 2022-08-24 15:44:12 -07:00
9301734fcf app: multi-core-inverter: parameterize the wire conductivity 2022-08-24 15:06:41 -07:00
6d717fdda4 app: multi-core-inverter: explore multiple parameterizations in one run 2022-08-24 02:08:06 -07:00
c008fb963e app: multi-core-inverter: explore more of the space 2022-08-24 01:24:16 -07:00
5fff872890 app: multi-core-inverter: implement 2-core inverter
this is a simpler test-bed to explore things like clock duration
2022-08-22 18:14:28 -07:00
b160823a81 fix broken cargo build --all 2022-08-22 14:17:51 -07:00
8268215441 app: multi-core-inverter: fix non-terminating drive signal 2022-08-22 01:41:20 -07:00
e5c8bcff95 Driver: remove dead add_classical_boundary_explicit function 2022-08-22 00:51:53 -07:00
24b82037b4 Stimulus: parameterize over R.
this saves us from a `mem::transmute` in the sim code to get
`Fields<R>`.
2022-08-22 00:37:34 -07:00
6c9a6e1ffa driver: all the user to configure the number of steps to go between stimulus application 2022-08-21 18:22:11 -07:00
ad5f064584 stim: Simplify the Exp implementation. it's no longer a Stimulus 2022-08-19 04:14:33 -07:00
77124fcdaf driver: implement an optimized stimulus adapter over ModulatedVectorField
this boosts perf from 520fps -> 632fps.

it does some uneccessary clones.
but it looks like the bulk of the inefficiency resides inside
the sim/spirv/ code though.
it might be that this is nearly memory-bottlenecked.
if so, backgrounding it might be sensible.
2022-08-19 03:54:43 -07:00
35dbdffda7 driver: lay some scaffolding to allow us to optimize the stimulus in future 2022-08-18 22:19:50 -07:00
ffda00b796 stim: convert CurlStimulus to a CurlVectorField and use ModulatedVectorField
this opens the door to caching the vector field stuff.
2022-08-18 20:47:36 -07:00
478db86b75 multi-core-inverter: remove the List shenanigans 2022-08-18 20:02:09 -07:00
9461cc7781 stim: introduce a VectorField trait which we'll use to build a more structured approach to Stimulus 2022-08-18 17:08:44 -07:00
6750feef8d stim: remove TimeVarying3
`TimeVarying`(1) is enough for what we want.
2022-08-18 15:51:54 -07:00
570f058ee1 rename AbstractStimulus -> Stimulus 2022-08-18 15:27:18 -07:00
60e44d6d4d rename Stimulus -> RegionGated 2022-08-18 15:22:28 -07:00
6e7ae48d86 stim: remove the extra norm call in CurlStimulus application
we call `with_mag` after, making it redundant.
2022-08-18 14:28:33 -07:00
fb9d982545 multi-core-inverter: test an alternate Vec-based stimulus
it's about 0.5% slower. not much.
2022-08-18 04:12:57 -07:00
ffa13ccd79 app: multi-core-inverter: clean this up by using map/flatten operations 2022-08-17 02:53:14 -07:00
107a28e7fd app: multi_core_inverter: replace these into_lists with a map operation 2022-08-16 16:53:22 -07:00
7bb3740ce2 app: multi_core_inverter: convert to List primitives
goal will be to replace this with enumerate/map/flatten ops
2022-08-16 16:40:39 -07:00
1e994a4feb app: multi_core_inverter: more experiments (clock decay length, drive current, clock length) 2022-08-14 16:24:58 -07:00
f1143ec365 app: multi_core_inverter: don't save meas.csv
this boosts perf by like 5x
2022-08-13 16:20:24 -07:00
ee93c22f4a app: multi_core_inverter: perf: move the stimulus Gating to outside the CurlStimulus
the region.contains() logic is much more expensive than the time bounds
check.
this gets an easy 50% perf boost to the ENTIRE simulation
2022-08-13 15:00:56 -07:00
434dc2cbd5 app: multi_core_inverter: de-virtualize the stimuli
this gets like a 5% perf gain.
there are obviously cleaner ways to do it (e.g. use a ListVisitor),
but this is only a proof of concept.

given the low perf difference, i'll likely revert this or explore other
options.
2022-08-13 03:51:52 -07:00
e141047bec Driver: simplify the StimuliAdapter
it was basically dead code.
2022-08-12 14:42:56 -07:00
31fd83eb34 apps: multi_core_inverter: setup for 4ns clock phases
double what they were before. gives more time for things to settle.
2022-08-12 14:42:17 -07:00
084c5bc342 Region: remove Clone from the trait, and also parameterize everything
i didn't necessarily *want* to parameterize it all,
but it turned out to be easier to do that than to force all users to
workaround the lack of Clone.
2022-08-12 01:42:19 -07:00
d5fbb4e9b2 Region: remove the Serialization requirement 2022-08-12 00:57:01 -07:00
d379a7b0ee app: multi_core_inverter: try a related experiment where S0 is initialized to logic low 2022-08-11 22:24:19 -07:00