Intuitive Open Platform Usage of ASCR Resources in NumPy
The Advanced Scientific Computing Research (ASCR) program from the Department of Energy (DOE) has over the years sponsored the development of many important codes, such as Lattice QCD, Trilinos, PETSc, and Paraview, some of which are libraries. The use libraries in their code allows scientists to concentrate their efforts on their science rather than on the implementation of an often-implemented mathematical technique. The benefit to the programmer is very large, but to non-programmers these libraries remain inaccessible. There is a desire by the DOE to broaden the audience for these codes. The Matlab computing environment is often used by both programmers and non-programmers to achieve remarkable numerical results in a short timeframe and without requiring a deep knowledge of programming. For many scientists, Matlab is a primary tool, but it is not an open platform. More recently, the NumPy and SciPy packages for the Python programming language has sought to bring the power of Matlab into an open environment. Thus, the NumPy/SciPy environment is poised to finally provide an open alternative to Matlab. NumPy at its core provides a matrix abstraction for Python, and then a very large suite of packages in SciPy provide specific functionality, such as linear algebra operations, graphing, optimization routines, etc. A few ASCR libraries are already available as NumPy modules, including Trilinos (PDE operations and linear algebra), SuperLU (sparse matrix direct solutions), and Sundials (nonlinear solvers). These packages are packed for Python essentially as copies of their native C/C++/Fortran interfaces, which requires that the NumPy user understand the usage details and syntax of the library. In contrast, in a Matlab environment, the user focuses on math syntax. Matlab internally uses libraries to fill out the mathematical back-end functions, and then provides very convenient and math-focused syntax where the user does not even need to be aware of the underlying library code. Consider thesystem solve operator, which is A\b, where A is a matrix and b is a vector to solve against. Matlab examines the matrix and calls an appropriate solver from an underlying library such as LAPACK or UMFPACK. We will use this project to bring this level of expression to the Python environment, where the backing functions will be supplied by the robust libraries already funded by ASCR. Our proposed method is to augment the existing tools, especially SciPy, to accomplish three primary goals. First is to increase the mathematical expressiveness of the package by enhancing certain key operators such as the system solve operator described above. Second is to increase the use of ASCR libraries by folding in their functionality to the operators as we perform our work. In Phase I, we will prototype this procedure by making a seamless integration of the ASCR-funded library SuperLU, which is a direct solver for sparse linear systems. EM Photonics is a creator of GPU-enhanced libraries, and we will integrate one of these to increase the speed of Python computations by tenfold or more. Third, our work will further the ability of Python to be used simultaneously for both prototyping and deployment, which often requires separate programs coded in different languages.
Small Business Information at Submission:
51 East Main Street Suite 203 Newark, DE 19711-4685
Number of Employees: