In financial applications, many premium, greek evaluations and risk analysis use discounting. This benchmark is our hello world to discounting: we discount some number of cash flows, for a large number of simulations. Yield curves are stored as their rates, linearly interpolated. Pseudo code is given below. float price = 0.0f; for (int k = […]

READ MORE

Tags: ,


The stream benchmark aims at measuring memory bandwidth performance of the architecture. We simply add two vectors, in what is our “Hello World” program. Simplified version of the C# code can be found on our SDK on github. As for Expm1 benchmark we run the generated code against the best handwritten native code we could […]

READ MORE

Tags: , ,


This benchmark aims at measuring the floating point performance of the architecture. We use a Taylor expansion of the Expm1 function (exponential of x minus one), at some degree (13 in our case), without any branching. The number of floating point operations, whether it be addition, multiply or fused multiply and add (counted as a […]

READ MORE

Tags: ,


System.Numerics.Vector is a library provided by .Net (as a nuget package), which tries to leverage SIMD instruction on target hardware. It exposes a few value types, such as Vector<T>, which are recognized by RyuJIT as intrinsics. Supported intrinsics are listed in the core-clr github repository. This allows C# SIMD acceleration, as long as code is […]

READ MORE

Tags: , , ,