Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/xiaohanzhangcmu/axiom
scalable C++ and python binding framework for Scientific Computing and Machine Learning
https://github.com/xiaohanzhangcmu/axiom
deepq-learning finite-element-methods molecular-dynamics stanford tensorflow
Last synced: 8 days ago
JSON representation
scalable C++ and python binding framework for Scientific Computing and Machine Learning
- Host: GitHub
- URL: https://github.com/xiaohanzhangcmu/axiom
- Owner: XiaohanZhangCMU
- Created: 2018-06-13T16:34:15.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2020-07-06T04:18:33.000Z (over 4 years ago)
- Last Synced: 2024-11-04T08:58:09.335Z (about 2 months ago)
- Topics: deepq-learning, finite-element-methods, molecular-dynamics, stanford, tensorflow
- Language: HTML
- Homepage:
- Size: 3.67 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Axiom Drives Scientific Computing Codes with Python
Authors: **aXioM**=**Xiao**Han+**Mo**Han :)
This framework helps bind (GPU/MPI-accelerated) C++ codes with Python using pybind11. For example, packages/mdsw implements Molecular Dynamics in C++ and it interfaces with OpenAI/gym environment through Python. New package can be added by following the existing examples. Axiom allows C++ and Python to communicate efficiently within memory through Numpy. Below shows an calculation done with mdsw -- the greedy search part is written in Python.
Minimum Atomistic Defect (Frank-Partial Dislocation) Nucleation Energy Barrier Found by Greedy Algorithm
## Installation requirement:
1) OS X > Yosemite, Linux: CentOS >= 7.5.1804 or ubuntu >=16.04.4 LTS).
2) python: 2.7 or 3.6.## Installation of packages:
1) git clone [email protected]:XiaohanZhangCMU/axiom.git; cd axiom;
2) Add your (GPU/MPI)C++ project "ABC" to axiom/packages/ABC. Organize the codes into src and include.
3) Write CMakeLists.txt in axiom/packages/ABC and write _axiom.cpp in a similar way as other packages to export the variables and methods to python.
4) sh ./install_package "your package name " to compile. (You can also supply multiple package names and build them simultaneously. If no argument is given, all packages in axiom/packages will be built.)
5) In python script, add sys.path.append('your_path_to/axiom/lib/') to the top.
6) Enjoy!## Optional packages for visualization:
1) pip install PyOpenGL PyOpenGL_accelerate (On Ubuntu or Linux need: sudo apt-get install python-opengl).
2) python3 -m pip install Pillow## Existing packages:
1) zoo: A playground for simple pybind11 binding.
2) tensor: GPU and boost::share_ptr for automatic gpu memeory allocation and syncronization.
3) mdsw: MD++ (http://micro.stanford.edu/MDpp), a molecular dynamics simulator. Working with reinforcement learning. See Python/frankMEP/SearchAlgorihtm.py.
4) mdfem: Solve nonlinear neo-hookean FEM by minimizing potential energy.
5) fem: A one dimensional elasticity FEM solver (to be generalized).## Some Features:
1) Implement greedy search algorithm for Frank Partial Dislocation energy barrier calculation in silicon thin film.
2) mdsw interfaces with openAI/gym. On going: Deep Q network search algorithm for Frank Partial dislocation nucleation mechanism.
3) tensor package enables automatic memory synchronization between GPU and CPU for tensors (same as Caffe).
4) python/tests/View.py uses PyOpenG for visualization.
5) Arrays can be exported as numpy arrays and modified in place (no deep memory copy is needed).Bug reports or questions:
1) Note: python script should not have the same name as the module because "module load" refers to the currently used python script, not the dynamic libraries.