Hi everyone,

Currently, I'm working on setting a cluster using amazon ec2. We are using
Meep-mpi with OpenMPI. We are doing some testing with exercises and we are
having some issues with the following exercise *3d_ring_transmission.ctl*

Our problem is that the simulation doesn't improve the time duration as we
increase the numbers of nodes of the cluster, I mean, with 2,4,6,... nodes,
the time instead of decrease is increasing. We don't know exactly what
happens. We suppose like the exercise does a lot of "writings" ((to-appended
"hz" (at-every 0.5 output-hfield-z))), it takes more time, because of the
AmazonEC2 nodes virtualization. But We are not sure about this. The final
output is 20 GB.

Also, I paste two outputs running with 2 and 4 nodes. These outputs are just
the beggining not the entire, as you can see in the outputs the time between
each step actually is better with 4 nodes than 2 but not in all, in the
timesteps 1,41,81,... the time is less with 2 nodes than with 4 nodes. And
in the end, the time is better with 2 nodes =/

I'm not related to FDTD simulations, in fact I'm related to computer science
field, but I would like to understand a little better about this. My
question is: my assuption is correct about the virtualization? can we use
the ram memory for the "writings" (at-every 0.5) and in the end write to the
hard drive?
For run the ctl is:
meep no-ring?=true 3d_ring_transmission.ctl | tee transmission0.out

thanks!
*
*
*3d_ring_transmission.ctl*

;Simulation of a 3D ring resonator in add-drop configuration

;OUTPUT: Transmission flux from thru port and drop port

;General parameters
(define-param nc  3.03) ;core refractive index
(define-param ns  1.67) ;substrate refractive index
(define-param r1  2) ;inner radius of ring in microns
(define-param r2  2.5) ;outer radius of ring
(define-param w  0.55) ;waveguide width in microns
(define-param gap  0.2) ; gap between ring and straight waveguide in microns
(define-param pad  0.75) ;padding distance in microns
(define-param h 0.405) ; height of waveguides in microns
(define-param hs  0.6) ;height of substrate
(define-param dpml  1) ;pml thickness

;Cell structure definition
(define sx (* 2 (+ r2 gap w pad dpml))) ; X direction cell size
;(define sy (* 2 (+ r2 pad dpml))) ; Y direction cell size
(define sy (* 2 (+ r2 pad ))) ; Y direction cell size
(define sz (* 2 (+ hs dpml))) ; Z direction cell size
(set! geometry-lattice (make lattice (size sx sy sz)))

;FLAG to denote complete structure = false, waveguide only = true
(define-param no-ring? true) ;default simulate waveguides only

;Construct waveguide and ring resonator
(define subs-width (* 2 (+ r2 gap w pad)))
(define subs-length (* 2 (+ r2 pad)))

(if no-ring?
    (begin
      (set! geometry (list
                      ;substrate
                      (make block
                            (center 0 0 (* -1 (/ hs 2))) ; center of substrate
                            ;(size (+ subs-width dpml) (+ subs-length
dpml) hs) ; dimension of substrate is (wxLxh) = 2*(r2+gap+w+pad) x
2*(r2+pad) x hs
                            (size  subs-width  subs-length hs)
                            (material (make dielectric (index ns))))
                      ;waveguides
                      (make block
                            (center (+ r2 gap (/ w 2)) 0 (/ h 2))
;right waveguide
                            ;(size  w (+ subs-length dpml) h)
                            (size  w subs-length h)
                            (material (make dielectric (index nc))))
                      (make block
                            (center  (* -1 (+ r2 gap (/ w 2))) 0 (/ h 2))
                            ;(size w (+ subs-length dpml) h)
                            (size  w subs-length h)
                            (material (make dielectric (index nc))))
                      )))
    ;else condition
    (begin
      (set! geometry (list
                      ;substrate
                      (make block
                            (center 0 0 (* -1 (/ hs 2))) ; center of substrate
                            ;(size (+ subs-width dpml) (+ subs-length
dpml) hs) ; dimension of substrate is (wxLxh) = 2*(r2+gap+w+pad) x
2*(r2+pad) x hs
                            (size  subs-width  subs-length hs)
                            (material (make dielectric (index ns))))
                      ;waveguides
                      (make block
                            (center (+ r2 gap (/ w 2)) 0  (/ h 2))
;right waveguide
                            ;(size  w (+ subs-length dpml)h h)
                            (size  w subs-length h)
                            (material (make dielectric (index nc))))
                      (make block
                            (center  (* -1 (+ r2 gap (/ w 2))) 0 (/ h 2))
                            ;(size w (+ subs-length dpml) h)
                            (size  w subs-length h)
                            (material (make dielectric (index nc))))
                      ;ring resonator structure here
                      (make cylinder
                            (center 0 0 (/ h 2) ) (height h)
                            (radius r2) (material (make dielectric (index nc))))
                      (make cylinder
                            (center 0 0 (/ h 2) ) (height h)
                            (radius r1) (material air))
                      )))
    )

