# muda **Repository Path**: roger-jin/muda ## Basic Information - **Project Name**: muda - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: mini20 - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-09-15 - **Last Updated**: 2024-09-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README [TOC] # MUDA MUDA is **μ-CUDA**, yet another painless CUDA programming **paradigm**. > COVER THE LAST MILE OF CUDA ## Quick Overview **Detailed Introduction And Overview [Highly Recommended]** :arrow_right: https://mugdxy.github.io/muda-doc/ **Project Templates** :arrow_right: https://github.com/MuGdxy/muda-app, start your project with minimal effort. ```c++ #include #include #include using namespace muda; int main() { constexpr int N = 8; // resizable buffer DeviceBuffer buffer; buffer.resize(N); buffer.fill(1); // std::cout like logger Logger logger; // parallel for loop ParallelFor() .kernel_name("hello_muda") .apply(N, [ buffer = buffer.viewer().name("buffer"), logger = logger.viewer() ] __device__(int i) { logger << "buffer(" << i << ")=" << buffer(i) << "\n"; }); logger.retrieve(std::cout); // show print on std::cout } ``` ## Build ### Cmake ```shell $ mkdir CMakeBuild $ cd CMakeBuild $ cmake -S .. $ cmake --build . ``` ### Xmake Run example: ```shell $ xmake f --example=true $ xmake $ xmake run muda_example hello_muda ``` To show all examples: ```shell $ xmake run muda_example -l ``` Play all examples: ```shell $ xmake run muda_example ``` ### Copy Headers Because **muda** is header-only, copy the `src/muda/` folder to your project, set the include directory, and everything is done. ### Macro | Macro | Value | Details | | ------------------------- | ------------------- | ------------------------------------------------------------ | | `MUDA_CHECK_ON` | `1`(default) or `0` | `MUDA_CHECK_ON=1` for turn on all muda runtime check(for safety) | | `MUDA_WITH_COMPUTE_GRAPH` | `1`or`0`(default) | `MUDA_WITH_COMPUTE_GRAPH=1` for turn on muda compute graph feature | If you manually copy the header files, don't forget to define the macros yourself. If you use cmake or xmake, just set the project dependency to muda. ## Tutorial - [tutorial_zh](https://zhuanlan.zhihu.com/p/659664377) - If you need an English version tutorial, please get in touch with me or post an issue to let me know. ## Documentation Documentation is maintained on https://mugdxy.github.io/muda-doc/. And you can also build the doc by yourself. ## Examples - [examples](./example/) All examples in `muda/example` are self-explanatory, enjoy it. ![image-20231102030703199](./docs/img/example-img.png) ## Contributing Contributions are welcome. We are looking for or are working on: 1. **muda** development 2. fancy simulation demos using **muda** 3. better documentation of **muda** ## Related Work - Topological braiding simulation using **muda** (old version) ```latex @article{article, author = {Lu, Xinyu and Bo, Pengbo and Wang, Linqin}, year = {2023}, month = {07}, pages = {}, title = {Real-Time 3D Topological Braiding Simulation with Penetration-Free Guarantee}, volume = {164}, journal = {Computer-Aided Design}, doi = {10.1016/j.cad.2023.103594} } ``` ![braiding](./docs/img/braiding.png) - [solid-sim-muda](https://github.com/Roushelfy/solid-sim-muda): a tiny solid simulator using muda. ![solid-sim-muda](./docs/img/solid-sim-muda.png)