{"id":19458110,"url":"https://github.com/vrann/akka-block-matrix-operations","last_synced_at":"2025-06-27T14:07:59.949Z","repository":{"id":80381148,"uuid":"212799603","full_name":"vrann/akka-block-matrix-operations","owner":"vrann","description":"Library to perform distributed matrix operations using actor model with Akka","archived":false,"fork":false,"pushed_at":"2023-12-05T22:25:18.000Z","size":118,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-25T11:47:43.551Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","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/vrann.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":"2019-10-04T11:29:05.000Z","updated_at":"2020-11-14T10:47:57.000Z","dependencies_parsed_at":null,"dependency_job_id":"f937d6d2-cded-4a01-a00a-9c3b74823c3e","html_url":"https://github.com/vrann/akka-block-matrix-operations","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/vrann/akka-block-matrix-operations","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vrann%2Fakka-block-matrix-operations","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vrann%2Fakka-block-matrix-operations/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vrann%2Fakka-block-matrix-operations/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vrann%2Fakka-block-matrix-operations/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vrann","download_url":"https://codeload.github.com/vrann/akka-block-matrix-operations/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vrann%2Fakka-block-matrix-operations/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262270427,"owners_count":23285165,"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":[],"created_at":"2024-11-10T17:25:30.549Z","updated_at":"2025-06-27T14:07:59.920Z","avatar_url":"https://github.com/vrann.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Block Matrix Manager with Akka\n\nThese are set of tools to implement distributed block matrix operations with the actor model.\n\n**Distributed matrix operations**, such as matrix multiplication, matrix factorization, etc are operations which can be \ncalculated concurrently on multiple computers\n\n**Block matrix** is a way to represent large matrices as a combination of smaller size matrices. \nThe size of the block, smaller matrix which original matrix consists of, is selected in the way that the operation on it \ncan be efficiently calculated on one computer.\n\n**Block Matrix algorithms** is the class of algorithms which express the calculation of the operation on original large matrix via \nthe number of calculations on smaller matrices and the way to combine the result.\n\n**Actor Model** is a conceptual model which describes the distributed computation as a complex choreography of the smaller\ncomponents which play the role in overall process. It is distinguished from other forms of the parallel/concurrent programing \nmodels by the way of expressing the process in declarative style. Usually what is declared are events happening in the process\nand reactive handlers to those events.\n\n**Akka** is the most popular implementation of the Actor Model approach to distributed computations.\nIt has state of the art tools and techniques built in which allows fast experimentations with the\napproach\n\n## Library for Actor Model application to Block Matrix Algorithms\n\nThis library provides high-level building blocks to implement Block Matrix Algorithms with the Akka.\n\n### Topology\n\nDistributed algorithm is executed on the set nodes -- 1..N machines\nWhen matrix is splitted in smaller sub-matrices, blocks, every block is get assigned to the particular section.\nEvery node would be responsible for 1..M matrix blocks idenififed by it's coorinates in the matrix.\nLogical representation of the nodes are **Sections** -- mapping of the matrix blocks to the execution nodes. \nMapping is done via configuration file placed on the node.\n\nWhen expressing block matrix algorithms in actor model, natural way to handle that is to have separate actor for each\nblock. However not all blocks would be processed differently.\n\nNature of the distributed block matrix algorithm is that different operations are applied to the different block types.\nI.e. diagonal blocks vs sub-diagonal blocks, blocks in the first row/column, etc. That's why different block types would\nbe subscribed to the different events and execute different handlers. That's why there would be generic actor responsible \nfor processing matrix block which would have custom logic depending on the position of the block in the matrix.\n\nSection is subscribed to all the events which corresponds to every block it is consists of and executes handlers to \nthose events.\n\n### Componenets\n\n**File Transfer component** sets up initial actor placement, basic events and coordination between actors to enable files\nexchange. File transfer is initiated by the event about file is ready on \n\n**Section Coordinator** is responsible for running the actors for the blocks related to the section and subscribe them on \nall the events. It also responsible for setting up file transfers with other sections.  \n\n**Generic Block Matrix Actor** implementation of the actor which can have element attached with the correct handlers\n\n**Elements**: Based on position of the blocks there are different events and responsibilities. These differences are \nencapsulated in Elements logic. Currently supported elements are: Diagonal position (N, N), Sub-Diagonal position (N, M: M\u003eN), \nZero position (0,0)\n\n**Handlers** are algorithm-specific pieces of logic attached to the elements to handle the events\n\n## Algorithms implemented\n\nCholesky block matrix decomposition\n\n## Deployment\n\nThe orchetsration of the system is done via kubernetes. When specifying new orchestration, kubernetes configuration should \nbe changed to reflect","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvrann%2Fakka-block-matrix-operations","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvrann%2Fakka-block-matrix-operations","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvrann%2Fakka-block-matrix-operations/lists"}