ParallelMergeCSR
Merge-based Parallel Sparse Matrix-Vector Multiplication in Julia
Science Score: 57.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 1 DOI reference(s) in README -
○Academic publication links
-
○Committers with academic emails
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (14.0%) to scientific vocabulary
Keywords
Repository
Merge-based Parallel Sparse Matrix-Vector Multiplication in Julia
Basic Info
Statistics
- Stars: 8
- Watchers: 2
- Forks: 2
- Open Issues: 2
- Releases: 3
Topics
Metadata Files
README.md
ParallelMergeCSR.jl
An implementation/port of Merrill and Garland's Merge-based Parallel Sparse Matrix-Vector Multiplication (10.1109/SC.2016.57) paper in
the
Julia Programming Language
ParallelMergeCSR allows you to perform multithreaded CSC formatted sparse Matrix multiplication against dense vectors and matrices as long as the sparse Matrix has had a transpose or adjoint operation applied to it via LinearAlgebra, built-in to Julia Base. The reason for this is the original algorithm was restricted to CSR formatted sparse Matrices but by taking the transpose of a CSC matrix you've created a CSR representation of the same matrix.
ParallelMergeCSR only has one function intended for use: mul!, which is used for both Sparse Matrix - Dense Vector and Sparse Matrix - Dense Matrix multiplication. The function is not exported by default to avoid conflict with LinearAlgebra.mul! and must be invoked through its fully qualified name ParallelMergeCSR.mul!.
Supported Platforms
ParallelMergeCSR takes advantage of the Polyester.jl package for multithreading support. Unfortunately, Polyester has known issues with working on Mac OS and ParallelMergeCSR should be used on Linux platforms only.
Installation
You can install ParallelMergeCSR through the Julia package manager interface (just hit ] when you're in the Julia prompt) by typing the following:
add ParallelMergeCSR
Usage
Start Julia with the desired number of threads by launching it with the -t/--threads argument:
julia --threads <number_of_threads>
or setting JULIA_NUM_THREADS in your environment and then running Julia.
You can confirm Julia is using the specified number of threads via:
julia
julia> Threads.nthreads()
You can then use ParallelMergeCSR in a similar fashion to the example below:
```julia julia> using ParallelMergeCSR, SparseArrays
create a 20x20 transposed CSC-formatted Sparse matrix with a 30% chance of values appearing
julia> A = transpose(sprand(20, 20, 0.3));
dense vector (can be a matrix too)
julia> B = rand(size(A, 2));
output
julia> C = rand(size(A, 2));
coefficients
julia> α = -1.0; β = 2.9;
perform the operation C = ABα + Cβ, mutating C to store the answer
julia> ParallelMergeCSR.mul!(C, A, B, α, β) ```
Owner
- Name: QuEra Computing Inc.
- Login: QuEraComputing
- Kind: organization
- Email: info@quera.com
- Location: United States of America
- Website: https://www.quera.com/
- Twitter: QueraComputing
- Repositories: 8
- Profile: https://github.com/QuEraComputing
Building scalable quantum machines to make impossible problems simple.
Citation (CITATION.cff)
# This CITATION.cff file was generated with cffinit.
# Visit https://bit.ly/cffinit to generate yours today!
cff-version: 1.2.0
title: ParallelMergeCSR.jl
message: >-
If you use this software, please cite it using the
metadata from this file.
type: software
authors:
- given-names: Phillip
family-names: Weinberg
orcid: 'https://orcid.org/0000-0002-0654-9761'
affiliation: QuEra Computing Inc.
email: pweinberg@quera.com
- given-names: John
family-names: Long
email: jlong@quera.com
affiliation: QuEra Computing Inc.
orcid: 'https://orcid.org/0009-0005-7557-197X'
repository-code: 'https://github.com/QuEraComputing/ParallelMergeCSR.jl'
abstract: >-
An implementation/port of Merrill and Garland's
Merge-based Parallel Sparse Matrix-Vector Multiplication
(10.1109/SC.2016.57) paper in the Julia Programming
Language
keywords:
- julia
- matrix multiplication
license: Apache-2.0
GitHub Events
Total
Last Year
Committers
Last synced: 8 months ago
Top Committers
| Name | Commits | |
|---|---|---|
| John Long | j****l@p****h | 37 |
| Phillip Weinberg | w****8@g****m | 9 |
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 4
- Total pull requests: 35
- Average time to close issues: about 11 hours
- Average time to close pull requests: 14 minutes
- Total issue authors: 2
- Total pull request authors: 2
- Average comments per issue: 2.5
- Average comments per pull request: 0.26
- Merged pull requests: 35
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 0
- Pull requests: 0
- Average time to close issues: N/A
- Average time to close pull requests: N/A
- Issue authors: 0
- Pull request authors: 0
- Average comments per issue: 0
- Average comments per pull request: 0
- Merged pull requests: 0
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- Roger-luo (3)
- JuliaTagBot (1)
Pull Request Authors
- johnzl-777 (32)
- weinbe58 (3)
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 1
- Total downloads: unknown
- Total dependent packages: 1
- Total dependent repositories: 0
- Total versions: 4
juliahub.com: ParallelMergeCSR
Merge-based Parallel Sparse Matrix-Vector Multiplication in Julia
- Documentation: https://docs.juliahub.com/General/ParallelMergeCSR/stable/
- License: Apache-2.0
-
Latest release: 1.0.2
published almost 3 years ago
Rankings
Dependencies
- actions/checkout v3 composite
- codecov/codecov-action v3 composite
- fkirc/skip-duplicate-actions master composite
- julia-actions/julia-buildpkg v1 composite
- julia-actions/julia-processcoverage v1 composite
- julia-actions/julia-runtest v1 composite
- julia-actions/setup-julia v1 composite
- julia-actions/setup-julia v1 composite
- JuliaRegistries/TagBot v1 composite