The increasing consumerization of IT means that even staid business applications like accounting need to have the performance and ease of use of popular consumer apps. Fortunately, developers now have access to a powerful group of libraries that can instantly increase application performance – with little or no rewriting of older code. Here’s a quick rundown of Intel-provided libraries and how to get them.
Accelerated Python for Data Science
The Intel Distribution for Python takes advantage of the Intel® Advanced Vector Extensions (Intel® AVX) and multiple cores in the latest Intel architectures. By utilizing the highly optimized Intel MKL BLAS and LAPACK routines, key functions run up to 200 times faster on servers and 10 times faster on desktop systems. This means that existing Python applications will perform significantly better merely by switching to the Intel distribution.
Maximum Performance, Minimum Effort: Intel® Performance Libraries
“Over two decades, Intel continued its efforts to refine libraries optimized to coax the greatest performance from Intel® processors. In this video, Noah Clemons, staff technical consulting engineer at Intel talks about the latest specialized libraries and their contributions for highly-optimized applications.”
Python Can Do It
“Python remains a single threaded environment with the global interpreter lock as the main bottleneck. Threads must wait for other threads to complete before starting to do their assigned work. The result of this model is that production code is produced that is too slow to be useful for large simulations.”
Go with Intel® Data Analytics Acceleration Library and Go*
Use of the Go* programming language and it’s developer community has grown significantly since it’s official launch by Google in 2009. Like many popular programming languages (C and Java come to mind), Go started as an experiment to design a new programming language that would fix some of the common problems of other languages and yet stay true to the basic tenets of modern programming: be scalable, productive, readable, enable robust development environments, and support networking and multiprocessing.
Performance Gains Using Libraries
In many cases, applications that perform various simulations use some of the same math functions that many other applications use. Rather than each developer recoding the same math functions over and over, libraries, developed by experts can significantly speed up execution of the overall application. Since there can be many optimizations that experts who understand many of the nuances of the hardware would understand, it is important that developers be familiar with various libraries that are made available for HPC types of applications.
Diffusion Optimization on Intel Xeon Phi
“The next step is to look at using OpenMP directives to create multiple threads to distribute the work over many threads and cores. A key OpenMP directive, #pragma omp for collapse, will collapse the inner two loops into one. The developer can then set the number of threads and cores to use and return the application to determine the performance. In one test case, three threads per physical core shows the best performance, by quite a lot compared to just using one or two threads per core.”