13.07.2015 Views

Duane Merrill (NVIDIA) - GPU Technology Conference

Duane Merrill (NVIDIA) - GPU Technology Conference

Duane Merrill (NVIDIA) - GPU Technology Conference

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Data-parallel <strong>GPU</strong> approach• Input: Vertex set V, row-offsets array R, column-indices array C, source vertex s• Output: Array MIS[0..n-1] with MIS[v] holding membership flag (1|-1) in the maximalindependent set constructed.kernel kernel1. parallel for (i in V) :2. MIS[i] := 03. do :4. done := true5. parallel for (i in V) :6. if (MIS[i] == 0)7. dependent i := false8. done := false9. local_min i := i10. for (offset in R[i] .. R[i+1]-1) :11. j := C[offset]12. if (MIS[j] == 1)13. dependent i = true14. else if ((MIS[j] == 0) && (permute(j) < permute(i))15. local_min i := j16. if (dependent i )17. MIS[i] := -118. else if (local_min i == i)19. MIS[i] := 120. while (!done)Good: trivial data-parallel <strong>GPU</strong> stencilsE.g., CUSP library, Hoberock, Cohen, Wang,etc.Bad: average case O(m log n) workbecause edges are never removed44

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!