Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WIP] Sparse semiring follow-on & optimizations #3468

Closed
wants to merge 2 commits into from

Conversation

cjnolet
Copy link
Member

@cjnolet cjnolet commented Feb 5, 2021

Closes #3371

A couple changes requested in #3157 that should be applied to this PR:

@cjnolet cjnolet requested review from a team as code owners February 5, 2021 20:13
@cjnolet
Copy link
Member Author

cjnolet commented Feb 11, 2021

Current plan is to optimize where at all possible:

  1. when n_cols < smem available: use coo_spmv w/ smem to store A in dense form
  2. when n_cols > smem available but max_degree(A) < smem available: use coo_spmv w/ hash table in smem to store A in sparse form (and revert to binary search in smem when the hash table becomes full enough).
  3. when n_cols > smem available and max_degree(A) > smem available but only a few entries have that max degree and the rest are closer to 0, use chunks (multiple blocks) of coo_spmv w/ chunks over only rows w/ large degrees to store A in sparse form in smem.

Either 1 is able to be performed, or 2 & 3 can be performed independently. While different amounts of smem could be required (and less smem used will allow more blocks to be scheduled), it might be better to launch different kernels for each of the strategies, based on how much smem would be used. Perhaps this could be done by diving the rows of A into buckets and launching separate kernels (one for each bucket).

@ajschmidt8
Copy link
Member

@cjnolet, can you try updating your branch? The PR below just merged which should get branch-0.19 up-to-date and remove some of these extraneous commits from your PR.

#3444

@cjnolet cjnolet added 2 - In Progress Currenty a work in progress CUDA / C++ CUDA issue non-breaking Non-breaking change improvement Improvement / enhancement to an existing function labels Feb 22, 2021
@github-actions
Copy link

This PR has been labeled inactive-30d due to no recent activity in the past 30 days. Please close this PR if it is no longer required. Otherwise, please respond with a comment indicating any updates. This PR will be labeled inactive-90d if there is no activity in the next 60 days.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
2 - In Progress Currenty a work in progress CUDA / C++ CUDA issue improvement Improvement / enhancement to an existing function inactive-30d non-breaking Non-breaking change
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[FEA] Optimizations to sparse semiring distances
2 participants