UPCBLAS is a parallel numerical library for UPC that provides functions for dense computations where the ease of use has been an important factor in all the design decisions in order to preserve the programmability property of the PGAS languages and reduce the library learning curve. The library works with the data distributions provided by the user through the block factor specified in shared arrays. Thus, UPCBLAS is easier and more intuitive to use than message-passing based numerical libraries (e.g. PBLAS) thanks to using directly the vectors and matrices as source and result parameters of the routines as in sequential BLAS, instead of using the complex data structures that PBLAS routines need to handle distributed vectors and matrices. Besides, the ease of programming is twofold: on the one hand, the BLAS-like interface facilitates the use of the library to programmers used to sequential BLAS and, on the other hand, the syntax of UPCBLAS is very familiar to UPC programmers as it is similar to that of the UPC collectives library.
Several optimization techniques have been applied to improve performance. Some examples are privatization of shared pointers, bulk data movements, redesign of some collective operations or implementation of on-demand copies. Furthermore, sequential BLAS routines are embedded in the body of the corresponding UPC routines. Using sequential libraries not only improves efficiency, but it also allows to incorporate automatically new versions as soon as available without any change in the UPC code.
The current version of the library provides a UPC parallel version of the following routines
- BLAS1: copy, swap, scal, axpy, dot, nrm2, asum
- BLAS2: gemv, ger, trsv
- BLAS3: gemm, trsm
All routines are available for single and double precision either for real or complex numbers. Click here for more documentation about UPCBLAS
Currently, UPCBLAS works for Berkeley UPC, HP UPC and Cray UPC compilers and the libraries MKL, GSL, LibSci and GOTOBLAS. If you need support for a different configuration or you find any problem, please contact firstname.lastname@example.org.
Funded by the Ministry of Economy and Competitiveness of Spain under Project TIN2010-16735 and the Ministry of Education of Spain under an FPU grant AP2008-01578. It has also been developed under a joint project of the University of A Coruña (UDC), HP and the Galicia Supercomputing Center (CESGA): "Improving UPC Usability and Performance in Constellation Systems: Implementation/Extensions of UPC Libraries"