1
+ using QSimulator
1
2
2
3
function speed_test (repeats)
3
- Hnat, controlHams, controlFields, controlFreqs = sim_setup (16 , 2000 , 4 )
4
+ T_f = 1000.0
5
+ sys = sim_setup (4 , T_f)
6
+ dt = 1.0
4
7
5
8
# run once for JIT
6
- evolution_unitary (Hnat, controlHams, controlFields, controlFreqs )
7
- parallel_evolution_unitary (Hnat, controlHams, controlFields, controlFreqs )
9
+ unitary_propagator (sys, dt, 0.0 , T_f, parallelize = false )
10
+ unitary_propagator (sys, dt, 0.0 , T_f, parallelize = true )
8
11
9
12
# then time each
10
13
tserial = @elapsed for ct = 1 : repeats
11
- evolution_unitary (Hnat, controlHams, controlFields, controlFreqs )
14
+ unitary_propagator (sys, dt, 0.0 , T_f, parallelize = false )
12
15
end
13
16
14
17
tparallel = @elapsed for ct = 1 : repeats
15
- parallel_evolution_unitary (Hnat, controlHams, controlFields, controlFreqs )
18
+ unitary_propagator (sys, dt, 0.0 , T_f, parallelize = true )
16
19
end
17
20
18
21
println (" Serial execution in $(tserial/ repeats) seconds" )
19
22
println (" Parallel execution in $(tparallel/ repeats) seconds" )
20
23
21
- tserial, tparallel
24
+ tserial/ repeats , tparallel/ repeats
22
25
end
23
26
24
- function sim_setup (dimension,
25
- numTimeSteps,
26
- numControls)
27
- # Create a random natural hamiltonian
28
- tmpMat = randn (dimension, dimension) + 1im * randn (dimension, dimension)
29
- Hnat = tmpMat+ tmpMat'
30
-
31
- # Create random control Hamiltonians
32
- controlHams = Array (Matrix{Complex128}, numControls)
33
- for ct = 1 : numControls
34
- tmpMat[:] = randn (dimension, dimension) + 1im * randn (dimension, dimension)
35
- controlHams[ct] = tmpMat+ tmpMat'
36
- end
37
- # Create random controlfields
38
- controlFields = randn (numControls, numTimeSteps)
39
-
40
- # Control frequencies
41
- controlFreqs = randn (numControls)
42
-
43
- return Hnat, controlHams, controlFields, controlFreqs
44
- end
27
+ function sim_setup (dimension, numTimeSteps)
28
+ α = - 0.350
29
+ J = 0.002
30
+ Ω = 0.010
31
+ Q1 = Duffing (" q1" , 0.0 , α, dimension)
32
+ Q2 = Duffing (" q2" , 1.0 , α, dimension)
33
+
34
+ drive = MicrowaveControl (" CR" , 1.0 , timeStep= 1.0 )
35
+ sys = Q1 + Q2 + FlipFlop (Q1, Q2, J) + RotatingSemiClassicalDipole (Field (drive), Q2, Ω)
36
+
37
+ seq = ones (int (numTimeSteps))
38
+ load_sequence! (drive, seq)
39
+
40
+ return sys
41
+ end
0 commit comments