-
Notifications
You must be signed in to change notification settings - Fork 29
Summary: Build an interface to the Thrust Graph Library, and offer some usability imrpovements to the Rth package.
Description: The Rth package offers parallelism to R via the thrust template library. Thrust allows developers to write their C++ code once (if some care is taken) and have it compile to use OpenMP, Intel TBB, or Cuda. This enables users to compile the Rth package against their preferred parallel backend and have multicore or GPU parallelism with many common functions (e.g., sort, distance computations, pearson correlation, ...).
In this project, we hope to extend Rth functionality to include an interface to the Thrust Graph Library, to bring parallel graph computations to R. In addition, we intend to include some basic graphics capabilities for existing Rth routines.
Related work: The current gold standard for network analysis in R is igraph. While igraph is a spectacular package, it is inherently serial. This project would have vastly reduced functionality compared to igraph; but for certain computationally expensive graph operations, the Rth approach (same code/different parallel backend) is compelling.
Potential tasks:
- Develop a new package RthGraph that integrates the Thrust Graph Library.
- Add some simple graphics capabilities for existing Rth routines.
- Improve the compatibility of existing Rth routines with GPU builds.
Skills required:
- C++
- Parallel programming background.
Test: Write a C/C++ function, callable by R (use of Rcpp is fine) that solves a simple numerical problem (e.g., sum of elements of a vector), and (correctly) uses OpenMP to perform the operation in parallel.
Mentor: [Norm Matloff](nsmatloff .AT. ucdavis.edu) and [Drew Schmidt](mailto:wrathematics .AT. gmail.com)