NAGnews 161

In this issue:


NAG Library Algorithms Provide Numerics for Helicopter Design & Analysis

The helicopters division of Italian multinational company, Leonardo SpA, utilize NAG Library algorithms within their helicopter design and analysis process. Seeking to constantly expand the capability and performance of its products, Leonardo continually invest in advanced computer software. With a mix of proprietary software, for example in the areas of computational fluid dynamics or finite differences, and in-house developed applications, and because of their specific requirements, it has been necessary for Leonardo's development team to write their own numerical code specifically for the design, analysis and modelling of helicopter behaviour. This task requires specialist knowledge in designing algorithms and code; one which has been greatly assisted by utilizing NAG Library routines which, due to their longstanding widespread use throughout industry, the team have full confidence in. Because of the precise and detailed specification of the NAG Library over a range of areas, Leonardo's team can apply the routines to all aspects of the design and analysis process across each aircraft in the extensive range of helicopters. This is a major benefit to them. To read the full story see here.

Image Copyright Leonardo SpA


On Vectorization of Algorithmic Adjoint C++ Code

Exploitation of vectorization capabilities in modern CPUs is crucial for getting the highest possible performance. For example, it is widely known that suitable financial Monte Carlo simulation code can benefit from vectorization immensely. On the other hand, the efficient computation of gradients as well as of higherorder parameter sensitivities for a given (also: primal) C++ code by adjoint algorithmic differentiation (AAD) has become essential in computational finance. This blog discusses vectorized AAD by overloading based on recent advances in the upcoming version 3.4 of NAG's AAD tool dco/c++ - read the blog post here.

'On Vectorization of Algorithmic Adjoint C++ Code' is written by NAG Collaborators - Johannes Lotz, Klaus Leppkes and Uwe Naumann (RWTH Aachen University), and was originally published by QuantMinds.


Non-negative Matrix Factorization analysing high-dimensional datasetsn

On 22 March 2019, Edvin Hopkins, Technical Consultant at NAG gave a highly topical presentation to delegates attending a Machine Learning and AI conference in London. His presentation 'Non-negative Matrix Factorization analysing high-dimensional datasets' was well received and has since made quite an impact on NAG's social networks.

If you're interested you can check out Edvin's presentation here.


Watch our latest webinar: 3x speed improvement for a zCFD solver

Watch the webinar here.

zCFD by Zenotech is a density based finite volume and Discontinuous Galerkin (DG) computational fluid dynamics (CFD) solver for steady-state or time-dependent flow simulation. It decomposes domains using unstructured meshes. It is written in Python and C++ and parallelized with OpenMP and MPI. This webinar will describe the work that POP and Zenotech undertook to investigate the performance of zCFD. An initial Performance Audit using Intel's VTune Amplifier performance profiler identified several areas of potential improvement, which Zenotech went on to address in a POP Proof-of-Concept (PoC) study. As a result of the PoC, zCFD ran 3x faster on a representative input case. Watch the webinar here.

The webinar is based on this Case Study. NAG is a Partner in the EU Performance Optimisation and Productivity (POP) Project.


Out & About with NAG

Exhibitions, Conferences, Trade Shows and Webinars

PyCon 2019
Cleveland, 2-4 May 2019

CUG 2019 - Cray User Group
Montreal, 5-9 May 2019

The Trading Show
Chicago, 8-9 May 2019

Quant Minds International
Vienna, 13-17 May 2019

ISC High Performance
Frankfurt, 16-20 June 2019

The 15th WBS Quantitative Finance Conference
Rome, 16-18 October 2019

Denver, 17-19 November 2019


Best of the Blog

Creating C++ Interfaces for the NAG Library: A Work in Progress

Following the success of the new suite of Python interfaces for the NAG Library, and motivated by some recent client discussions, we decided to look into trying something similar for C++. This article is, assuming all goes to plan, the first in a series whose aim is to give a flavour of what undertaking a project of this type at NAG involves and to explain some of the thinking behind the various decisions made. Read the blog

Creating C++ Interfaces for the NAG Library - Part 2

In the first part of this series of articles we came up with a basic list of requirements for a suite of C++ interfaces to the NAG Library and a list of restrictions we need to work under. In this article we start to look at how we can transform those lists into a template for producing the interfaces. Read the blog

Exploiting matrix structure in the solution of linear systems

In a recent post on his personal blog, my colleague, Reid Atcheson, mentioned that the fastest numerical linear algebra routines usually exploit some kind of matrix structure. Reid went on to discuss Toeplitz matrices in particular. Reid's post got me wondering, just how much of a difference can using specialised solvers make? Read the blog