;PML setup
(set! pml-layers (list (make pml (thickness dpml))))
;RESOLUTION
(set-param! resolution 40) ; use resolution, 40 for a 3.8 GB pC
;Source definition
(define-param fcen 0.56) ; 0.56 center frequency at 170 Thz
(define-param df 0.4) ; 0.2 pulse width 60 Thz
(define-param nfreq 2000) ; 200 number of freq elements to compute flux
(set! sources (list
               (make source
                     (src (make gaussian-src (frequency fcen) (fwidth df)))
                     (component Hz) ; TE excitation
                     ;(center (* -1 (+ r2 gap (/ w 2))) (+ r2 (/ pad
2)) (/ h 2))
                     (center (* -1 (+ r2 gap (/ w 2))) r2  (/ h 2))
                     (size w 0 h )))) ;point source

;Define flux computation Region
(define transmission_in ;input transmission
  (add-flux fcen df nfreq
            (make flux-region
                  (center (* -1 (+ r2 gap (/ w 2))) r1 (/ h 2))
                  (size (* w 1.0) 0 (* h 1.0))
                  (weight -1.0))))
(define transmission_thru ;transmitted flux thru port
  (add-flux fcen df nfreq
            (make flux-region
                 ; (center (* -1 (+ r2 gap (/ w 2))) (+ r2 (/ pad 2))
(/ h 2)) ;ERROR HERE
                  ;(center (* -1 (+ r2 gap (/ w 2))) (* -1 (+ r2 (/
pad 2))) (/ h 2))
                  (center (* -1 (+ r2 gap (/ w 2))) (* -1 r1) (/ h 2))
                  (size (* w 1.0) 0 (* h 1.0))
                  (weight -1.0)))) ; because flux is outward the
waveguide (negative axis)
(define transmission_drop ;transmitted flux drop port
  (add-flux fcen df nfreq
            (make flux-region
                  ;(center (+ r2 gap (/ w 2)) (+ r2 (/ pad 2)) (/ h 2))
                  (center (* +1 (+ r2 gap (/ w 2))) r1 (/ h 2))
                  (size (* w 1.0) 0 (* h 1.0))
                  (weight +1.0)))) ; because flux is outward the
waveguide (positive axis)

;Run command
(run-sources+
 (stop-when-fields-decayed 50 Hz
                           (vector3 (* -1 (+ r2 gap (/ w 2))) (* -1 r1) (/ h 2))
                           1e-4)
 (to-appended "hz" (at-every 0.5 output-hfield-z))
 (at-beginning output-epsilon)
 )
(display-fluxes transmission_in transmission_thru transmission_drop) ;
print out flux spectrum

*Output 2 nodes*


Using MPI version 2.0, 2 processes
command-line param: no-ring?=true
-----------
Initializing structure...
Working in 3D dimensions.
Computational cell is 10 x 6.5 x 3.2 with resolution 40
     block, center = (0,0,-0.3)
          size (8,6.5,0.6)
          axes (1,0,0), (0,1,0), (0,0,1)
          dielectric constant epsilon diagonal = (2.7889,2.7889,2.7889)
     block, center = (2.975,0,0.2025)
          size (0.55,6.5,0.405)
          axes (1,0,0), (0,1,0), (0,0,1)
          dielectric constant epsilon diagonal = (9.1809,9.1809,9.1809)
     block, center = (-2.975,0,0.2025)
          size (0.55,6.5,0.405)
          axes (1,0,0), (0,1,0), (0,0,1)
          dielectric constant epsilon diagonal = (9.1809,9.1809,9.1809)
command-line param: no-ring?=true
subpixel-averaging is 70.7238% done, 1.65643 s remaining
subpixel-averaging is 65.895% done, 2.07103 s remaining
subpixel-averaging is 70.5009% done, 1.67494 s remaining
time for set_epsilon = 67.9664 s
-----------
creating output file "./3d-hz.h5"...
creating output file "./3d-eps-000000.00.h5"...*on time step 1
(time=0.0125), 55.2413 s/step*
on time step 5 (time=0.0625), 1.32752 s/step
on time step 9 (time=0.1125), 1.32443 s/step
on time step 13 (time=0.1625), 1.32885 s/step
on time step 16 (time=0.2), 1.35196 s/step
on time step 19 (time=0.2375), 1.46996 s/step
on time step 22 (time=0.275), 1.58233 s/step
on time step 25 (time=0.3125), 1.45481 s/step
on time step 28 (time=0.35), 1.53447 s/step
on time step 31 (time=0.3875), 1.52081 s/step
on time step 34 (time=0.425), 1.49163 s/step
on time step 37 (time=0.4625), 1.47459 s/step
on time step 40 (time=0.5), 3.70836 s/step*on time step 41
(time=0.5125), 74.9581 s/step*
on time step 44 (time=0.55), 1.43735 s/step
on time step 47 (time=0.5875), 1.40395 s/step
on time step 50 (time=0.625), 1.40748 s/step
on time step 53 (time=0.6625), 1.42533 s/step
on time step 56 (time=0.7), 1.39888 s/step
on time step 59 (time=0.7375), 1.35495 s/step
on time step 62 (time=0.775), 1.34053 s/step
on time step 65 (time=0.8125), 1.3636 s/step
on time step 68 (time=0.85), 1.35887 s/step
on time step 71 (time=0.8875), 1.37078 s/step
on time step 74 (time=0.925), 1.34815 s/step
on time step 78 (time=0.975), 1.31821 s/step

on time step 80 (time=1), 5.4548 s/step

*on time step 81 (time=1.0125), 75.7812 s/step**  *

*Output 4 nodes*

Using MPI version 2.0, 4 processes
command-line param: no-ring?=true
command-line param: no-ring?=true
command-line param: no-ring?=true
command-line param: no-ring?=true
-----------
Initializing structure...
Working in 3D dimensions.
Computational cell is 10 x 6.5 x 3.2 with resolution 40
     block, center = (0,0,-0.3)
          size (8,6.5,0.6)
          axes (1,0,0), (0,1,0), (0,0,1)
          dielectric constant epsilon diagonal = (2.7889,2.7889,2.7889)
     block, center = (2.975,0,0.2025)
          size (0.55,6.5,0.405)
          axes (1,0,0), (0,1,0), (0,0,1)
          dielectric constant epsilon diagonal = (9.1809,9.1809,9.1809)
     block, center = (-2.975,0,0.2025)
          size (0.55,6.5,0.405)
          axes (1,0,0), (0,1,0), (0,0,1)
          dielectric constant epsilon diagonal = (9.1809,9.1809,9.1809)
time for set_epsilon = 29.093 s
-----------
creating output file "./3d-hz.h5"...
creating output file "./3d-eps-000000.00.h5"...cd ..*on time step 1
(time=0.0125), 54.5664 s/step*
on time step 7 (time=0.0875), 0.686385 s/step
on time step 13 (time=0.1625), 0.672188 s/step
on time step 20 (time=0.25), 0.65516 s/step
on time step 27 (time=0.3375), 0.655888 s/step
on time step 34 (time=0.425), 0.658867 s/step
on time step 40 (time=0.5), 1.42186 s/step*on time step 41
(time=0.5125), 114.796 s/step*
on time step 48 (time=0.6), 0.652713 s/step
on time step 55 (time=0.6875), 0.65162 s/step
on time step 61 (time=0.7625), 0.69854 s/step
on time step 68 (time=0.85), 0.646802 s/step
on time step 75 (time=0.9375), 0.658464 s/step
on time step 80 (time=1), 1.59971 s/step

*on time step 81 (time=1.0125), 110.083 s/step*


-- 
- Markos

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
It's not what you know, it's what you can learn...
_______________________________________________
meep-discuss mailing list
meep-discuss@ab-initio.mit.edu
http://ab-initio.mit.edu/cgi-bin/mailman/listinfo/meep-discuss

Reply via email to