-
Notifications
You must be signed in to change notification settings - Fork 8
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
New Feature: GPU Mode Solving #19
Comments
Note: we are keeping the empy mode solver only because it supports a full permittivity tensor. Otherwise, we are migrating towards tidy3d. I recommend trying to gpu-ize tidy3d instead since it is easier to use, has PML, has bends, and is faster |
The hardest thing about throwing a mode solver on the gpu right now is finding a suitable targeted eigensolver compatible with complex, sparse matrices. Unfortunately, none of the "popular" wrapper packages (torch, jax, pycuda, etc) seem to support this. Furthermore, we probably want to offload the entire kernel to the gpu, not just the mode solving section. |
Do you mean the entire EME process onto the gpu? |
Yes. Mode calculation + mode overlap + Redheffer Star product. |
Mode calculation + mode overlap - easy. We can reformulate the Mode object in a simple way on the gpu Redheffer star product, not possible with Simphony (without forking and reformulating it). We could use sax however if we wanted it there. Doing so would require modifying about half the code in the repo however |
I would just write a quick function that does it. It's rather easy and has been done in dozens of packages already. |
It's easy for small-port systems. But when you have different numbers of ports on each side of an interface, with lots of modes, can't it get tricky? |
There was an effort to vectorize electromagnetic python (EMpy) mode solving on a gpu (hence the name EMpy_gpu) for my cloned dependency of EMEPy. I didn't get it to work at the time and gave up early but it should be able to be done. We may want to use a modified version of EMpy again but different.
The text was updated successfully, but these errors were encountered: