Comments (4)
Hey, thanks for your question!
We don't have a paper or a more detailed README yet, although those are both on our list of things we'd like to do. The project is still in relatively early development. This push to github was both because 1) we feel we have an interesting core for researchers to play with and 2) we'd like to shift our development to be out in the open.
Our overall objectives with this project are:
Fast iteration time for researchers
We would like this library to make it as easy as possible for researchers to express experiments and ideas. We think we can achieve this in two ways.
- Often when doing physics simulations, you would like to express certain quantities as derivatives of other quantities (e.g. computing forces from energies or elastic moduli). Using JAX's autodiff means that people doing research don't need to spend their time computing these complicated derivatives.
- Everything is written in Python. Normally, the simulation code, to be fast, is written in C++ and/or in handmade CUDA kernels. This means researchers can only express a certain range of ideas before they have to go into the lower level, more complicated, parts of the code. Here, everything is in python and JIT compiled to XLA which we think gives a nice balance between expressivity and speed.
Explore the use of functional programming in the space of molecular dynamics software
Most molecular dynamics code (and research code generally) is written imperatively. Once again, this decision is often made because traditionally code is written in C++ for speed reasons. However, because we JIT compile to XLA, we don't suffer any loss of speed by being functional. This allows us to explore a new part of software design space.
Orientation towards pedagogy
Usage of our code should as closely mimic physics textbook descriptions as possible and to be easy to tinker with. The details of this point really rest on the automatic derivatives and compilation to XLA, mentioned above. One additional point here is that we hope to add primitives that enable code written in this "physics first" manner to be fast and scalable. For example, we include an operation grid
that takes any function and computes it using a spatial partition of the physical system which enables faster evaluation on large systems.
Machine learning as a first class citizen
We want be able to build machine learning models directly into physics simulations. We think this might enable a bunch of interesting research directions, such as online learning and easy use of empirical potentials constructed from DFT calculations.
Scales to very large simulations
Eventually, we want to take advantage of modern hardware and parallelism over multiple GPU / TPUs to do simulations of very large systems. We're especially curious to see how TPUs perform in this regard, taking advantage of the fast interconnects between TPU chips.
If you have any specific questions, I'd be more than happy to answer them here. I'll also leave this issue open and update it as we improve our documentation.
from jax-md.
Now we have a paper here! Since this is linked from the README, I'm going close this issue.
from jax-md.
Thanks! Very informative!
from jax-md.
Now we have a paper here! Since this is linked from the README, I'm going close this issue.
Great! Thanks,@sschoenholz
from jax-md.
Related Issues (20)
- Possible error in Langevin integrator's handling of PRNGkeys HOT 1
- Will Jax-MD support constraint alg like LINCS and SETTLE in the near future?
- Brownian simulations break when dt <= ~3e-8
- Better documentation needed for quantity.pair_correlation and quantity.pair_correlation_neighbor_list HOT 1
- Potential implementation for space.periodic_general HOT 4
- neighborlist in non-orthorhombic systems HOT 3
- `jax_md` installation fails from pip install with python 3.11 HOT 1
- Feature Request: Improved execution time for bonds. HOT 2
- Is there a bug in the equivariant neural network notebook? HOT 1
- FireDescent is not implemented correctly
- Is the any way could translate the Sparse neighbor list to OrderedSparse neighbor list?
- Code snippets in README.md give NaNs
- Issues with NPT + Lennard Jones using jax-md-0.2.5 HOT 2
- jax-md renderer not working HOT 1
- Readers of the paper may unintentionally access old code in the `master` branch
- NaNs for Lennard Jones potential gradients. HOT 1
- Error importing jax_md
- documentation not compiling HOT 1
- GPU memory leak when using soft_sphere_neighbor_list with epsilon species tensor
- FireDescent should use velocity and not momentum when calculating P
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from jax-md.