ParallelMergeCSR

Merge-based Parallel Sparse Matrix-Vector Multiplication in Julia

https://github.com/queracomputing/parallelmergecsr.jl

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

julia matrix-multiplication
Last synced: 6 months ago · JSON representation ·

Repository

Merge-based Parallel Sparse Matrix-Vector Multiplication in Julia

Basic Info
  • Host: GitHub
  • Owner: QuEraComputing
  • License: apache-2.0
  • Language: Julia
  • Default Branch: main
  • Homepage:
  • Size: 945 KB
Statistics
  • Stars: 8
  • Watchers: 2
  • Forks: 2
  • Open Issues: 2
  • Releases: 3
Topics
julia matrix-multiplication
Created over 3 years ago · Last pushed over 1 year ago
Metadata Files
Readme License Citation

README.md

ParallelMergeCSR.jl

Build Status codecov

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

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

All Time
  • Total Commits: 46
  • Total Committers: 2
  • Avg Commits per committer: 23.0
  • Development Distribution Score (DDS): 0.196
Past Year
  • Commits: 1
  • Committers: 1
  • Avg Commits per committer: 1.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email 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
bug (1)
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

  • Versions: 4
  • Dependent Packages: 1
  • Dependent Repositories: 0
Rankings
Dependent repos count: 9.9%
Average: 36.2%
Dependent packages count: 38.9%
Stargazers count: 42.3%
Forks count: 53.5%
Last synced: 6 months ago

Dependencies

.github/workflows/CI.yaml actions
  • 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
.github/workflows/CompatHelper.yml actions
  • julia-actions/setup-julia v1 composite
.github/workflows/TagBot.yml actions
  • JuliaRegistries/TagBot v1 composite