Electromagnetic simulation (RCWA) & optimization package in Python
Project description
Meent
Meent is an Electromagnetic(EM) simulation package with Python, composed of three main parts:
- Modeling
- EM simulation
- Optimization
Backends
Meent provides three libraries as a backend:
- NumPy
- The fundamental package for scientific computing with Python
- Easy and lean to use
- JAX
- Autograd and XLA, brought together for high-performance machine learning research.
- PyTorch
- A Python package that provides two high-level features: Tensor computation with strong GPU acceleration and Deep neural networks built on a tape-based autograd system
When to use
Numpy | JAX | PyTorch | Description | |
---|---|---|---|---|
64bit support | O | O | O | Default for scientific computing |
32bit support | O | O | O | 32bit (float32 and complex64) data type operation* |
GPU support | X | O | O | except Eigendecomposition** |
TPU support* | X | X | X | Currently there is no workaround to do 32 bit eigendecomposition on TPU |
AD support | X | O | O | Automatic Differentiation (Back Propagation) |
Parallelization | X | O | X | JAX pmap function |
*In 32bit operation, operations on numbers of 8>= digit difference fail without warning or error.
Use only when you do understand what you are doing.
**As of now(2023.03.19), GPU-native Eigendecomposition is not implemented in JAX and PyTorch.
It's enforced to run on CPUs and send back to GPUs.
Numpy is simple and light to use. Suggested as a baseline with small ~ medium scale optics problem.
JAX and PyTorch is recommended for cases having large scale or optimization part.
If you want parallelized computing with multiple devices(e.g., GPUs), JAX is ready for that.
But since JAX does jit compilation, it takes much time at the first run.
How to install
pip install meent
JAX and PyTorch is needed for advanced utilization.
How to use
import meent
# backend 0 = Numpy
# backend 1 = JAX
# backend 2 = PyTorch
backend = 1
mee = meent.call_mee(backend=backend, ...)
Tutorials
Jupyter notebooks are prepared in tutorials to give a brief introduction.
Examples
Comprehensive examples of computational optics with Meent can be found in examples
folder.
Citation
To cite this repository:
@article{kim2024meent,
title={Meent: Differentiable Electromagnetic Simulator for Machine Learning},
author={Kim, Yongha and Jung, Anthony W. and Kim, Sanmun and
Octavian, Kevin and Heo, Doyoung and Park, Chaejin and
Shin, Jeongmin and Nam, Sunghyun and Park, Chanhyung and
Park, Juho and Han, Sangjun and Lee, Jinmyoung and
Kim, Seolho and Jang, Min Seok and Park, Chan Y.},
journal={arXiv preprint arXiv:2406.12904},
year={2024}
}
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file meent-0.11.0.tar.gz
.
File metadata
- Download URL: meent-0.11.0.tar.gz
- Upload date:
- Size: 99.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.20
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5dff87f412b1f8e6a58ffcd6954647b7e2c69c7a51c231404aa1f57d2b9c71f2 |
|
MD5 | 2a917d4d6cb91a9463de423474a1f37e |
|
BLAKE2b-256 | 535fb75a8160cb6c3cba147cd99a2f9774be01ce3730635a07d5538371733d47 |
File details
Details for the file meent-0.11.0-py3-none-any.whl
.
File metadata
- Download URL: meent-0.11.0-py3-none-any.whl
- Upload date:
- Size: 108.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.20
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 758a9d9d823a2f14cd36d399ad0d379773c91369dacefdbe0d8a7c30e81b579b |
|
MD5 | 364eaa4234d32c02371a5aafaa2b02e6 |
|
BLAKE2b-256 | 177f766b466776de23bc353f6e8537cd4adfffd3da7914035f96f6fb589cf747 |