Skip to main content

MtxVec for .NET

Multicore math engine for science and engineering

MtxVec for .NET, also called Dew Math for .NET, is an object oriented math library rewritten for C# and .NET developers that offers a wide set of matrix and vector math operations. The library provides a broad set of vectorized numeric functions which include sparse matrices, complex numbers, probabilities, a math parser, optimization unit, SVD, QR, LQ, and LU solvers and special functions. Applications using this library gain the benefit of CPU-specific code optimization and symmetric multiprocessing. Efficient management of memory and support for 64bit native mode increase performance of your applications.

Overview

  • Use pure C# (100% full source code) or high performance external dlls
  • Full hardware acceleration on Windows (32bit and 64bit) and Linux OS (64bit). Runs with Intel AVX, AVX2 and AVX512 optimized codepaths, chosing the best codepath depending on the underlying hardware.
  • With .NET Core use common source to compile your applications for Windows, Mac OS, iOS / iPhone, Android and Linux. The full source version is called MtxVec Core Edition.
  • Supports .NET framework v2.0-4.8 , .NET Core 7.0 and .NET Core 8.0.
  • Support for 64bit native mode execution
  • Internally multi-threaded for linear algebra, FFT, digital filtering and many other algorithms.
  • Optimized Linear Algebra Package (LAPACK v3.7) numerical library
  • Vector processes streams of  complex numbers and complex variables for higher speed
  • Visual Studio .NET and Visual Studio Code integration.
  • Extensive XMLDoc based tooltips for .NET Core projects.
  • Vecorized Math expression parser and evaluator
  • Support for major .NET languages: C#, VB.NET and C++
  • Various optimization and fitting algorithms allow solution to a large set of problems
  • Integrated debugging support with tooltips and debugger visualizers to speed up your development
  • Garbage collected numerical library for C#
  • Super conductive memory allocation support allows 100% thread concurrency for arbitrary thread count outperforming garbage collector
  • Compatible with the .NET Parallel Extensions and Task Parallel library.
  • Allow runtime selection of algorithm precision (single or double)
  • Includes Cougar Open CL an Open CL library with over 2000 Open CL kernels.

Most .NET users observe typical performance improvements of 3X to 4X for vector functions, but speed increases up to 20X are often obtained. The matrix multiplication, for example, is up to 30X faster. Especially the vectorized math expression evaluator is very fast without a known competitor when it comes to speed.

What's in MtxVec v6 for .NET Users?

Optimizing the performance of .NET code can be a challenge. The library is designed to reduce the cost of developing fast executing code with .NET.

  • The advantage of SSE4 and Intel AVX instruction sets can be exploited only with unmanaged code and only hand-optimized code can be truly optimal. With the help of CPU specific optimizations, the same product delivers optimal performance on all CPUs.

  • The software provides an interface to the LAPACK v3.7 numerical library to be used from any .NET language, C#, C++ or VB.NET
  • Unmanaged code is encapsulated into thin, efficient wrappers making the code "safe" for the end user, with little or no overhead associated with transitions from managed to unmanaged code. Many difficult-to-trace bugs and performance issues are avoided in this way.
  • Inteligent memory management substantially reduces overhead when calling unmanaged code. Not only do vectors and matrices support Capacity, they also implement in-place ranges. Additionally the library supports per-thread memory ownership and internally nearly never allocates any memory (objects).

  • The performance gain against native .NET code can be very big, especially for complex numbers and complex variables.

MtxVec v6 for .NET screenshots

Displaying large amounts of data

Displaying large amounts of data

Superconductive memory manager

Superconductive memory manager

Linear and cubic interpolation

Linear and cubic interpolation