-
Notifications
You must be signed in to change notification settings - Fork 20
Specializers
chick edited this page Dec 18, 2013
·
36 revisions
This page lists all currently available specializers. Some are still under development.
- Maintainers: Derrick Coetzee [email protected]
- Description: These two very simple specializers introduce specializer developers to concepts about creating specializers based on templates and tree transformations, respectively.
-
Download: Included under specializers in Standard Asp repository (use
git clone git://github.com/shoaibkamil/asp.git
) - Targets supported: Generates sequential code for CPU
- Maintainers: Shoaib Kamil [email protected]
- Description: The stencil specializer permits iterating over a grid in n-dimensional space and performing a local computation at each point to produce an output grid.
- Example use/applications: A simple example is blurring an image by averaging the surrounding 4 pixels at each point. Other more complex examples include: performing a median filter on a 2D or 3D image, solving partial differential equations such as heat flow models, and cellular automata.
- Download: Github repository.
- Targets supported:: OpenMP on x86/x64. Intel C++ compiler, gcc.
- Links to example code: Simple example summing adjacent cells, Bilateral filter example
- References to academic papers: Bringing Parallel Performance to Python with Domain-Specific Selective Embedded Just-in-Time Specialization. Shoaib Kamil, Derrick Coetzee, Armando Fox. 10th Python for Scientific Computing Conference, 2011. "Example Walkthrough" section and "Stencil" subsection of "Results".
- Maintainers: Shoaib Kamil [email protected], Aydin Buluç [email protected]
- Description: Knowledge Discovery Toolbox (KDT) exposes a set of high-performance graph algorithms based on semirings. This specializer supports custom semiring operations in KDT, facilitating new algorithms.
- Example use/applications: See KDT Wiki: Using Semirings.
- Download: Included in KDT release.
- Targets supported:: KDT uses Combinatorial BLAS as its backend, which uses C++/MPI and supports a variety of tools, see Combinatorial BLAS Library.
- Links to example code: See KDT specializer unit tests.
- References to academic papers: IPDPS 2013. See also KDT publications.
- Maintainers: Henry Cook [email protected], Katya Gonina [email protected]
- Description: Trains Gaussian Mixture Models (GMMs) with high performance on NVIDIA GPUs by emitting CUDA. See Mixture model on Wikipedia.
- Example use/applications: "used in speech recognition, image segmentation, document classification, and numerous other areas"
- Download: Github repository
- Targets supported:: Requires both C++ on x86 host and CUDA on NVIDIA GPU.
- Links to example code: See GMM specializer examples.
- References to academic papers: CUDA-level Performance with Python-level Productivity for Gaussian Mixture Model Applications. Henry Cook, Ekaterina Gonina, Shoaib Kamil, Gerald Friedland, David Patterson, Armando Fox. In Proceedings of the 3rd USENIX conference on Hot topics in parallelism (HotPar'11). 2011.
- Maintainers: Shoaib Kamil [email protected]
- Description: Specializers designed to distribute map, map-like, and map-reduce-like computations over a set of local Python interpreter processes. No native code generation or distribution across clusters currently available.
- Example use/applications: Map-reduce jobs like index construction, clustering, machine learning, pattern search (see MapReduce uses on Wikipedia).
- Download: Github repository
- Targets supported:: Currently only targets interpreted Python.
- Links to example code: Unit tests
- References to academic papers: Not currently available.
- Maintainers: Peter Birsinger [email protected], Aakash Prasad [email protected], David Howard [email protected]
- Description: The BLB (Bag of Little Bootstraps) pattern is a method for assessing statistical estimates, and the quality of those estimates, on large data sets. The basic approach is to apply the relevant estimator function to much smaller subsamples of the data set, and aggregate the results.
- Example use/applications:
- Download: Github repository
- Targets supported:: OpenMP on x86/x64, Cilk, Spark Cluster Computing System
- Links to example code: Using the specializer
- References to academic papers: A Scalable Bootstrap for Massive Data. Ariel Kleiner, Ameet Talwalkar, Purnamrita Sarkar, Michael I. Jordan. 2011., See also: Parallel High Performance Bootstrapping in Python. Aakash Prasad, David Howard, Shoaib Kamil, Armando Fox. 2012
- Maintainers: Jeffrey Morlan [email protected]
- Description: This specializer implements the matrix powers kernel: given a vector x and sparse matrix A, it computes [Ax, A^2x, ..., A^kx], or some equivalent basis spanning the same subspace.
- Example use/applications: The matrix powers kernel is used in communication-avoiding Krylov subspace methods. Some common KSMs include CG, BiCGSTAB, and GMRES, which are used to solve linear systems (Ax = b), and Lanczos and Arnoldi, which are used to find eigenvalues/eigenvectors of a matrix.
- Download: Github repository
- Targets supported:: x86 multicore, using either OpenMP or pthreads
- Links to example code: cacg.py implements a communication-avoiding CG solver using the specializer.
- References to academic papers: Auto-tuning the Matrix Powers Kernel with SEJITS. Jeffrey Morlan.
- Maintainers: Scott Beamer [email protected]
- Description: Implementation of the Bulk Synchronous Parallel (BSP) model for Graph algorithms
- Example use/applications:
- Download: Github repository
- Targets supported::
- Links to example code:
- References to academic papers: