When I joined NAG, 23 years ago, we were a software company that did a bit of consultancy on the side. In the intervening years we’ve had a number of high-profile service contracts – developing ACML for AMD, providing CSE support for HECToR and, today, providing a specialist team to a customer in Houston. However, what is perhaps less apparent is the large number of smaller contracts that we routinely undertake for our customers. There are a number of reasons for this, but chief amongst them is that organisations have become much leaner, and no longer maintain all the expertise that they need in house. They look for partners who can provide the skills that they lack, and NAG’s reputation makes us an obvious choice for many of them.
NAG has a lot of unique expertise, both amongst our staff and through our network of collaborators. We are experts in implementing algorithms to solve a range of problems, which is a different skill from solving the problems themselves. We are experts in software engineering as applied to technical computing, whether on a laptop or a supercomputer. Finally, because NAG has always been platform agnostic when it comes to the Library, we have expertise in the full range of computer hardware available today and understand how to make software work efficiently on any of them.
What does this mean in concrete terms? While we can’t always name our customers, we can talk in general terms about the services we’ve delivered in the last twelve months:
- Platform evaluation and application porting. As hardware becomes ever more parallel our customers want to know what is the best architecture for their code. Getting good performance from a GPU or Intel’s Xeon Phi architecture can be challenging but rewarding. NAG recently completed a project related to the Square Kilometre Array where we ported an application to a range of architectures to show what performance could be achieved. We’ve done similar projects for two of our commercial customers. Recently a hardware vendor commissioned us to port an application to their hardware, and write up our experiences. This will likely feature in their future product marketing.
- Algorithm Development. We continue to support the ARM performance libraries, and to develop algorithms requested by our customers. Some of these end up in the Library, but not all. Recently we developed a suite of Randomised Numerical Linear Algebra routines for a customer which will form the basis of a new chapter in the Library, and we’ve also produced bespoke vectorised variants of some existing NAG routines for another customer.
- Algorithmic Differentiation (AD). Many readers will know that AD has become an important technology for us and that we are developing a range of products (tools and AD-enabled algorithms) with our partners at the University of Aachen. As part of this activity we’ve been offering training and developing bespoke variants of NAG routines for our customers, particularly in Finance.
- Training. Speaking of training we offer a range of courses to NAG customers and more general audiences. Our strength is that the courses are delivered by genuine practitioners who live and breathe the subject. In the last twelve months we’ve delivered a range of courses related to programming (Fortran, MPI, OpenMP, …) as well as courses on how to procure and manage HPC systems. Intel has commissioned us to develop and deliver courses in improving application performance on the Xeon Phi, and programming with Threaded Building Blocks (both as webinars and face-to-face courses).
- Numerical Software Engineering. The Securities Technology Analysis Centre (STAC) has created a number of benchmarks designed to show how suitable a given platform (software and/or hardware) is for solving a particular kind of problem. Vendors are invited to submit code tuned for their platform and NAG is one of several neutral organisations which is invited to review these submissions.
- Supporting Open Source Software. More and more organisations make use of open source software, but they often find it hard to get support for it. NAG has supported and developed many open source software packages in the past, most notably while delivering the HECToR Distributed CSE service. Our most recent engagement involved producing documentation on how to build and maintain a package being used by a customer, and extending it to handle new data formats.
- Fortran Expertise. Through our long history of involvement in Fortran standardisation, and our development of the NAG Fortran Compiler, we’ve built up an unrivalled body of expertise in the Fortran language. Recently we’ve licensed our test suite to organisations interested in standard-compliant Fortran code, and provided advice to organisations in interpreting the Fortran standards.
That’s quite a list! Last, but definitely not least, we should mention the support that we provide to users of the NAG Library. This is an important part of NAG’s business and is often cited by customers as a key reason for using NAG. The staff providing support are the same people who write the software – we don’t have a separate support team and almost every member of technical staff takes a turn on the support rota. Early documents in our archive refer to the “NAG Library Service” rather than just the “NAG Library”. Offering high quality support to users of our products has been a NAG distinctive from the beginning, and will continue to be a principal part of our offering in the future.