{"id":22132611,"url":"https://github.com/jonnor/alice-cuda-v0-vertex-finding","last_synced_at":"2026-07-15T15:31:03.167Z","repository":{"id":264949755,"uuid":"886251263","full_name":"jonnor/alice-cuda-v0-vertex-finding","owner":"jonnor","description":"V0 vertex finding for ALICE using CUDA (bachelor thesis, 2010)","archived":false,"fork":false,"pushed_at":"2024-11-10T15:39:50.000Z","size":54665,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-12-01T06:48:20.122Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Cuda","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jonnor.png","metadata":{"files":{"readme":"README","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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-11-10T15:37:29.000Z","updated_at":"2024-11-10T15:39:56.000Z","dependencies_parsed_at":"2024-11-26T23:46:41.868Z","dependency_job_id":null,"html_url":"https://github.com/jonnor/alice-cuda-v0-vertex-finding","commit_stats":null,"previous_names":["jonnor/alice-cuda-v0-vertex-finding"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jonnor/alice-cuda-v0-vertex-finding","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonnor%2Falice-cuda-v0-vertex-finding","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonnor%2Falice-cuda-v0-vertex-finding/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonnor%2Falice-cuda-v0-vertex-finding/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonnor%2Falice-cuda-v0-vertex-finding/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jonnor","download_url":"https://codeload.github.com/jonnor/alice-cuda-v0-vertex-finding/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonnor%2Falice-cuda-v0-vertex-finding/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35511322,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-15T02:00:06.706Z","response_time":131,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":[],"created_at":"2024-12-01T18:48:47.804Z","updated_at":"2026-07-15T15:31:03.150Z","avatar_url":"https://github.com/jonnor.png","language":"Cuda","funding_links":[],"categories":[],"sub_categories":[],"readme":"\nThis software implements v0 vertex finding for use in the ALICE experiement\n\nThis code is kept in a public git repository, at\nhttp://www.gitorious.org/cuda-alice-vertex-finding\nMore information can be found at the homepage for the bachelor thesis that did the initial work \nhttp://ri-pro.hive.no/prosjekter/EN2010-01\nand at the wiki\nhttp://huginn.hive.no/projects/Huginn/wiki/ProjectsPage/AliceVertexFinding\n\n== Usage ==\nThe supplied Makefile builds a shared library ./lib/libcudav0vertexer.so\nThis can then be linked against and used with AliROOT by patching it with\n\"aliroot-integration.patch\"\nSome paths in the patch and Makefile will need to be adapted \n\nCode tested on GNU/Linux, with AliROOT 5.26 and CUDA v2.3, CUDA 1.3 compute capability\n\n== Current status ==\nEN2010-01 bachelor thesis work completed\nCode returns correct number of v0s, and is partially optimized\nProvides between 4-10 times better performance than the original CPU code\nSignificantly better performance should be within reach, see below\n\n\n== IDEAS/TODO optimization and performance ==\n- Use constant memory for {x,y,z}primaryVertex\nEasy task, should improve performance somewhat due to caching\n\n- Better parallelization\nGet rid of the 1-1 mapping between number of threads and number of negative tracks\nand the for loop that loops over all positive tracks\nLet one thread compare X negative with Y positive tracks, where X is typically 1 and Y up to npos\n\nMore flexible solution, which will utilize the GPU better\nCould potentially make the algorithm close to O(1) for small to medium number of tracks\nShould make it possible to make use of the shared memory, and for threads within a block\nto hide latencies for global access for eachother\n\n- Try to reduce the amount of per-thread local memory used\nOr otherwise convince the compiler to use registers for per-thread variables\nShould improve performance as registers are order-of-magnitudes faster than local memory\n\n- Change datastructure for tracks from array of structs to struct of arrays\nThis should make it possible to coealsce memory fetches, which should \nresult in a big performance improvement. Requires changes throughout the code\n\n- Undiverge branches\nTry to let all threads follow the same computation path in CompareTracks()\nThis could potentially be beneficial due to reducing divergent branches\nbut can be deterimental because some threads are doing unneccesary computations\n\n- Single-precision, try to us floats\nThis requires that data type conversion is performed in the aliroot integration\nMight not be possible, double precision might be required for some, or all\ncomputations\n  - When using floats, faster implementations of some \n\n- Optimize SortTracks_kernel\nThis only makes sense once the Tracks2V0vertices_kernel is optimized so much\nthat it no longer takes up the majority of the execution time\nThe challenge here is the data structure that it writes output to (and the next kernel\nuses as input). An atomic operation for incrementing the indice in the output array\nmight be sufficient\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonnor%2Falice-cuda-v0-vertex-finding","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjonnor%2Falice-cuda-v0-vertex-finding","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonnor%2Falice-cuda-v0-vertex-finding/lists"}