Batched BLAS Operations at SIAM CSE17

Over the last year, there has been significant interest in solving many small linear algebra problems simultaneously. Library vendors such as MKL and NVIDIA, along with researchers at instutions including Manchester, Tennessee, and Sandia National Labs have all been attempting to perform these calculations as efficiently as possible.

Over the weekend prior to the SIAM CSE17 meeting, many of those researchers (including myself) held a workshop to discuss strategies for batched BLAS (basic linear algebra subprogram) computations. Furthermore, lots of discussion was aimed at standardising the function APIs and the memory layout that users will interact with. The slides, and a number of research papers on the topic, are available at this page.

At the SIAM CSE17 meeting, our team at Manchester organised a minisymposium to discuss the highlights of our weekend with a wider audience. A brief summary of the four talks, along with a copy of their slides, is given below.

Continue reading “Batched BLAS Operations at SIAM CSE17”

Using implicit matrices in Python

There are lots of new features in SciPy 0.13 (release notes) but for me the most important are the updated matrix functions in scipy.linalg and the one norm estimator in scipy.sparse.linalg.

In some of my recent research (related to section 4 of this) I’ve needed to estimate the one norm of a large (n^4 x n^2) dense matrix without computing each element. All we can assume is the ability to compute matrix-vector products (via some rather complicated function), meaning we only know the entries of the matrix implicitly.

Continue reading “Using implicit matrices in Python”

Emacs and Anaconda Python

Recently I posted a blog about using Emacs and Python together. It was about having setting in your .emacs file allowing Emacs to interact with the default Python and SciPy/NumPy from the Ubuntu repositories, which is out of date. After changing Python version to Anaconda Python this broke all my Emacs setup! It was a real pain to fix so I’ve collected the main ideas here.

Anaconda Python

To use the latest versions of the Python packages like SciPy and NumPy I downloaded the Anaconda Python distribution. It includes lots of the most useful Python packages for scientific computing by default such as

  • Numba and Cython for speeding up code.
  • SymPy for symbolic computation.
  • F2Py for converting Fortran code.
  • IPython for a better interactive experience.
  • mpi for parallel computing.
  • PEP8 and PyFlakes to enforce coding standards.

I’d really recommend it as an easy way to get a good Python install. You can also pay extra for upgrades like linking NumPy with MKL for enhanced speed (which is free for academics).

Continue reading “Emacs and Anaconda Python”

Emacs and Python

Currently at Manchester we’re debating whether to try and use more open source software like Python within our research. I’d never used Python before but whilst learning it I wanted to configure it for use in Emacs.

Unfortunately I couldn’t find a guide to setting up Emacs for scientific computing. However there is a lot of information out there (references at the end). This post will hopefully bring together the basic information needed to get a working Python setup in Emacs for computational scientists.

Continue reading “Emacs and Python”