Benchmarks
Brought to you by:
paulshen
Originally created by: lucasgrjn
Hey really cool project!
I find this repo after searching about FDTD from this topic. I am searching for a (fast) FDTD engine to play a bit. I was wondering if you had any benchmark between the solver commonly available (aka MEEP or fdtdz). Especially considering the scale multi-CPUs or multi-GPUs.
Thanks and really nice project! :)
Originally posted by: paulxshen
Thanks for reaching out! I haven't done benchmarks yet. We simply use Julia's
diffand broadcasted array arithmetic with GPU calls (if used) compiled by CUDA.jl. So it's probably comparable to Meep but slower than fdtdz.What system scale are you thinking? For inverse design of typical components less than 10 x 10 um even a single machine is sufficient. From there one would extract the component S parameters used for system simulation. So I don't really see a big need for systems level FDTD which fdtdz caters to except in some 3d metamaterials cases - I could be wrong though.
Our focus is on ease of use and flexibility wrt inverse design. We're bare bones AD compatible with Zygote.jl w/ no custom adjoints. There's some broken code now - we're fixing our examples and planning a first stable release next week. Afterwards I'm happy to do a quick presentation (live meeting or recorded) for your team if desired.
Originally posted by: lucasgrjn
In my academic work, I mainly play with photonic crystals. Depending on the size, I think you can assimilate them as a meta surface. Or if you try to integrate them, you can end up with large devices...
Right now, I only investigate the possibilities. But I will keep an eye on the next release!
Thanks for your complete response!
Originally posted by: paulxshen
Got it that makes sense. There's also the commercial package Tidy3D which can also handle massive scale but doing AD with backend hidden in the cloud is maybe not easy.. I pushed a new release and documented the tutorials on project site. It's still in alpha and likely buggy - I'm happy to help write a test script if you wanna try something out. Using Float16 on gpu should help
Originally posted by: paulxshen
I thought Meep had a GPU variant but officially no. Assuming Meep stays CPU only, our GPU implementation should be faster, though not as fast as a bespoke GPU implementation like fdtdz which is more feature restrictive.