Skip to content

thejonwong/warpkernel

Repository files navigation

Requirements for warpkernel.hpp:
1. CUDA 4.0
2. Thrust (http://docs.nvidia.com/cuda/thrust/index.html)

Optional Requirements for test codes. Packages listed below are used for comparison of results:
3. CUSP (http://code.google.com/p/cusp-library/)
4. ModernGPU sparse 

Installation:
Run "make all"

Warpkernel Library Usage:
1. scan
Prototype:
  void scan(uint & nz_, uint & nrows_, ValueType * A, IndexType * rows, IndexType *colinds, [IndexType threshold])
This scans the matrix A and analyzes its structure to generate the propper mappings for the warpkernels. For warpkernel::structure (K1) and warpkernel::structure2 (K2) have similar but separate scan calls that convert a matrix into the WPK1/2 formats repsectively.

2. Process
Performs the re-ordering of values and columns into the corresponding WPK format. warpkernel::engine instatiation will call this by default.

3. Run
warpkernel::engine::run will perform the SPMV multiplication on arrays x and y. On the other hand warpkernel::engine::run_x will perform the multiplication with the entries of X reordered (Kr). This means that for each entry of the reordered x array x', the result from run_x yields the proper corresponding entry in the original solution array y, y'. run computes A*x=y and run_x computes A*x'=y'.

4. Verify
warpkernel::engine::verify compare the computed vs another GPU SPMV computed result. verify_x remaps the compared result such that the ordering matches the ordering for the result vector for hte computed result if Kr SPMV algorithms are used.

About

warpkernel - GPU Sparse Matrix Vector Product library

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published