Monday, 23 December 2013

Faster NMR Data Processing with Mnova 9

For nearly a decade, computer CPU chip makers have gradually adopted the use of multiple cores to increase performance. For instance, the computer from which I’m writing this entry has 4 cores. Roughly speaking, this makes it possible to run different tasks in each core so ideally, depending on the specific application or algorithm; it would be possible to make some operations faster proportionally to the number of available cores.
However, Mnova NMR has not exploited this technological advantage until now so the number of cores in your computer would not make any difference. It is also true that most of the algorithms in Mnova have been highly optimized and, typically, its computational performance is usually more than adequate to provide a sufficiently smooth experience. Nevertheless, it is not sensible to let this technological opportunity pass and so, in the past few months we have been parallelizing a number of routines in Mnova in order to take full advantage of these multi-core CPUs.  
This is just a starting point and ultimately, we will parallelize ALL algorithms in Mnova but, for the moment, we have just selected a few of the most computationally expensive algorithms, namely:

2D Linear Prediction

Mnova NMR includes two procedures for Linear Prediction, the so-called Toeplitz and the Zhu-Bax algorithms. Whilst the former is already extremely fast, it is mathematically less robust than the Zhu-Bax, which, in our experience gives much better results, especially in non-phase sensitive (i.e. magnitude-like) 2D spectra. However, because Zhu-Bax was quite slow, Mnova NMR had, as a default method, the Toeplitz one.

Now that we have parallelized the Zhu-Bax method, this has become the new default forward LP algorithm. In our tests, this algorithm performs nearly as fast as the (non-parallelized) Toeplitz counterpart, but with the additional advantage of its mathematical robustness. 

Non Uniform Sampling (NUS)

This algorithm was initially developed in a single thread mode (in Beta versions of the software) but Mnova 9 comes with a highly optimized parallelized version. 

Processing of multiple (stacked) spectra

Stacked or arrayed spectra are perfect candidates for parallelization as it is possible to process each spectrum in different cores. Whilst this advantage might be negligible for basic processing, parallelization really makes a difference when all these spectra need to be analyzed using, for example, Global Spectral Deconvolution (GSD). 

2D contour plots

Calculation of 2D contour lines have also been parallelized resulting in a faster display of 2D spectra. 

More to come

Again, our ultimate goal is to optimize / parallelize every single processing and analysis algorithms in Mnova. Nevertheless, I believe that these enhancements are already worth the upgrade to this new version of Mnova. 

No comments: