The Speed Race Leader : ILNumerics & .NET
Usually there is a trade off between syntactical convenience and execution speed. ILNumerics gives you the best of both worlds - speed and convenience! This is made possible, by writing your codes in a convenient, high level, array language. These codes are rewritten by the ILNumerics Accelerator at runtime - for the actual data and the hardware found. The following simple example gives a first impression:
The Magic of Autonomous Parallelization
Let's add two large matrices and calculate the column sums. Find a simple C version first, the ILNumerics version follows below:
The same task is of course so much easier to write in an array language: sum(A + B, 0) . To compare its speed with the C version, we also add some code for measuring multiple invocations:
ILNumerics' array syntax is not only much shorter and more safe. It is also much faster:
Execution times, 2000 x 2000 double matrix, column sums, 1.000 repetitions:
C Version: 2.460 ms
ILNumerics: 551 ms
This convincing result is influenced by many factors. ILNumerics Accelerator scales with and takes into account the properties of all: the algorithm, the data and the hardware. For example, by calculating the row sums instead the result becomes even more significant:
Execution times, 2000 x 2000 double matrix, row sums, 1.000 repetitions:
C Version: 27.159 ms
ILNumerics: 566 ms
Let's make Use of the Silicon you've bought!
Where does this great speed-up comes from? How is ILNumerics Accelerator able to calculate the same result so much faster?
While modern compilers for traditional (low-level) languages create very efficient codes for specific processor types they currently cannot target heterogeneous hardware efficiently. Further, they cannot automatically access all parallel potential within an algorithm. Thus, such languages require a great deal of manual effort from the programmer to make efficient use of the parallel resources of todays computers.
The ILNumerics Computing Engine has been designed to simplify the development of numerical algorithms on modern software platforms. It not only implements optimizations that gained FORTRAN its great success. By applying new, innovative parallelization methods developed by ILNumerics, such codes utilize more hardware resources more efficiently and surpass the speed of traditional programming languages, as C/C++ and FORTRAN - automatically and unguided: without any help by the programmer.
ILNumerics enables the executing machine to make all important decisions - autonomously, at runtime and much more efficient than any manual approach.
Download your free trial here!
Further Readings:
- ILNumerics Autonomous Computing Technology
- Accelerator Compiler online documentation
- Speed comparison: ILNumerics, FORTRAN, numpy
- Getting started guide I: low level expression optimizations explained
- Exceeding the speed of manual OpenMP / Intel's® MKL: a faster FFT
- Array Pipelining over manual parallel loops