{"id":19825653,"url":"https://github.com/imsy-dkfz/mcmlgpu","last_synced_at":"2025-05-01T14:30:36.935Z","repository":{"id":252780940,"uuid":"841423594","full_name":"IMSY-DKFZ/mcmlgpu","owner":"IMSY-DKFZ","description":"This repository contains the base code for Monte Carlo simulations in a GPU of light transport on turbid media in GPU.","archived":false,"fork":false,"pushed_at":"2025-01-23T13:36:13.000Z","size":3346,"stargazers_count":4,"open_issues_count":4,"forks_count":0,"subscribers_count":3,"default_branch":"develop","last_synced_at":"2025-04-12T07:53:05.552Z","etag":null,"topics":["gpu","montecarlo-simulation","parallel-computing"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/IMSY-DKFZ.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-08-12T11:31:37.000Z","updated_at":"2024-11-04T13:54:43.000Z","dependencies_parsed_at":null,"dependency_job_id":"b0a4621c-529f-4741-b71a-d65e8ce0cf9d","html_url":"https://github.com/IMSY-DKFZ/mcmlgpu","commit_stats":null,"previous_names":["imsy-dkfz/mcmlgpu"],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IMSY-DKFZ%2Fmcmlgpu","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IMSY-DKFZ%2Fmcmlgpu/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IMSY-DKFZ%2Fmcmlgpu/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IMSY-DKFZ%2Fmcmlgpu/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/IMSY-DKFZ","download_url":"https://codeload.github.com/IMSY-DKFZ/mcmlgpu/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251889935,"owners_count":21660415,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gpu","montecarlo-simulation","parallel-computing"],"created_at":"2024-11-12T11:08:19.475Z","updated_at":"2025-05-01T14:30:36.064Z","avatar_url":"https://github.com/IMSY-DKFZ.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Tests](https://github.com/IMSY-DKFZ/mcmlgpu/actions/workflows/build.yml/badge.svg?branch=develop)\n![Static Badge](https://img.shields.io/badge/releases%20-%20Semantic%20Versioning%20-%20green?logo=semver)\n![Language](https://img.shields.io/badge/Language%20-%20C%2B%2B11%20-%20green?logo=cplusplus)\n![Static Badge](https://img.shields.io/badge/Language%20-%20CUDA%20-%20green?logo=nvidia)\n![Static Badge](https://img.shields.io/badge/Pre%20Commit%20hooks%20-%20Enabled%20-%20?logo=precommit\u0026color=pink)\n![Static Badge](https://img.shields.io/badge/Doc%20Style%20-%20Doxygen%20-%20?color=pink)\n![Static Badge](https://img.shields.io/badge/Code%20Style%20-%20Microsoft%20%20-%20?color=pink)\n![Static Badge](https://img.shields.io/badge/Application%20-%20CLI%20-%20green?logo=gnubash)\n![Static Badge](https://img.shields.io/badge/System%20-%20Linux%20-%20green?style=flat\u0026logo=Ubuntu)\n\n\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"resources/icon.png\" alt=\"Logo\" width=\"200\"/\u003e\n\u003c/p\u003e\n\n# Monte Carlo Multi Layer accelerated by GPU\n\nThis repository contains the base code for Monte Carlo simulations in a GPU of light transport on turbid media in GPU.\nCustom implementations have been added to the original code developed by\n[Erik Alerstam, David Han, and William C. Y. Lo](https://code.google.com/archive/p/gpumcml/).\n\nThis project adds the following features:\n\n1. Modern build and install rules with CMake.\n2. Custom targeting of compute capabilities for modern GPUs through the flag `-DCUDA_ARCH`.\n3. Reduces IO operations thus increasing speed.\n4. New docker image.\n5. Easy install and uninstall mechanisms.\n6. Conan packaging enabled.\n7. Adds computation of penetration depth for each simulation at runtime.\n8. Modern code styling using pre-commit hooks.\n9. Progress bar display for simulations.\n10. Reduced terminal clutter.\n11. Eliminates dependency to deprecated `cutil` library.\n\n[![asciicast](https://asciinema.org/a/EIYfdZXnjKoDHhXUN1TooJAWK.svg)](https://asciinema.org/a/EIYfdZXnjKoDHhXUN1TooJAWK)\n\n# Setup development environment\nAll you need to have is a `CUDA` capable computer and `cmake`. You can set up these dependencies by running\nthe following commands from a terminal:\n\n```bash\nsudo apt update\nsudo apt install cmake\n```\n\nTo develop a new feature you should create a new issue in [gitlab](https://git.dkfz.de/imsy/issi/mcmlgpu/-/issues). And\nstart to work in the feature by creating a new branch `\u003cissue-number\u003e-task_short_name`. Once\nyou have pushed your changes into the branch, you can start a merge request in GitLab.\n\n# Build\nYou will first need to install some dependencies. You need to make sure that you have a CUDA capable computer.\nYou can easily check this by doing `nvcc --version` from a terminal. If there is no error in that command, then you can\nproceed to install the following dependencies:\n\n```bash\nsudo apt install cmake git\n```\n\nAfter installing the dependencies, you can build MCML as follows.\nYou should make sure to indicate the correct GPU compute capabilities for your GPU.\nYou can list the supported ones by doing: `nvcc --list-gpu-code`.\n\n```lang=bash\nmkdir build\ncd build\ncmake .. -DCUDA_ARCH=86 -DCMAKE_INSTALL_PREFIX=/usr\nmake MCML -j\n```\n\nTo install or uninstall the application on the system, you can run the following.\nYou will need sudo permission if the path indicated in the previous step \"CMAKE_INSTALL_PREFIX\" is privileged.\n````bash\nmake install\nmake uninstall\n````\n\nThis application can also be packaged using conan. To do so, you should do the following from the root directory\nof the repository.\n\n```bash\nconan create . issi/stable-cuda11.5-sm86 -o cuda_arch=86\n```\n\n# Running an example\nAfter building `MCML`, you can run an example to be sure that it is working as intended:\n\n```bash\nMCML -i resources/sample.mci -O batch.mco\n```\n\nThis should create a file called `batch.mco` with the following content:\n\n```text\nID,Specular,Diffuse,Absorbed,Transmittance,Penetration\nMCML_Bat_NA_0_Sim_0_3.00e-07.mco,0.02404,0.0277725,0.948185,0,0.998\nMCML_Bat_NA_0_Sim_0_3.02e-07.mco,0.02404,0.0299027,0.946057,0,0.998\n```\n\n# Contributing a feature/bug fix\nIf you have doubts on how to finish your feature branch, you can always ask for help\n\n1. Create an issue on `GitHub \u003chttps://github.com/IMSY-DKFZ/mcmlgpu/issues\u003e`_, if a task does not exist yet.\n2. Assign the task to you.\n3. Create a fork of the repository.\n4. Create a new branch.\n   The `branch name` has to match the following pattern: `\u003cissue-number\u003e-\u003cshort_description_of_task\u003e`\n5. Implement your feature\n6. Update :code:`feature` branch: :code:`git checkout \u003cbranch_name\u003e \u0026\u0026 git merge develop`.\n7. Create a merge request for your feature.\n   select `develop` as the destination branch.\n8. The branch will be reviewed and automatically merged if there are no requested changes.\n\n# Docker image\nWe also have a docker image that you can use for your projects. The image can be built by running the following command\nin a terminal. Make sure to have _Docker_ or _Docker compose_ installed on your computer. You can append the flag\n`--progress plain` to view more details about the progress.\n\n```bash\ndocker build -t mcml:latest .\ndocker run mcml:latest\n```\n\n# Funding\nThis project has received funding from the European Research Council (ERC) under the European Union’s Horizon 2020 research and innovation programme (grant agreement No. [101002198]).\n\n![ERC](resources/LOGO_ERC-FLAG_EU_.jpg)\n![DKFZ](resources/LOGO_DKFZ.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fimsy-dkfz%2Fmcmlgpu","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fimsy-dkfz%2Fmcmlgpu","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fimsy-dkfz%2Fmcmlgpu/lists"}