{"id":13696575,"url":"https://github.com/domargan/parallel-packed-csr","last_synced_at":"2025-05-03T17:31:36.101Z","repository":{"id":56095369,"uuid":"276150765","full_name":"domargan/parallel-packed-csr","owner":"domargan","description":"A parallel packed CSR data structure for large-scale dynamic graphs","archived":false,"fork":false,"pushed_at":"2022-10-24T00:46:45.000Z","size":18221,"stargazers_count":13,"open_issues_count":3,"forks_count":4,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-11-13T00:32:53.874Z","etag":null,"topics":["csr","data-structures","dynamic-graphs","evolving-graphs","graph","graph-data","graph-databases","graph-datastructures","graph-processing","graphs","packed-memory-array","pcsr","stream-graphs","streaming-graph-data","streaming-graph-processing"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/domargan.png","metadata":{"files":{"readme":"README.md","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}},"created_at":"2020-06-30T16:17:26.000Z","updated_at":"2024-02-12T01:12:45.000Z","dependencies_parsed_at":"2023-01-20T09:27:15.883Z","dependency_job_id":null,"html_url":"https://github.com/domargan/parallel-packed-csr","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/domargan%2Fparallel-packed-csr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/domargan%2Fparallel-packed-csr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/domargan%2Fparallel-packed-csr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/domargan%2Fparallel-packed-csr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/domargan","download_url":"https://codeload.github.com/domargan/parallel-packed-csr/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252226755,"owners_count":21714864,"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":["csr","data-structures","dynamic-graphs","evolving-graphs","graph","graph-data","graph-databases","graph-datastructures","graph-processing","graphs","packed-memory-array","pcsr","stream-graphs","streaming-graph-data","streaming-graph-processing"],"created_at":"2024-08-02T18:00:42.766Z","updated_at":"2025-05-03T17:31:35.731Z","avatar_url":"https://github.com/domargan.png","language":"C++","readme":"# Parallel Packed CSR\nA parallel implementation of the packed CSR data structure, based on its initial single threaded design[[1]](#1)(https://github.com/wheatman/Packed-Compressed-Sparse-Row/) and further parallel extension [[2]](#2).\nAccepts a core graph, which it loads first and an update file, which it uses to update the core graph (insert or delete edges).\nPerforms edge insertions and deletions in parallel and uses NUMA-aware placement of data and worker threads.\n\n# Prerequisites\n* CMAKE 3.8 or newer required.\n\n# Build\nCreate a build directory and run cmake \u0026 make there:\n```\n$ mkdir build \u0026\u0026 cd build\n$ cmake ..\n$ make\n```\n# Running\nRun the `parallel-packed-csr` binary from your build directory.\n\n## Command line options\n* `-threads=`: specifies number of threads to use for updates, default=8\n* `-size=`: specifies number of edges that will be read from the update file, default=1000000\n* `-lock_free`: runs the data structure lock-free version of binary search, locks during binary search by default\n* `-partitions_per_domain=`: specifies the number of graph partitions per NUMA domain\n* `-insert`: inserts the edges from the update file to the core graph\n* `-delete`: deletes the edges from the update file from the core graph\n* `-core_graph=`: specifies the filename of the core graph\n* `-update_file=`: specifies the filename of the update file\n* Available partitioning strategies (if multiple strategies are given, the last one is used):\n  * `-ppcsr`: No partitioning\n  * `-pppcsr`: Partitioning (1 partition per NUMA domain)\n  * `-pppcsrnuma`: Partitioning with explicit NUMA optimizations (default)\n\n# Authors\n* Eleni Alevra\n* Christian Menges \n* Dom Margan \n\n# References\n\u003ca id=\"1\"\u003e[1]\u003c/a\u003e\nWheatman, B., \u0026 Xu, H. (2018).\nPacked Compressed Sparse Row: A Dynamic Graph\nRepresentation. \n2018 IEEE High Performance Extreme Computing Conference, HPEC 2018.\n\n\u003ca id=\"2\"\u003e[2]\u003c/a\u003e\nAlevra, E., \u0026 Pietzuch, P. (2020).\nA Parallel Data Structure for Streaming Graphs. \nMaster’s thesis, Imperial College London, 2020.\n","funding_links":[],"categories":["Open Source Projects"],"sub_categories":["Data Structures, Systems and Frameworks"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdomargan%2Fparallel-packed-csr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdomargan%2Fparallel-packed-csr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdomargan%2Fparallel-packed-csr/lists"}