{"id":21152800,"url":"https://github.com/fatlipp/cuda-tree","last_synced_at":"2025-06-19T05:07:29.081Z","repository":{"id":228469105,"uuid":"774084082","full_name":"fatlipp/cuda-tree","owner":"fatlipp","description":"CUDA-based Tree builder","archived":false,"fork":false,"pushed_at":"2024-05-12T15:02:12.000Z","size":7093,"stargazers_count":5,"open_issues_count":1,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-20T12:28:02.570Z","etag":null,"topics":["algorithms","cpp","cuda","octree","quadtree","tree"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fatlipp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-03-18T23:09:52.000Z","updated_at":"2025-03-23T06:53:39.000Z","dependencies_parsed_at":"2024-11-20T11:22:55.195Z","dependency_job_id":"b06a86f5-07a0-42d2-924e-c02e4a3fe7c8","html_url":"https://github.com/fatlipp/cuda-tree","commit_stats":null,"previous_names":["fatlipp/cuda-tree"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/fatlipp/cuda-tree","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fatlipp%2Fcuda-tree","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fatlipp%2Fcuda-tree/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fatlipp%2Fcuda-tree/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fatlipp%2Fcuda-tree/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fatlipp","download_url":"https://codeload.github.com/fatlipp/cuda-tree/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fatlipp%2Fcuda-tree/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260690832,"owners_count":23047099,"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":["algorithms","cpp","cuda","octree","quadtree","tree"],"created_at":"2024-11-20T10:46:42.171Z","updated_at":"2025-06-19T05:07:24.059Z","avatar_url":"https://github.com/fatlipp.png","language":"C++","readme":"## CUDA based Tree builder (QuadTree, Octree)\n\nOctree                                      | QuadTree\n:------------------------------------------:|:---------------------------------------------:\n![Octree](/assets/Octree1.png) | ![QuadTree](/assets/QuadTree.png)\n![Octree](/assets/Skeleton.png) |\n\nFunctionality\n* CUDA tree builder\n* CPU kNN, Radius Search\n* 2d, 3d visualization (controls: WSAD R F, Mouse). Additional functionality for QuadTree - click on a Tree for kNN and RadiusSearch\n* Random Points Generator\n* Configuration file\n* An obj file loader\n\nSome implementation details:\n[Medium](https://medium.com/@fatlip/cuda-quadtree-octree-72e65216866c)\n\n---\n#### Build and Run\n```\n* mkdir build \u0026\u0026 cd build\n* cmake .. `[-DCUDA_ARCH=SET_YOUR_ARCH]`\n* make -j8\n* `./cuda_tree_app_TYPE ./app/config/AppConfig.json`\n* memory check: `compute-sanitizer --tool memcheck  ./cuda_tree_app_TYPE ./app/config/AppConfig.json`\n```\n* cuda_tree_app_TYPE:\n    * cuda_tree_app_rng - to use random points\n    * cuda_tree_app_obj - to read .obj file from `model_path` (only vertices)\n\n#### Config\n- `AppConfig.json` - contains general information (points count, pathes to Tree and Render config files)\n- `TreeConfig.json`:\n  * type - 'Quad' or 'Oct'\n  * size - width, height, depth (if Octree)\n  * threadsPerBlock - min **128** for QuadTree and **256** for Octree **(1 warp for each leaf)**\n- `RenderConfig.json` - all about rendering\n\n#### Requirements\n* CUDA 11.8+\n* C++ 17+\n* OpenGL, GLFW\n* nlohmann, tinyobjloader (included)\n\n\n#### Limitations\n* Tested on up to 150 mln points\n* Max *stable* depth: QuadTree = 7, Octree = 6\n* I recommend to disable rendering (`AppConfig.json`) if more than 50 mln points are used\n\n#### Further development\n1. CUDA based kNN, Radius Search\n2. Refactoring, CPU, GPU optimization\n3. OpenGL interop for faster visualization\n4. Raycasting\n5. KDTree\n\n---\n\n#### Disclaimer\n* Tested on Linux: Ubuntu 22.02, CUDA: 12.2, GPU: 3060 (laptop)\n* Approach based on Nvidia's QuadTree sample (cdpQuadtree)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffatlipp%2Fcuda-tree","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffatlipp%2Fcuda-tree","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffatlipp%2Fcuda-tree/lists"}