Workshop picture

2016 HIPERFIT Workshop for Partners and Faculty

On March 3, 2016, HIPERFIT is hosting a workshop for HIPERFIT HIPERFIT partners and faculty. At the workshop, HIPERFIT faculty, including PhD students, will present the latest developments in the various HIPERFIT project. A separate session is devoted to partners for presenting opportunities for involving HIPERFIT researchers in obstacles encountered by the partners with respect to high-performance computational problems in the finance domain.

The year 2016 is formally the last HIPERFIT year and much has happened since the HIPERFIT launch in 2011. We are therefore also happy to demonstrate our more long term findings and how we envision that the HIPERFIT work can continue to make a difference in the years to come.

The Venue

Kurhotel Skodsborg, Skodsborg Strandvej 139, 2942 Skodsborg (45585800)

Schedule March 3, 2016

Workshop picture

Breakfast served
Welcome (Fritz Henglein)
Compiling for Parallel Computations (Chair: Ken Friis Larsen)
The Futhark Optimizing Parallel Compiler (Chair: Fritz Henglein)
Bohrium (Chair: Andrzej Filinski)
Risk Management (Chair: Rolf Poulsen)
Miscellaneous Topics (Chair: Cosmin Oancea)
Industry feedback (Chair: Fritz Henglein)
Chat and a drink - free time until dinner

Workshop picture

A table of participants for the workshop on March 3, and for the discussion and planning sessions (HIPERFIT staff only) on March 4, appears below. The schedule for March 4 appears at the very end of the page.

Participation in the workshop is by invitation only, but please contact the HIPERFIT management if you think you should have received an invitation.

As always, please visit for news and information about published papers, our Seminars, and news in general from the HIPERFIT research center.


Name March 3 Dinner March 3 March 4 Room
Anders Pall Skött (CFIR) 1 1 0 0
Andrzej Filinski (DIKU) 1 1 1 1
Anette Broløs (CFIR) 1 0 0 0
Brian Vinter (NBI) 1 1 1 1
Carl Balslev Clausen (SimCorp) 0 0 0 0
Christian Andreetta (Nordea) 1 1 0 0
Cosmin Oancea (DIKU) 1 1 1 1
Danil Annenkov (DIKU) 1 1 1 1
Frederik Meisner Madsen (DIKU) 1 1 1 1
Fritz Henglein (DIKU) 1 1 1 1
James Avery (NBI) 0 0 0 0
Jonas Bardino (NBI) 1 1 1 1
Ken Friis Larsen (DIKU) 1 1 1 1
Kenneth Skovhede (NBI) 1 1 1 1
Klaus Birkelund Jensen (NBI) 1 1 1 1
Lykke Rasmussen (IMF) 0 0 0 0
Mads R. B. Kristensen (NBI) 1 1 1 1
Maj-Britt Nordfang (IMF) 1 0 1 0
Marcos Vaz Salles (DIKU) 1 1 0 0
Martin Dybdal (DIKU) 1 1 1 1
Martin Elsman (DIKU) 1 1 1 1
Mads Ohm Larsen (NBI) 1 1 1 1
Martin Rehr (NBI) 1 1 1 1
Mogens Steffensen (IMF) 0 0 0 0
Niels Hallenberg (SimCorp) 1 1 0 0
Oleksandr Shturmov (DIKU) 1 1 1 1
Omri Ross (IMF) 1 1 1 1
Patrick Bahr (ITU) 1 1 0 0
Rolf Poulsen (IMF) 1 1 1 1
Simon Ellersgaard (IMF) 0 0 0 0
Simon Lund (NBI) 0 0 0 0
Troels Blum (NBI) 1 1 1 1
Troels Henriksen (DIKU) 1 1 1 1
Uwe Heissner (Nordea) 1 0 0 0
Niels Gustav Westphal Serup (DIKU) 1 1 0 0
Vivek Shah (DIKU) 0 0 0 0
Total 29 26 21 20

Schedule March 4, 2016 (HIPERFIT staff only)

On March 4, 2016, HIPERFIT staff will meet and discuss feedback and plan future activities and projects within HIPERFIT. Here is a draft schedule.

Breakfast served
Outline for the day (Plenum)
Session 1 (Groups)
Session 2 (Groups)
Group Presentations (Plenum)

Abstracts for Talks on March 3, 2016

09:00-10:15   Compiling for Parallel Computations

Streaming Nested Data Parallelism (Frederik Meisner Madsen)

This talk presents ongoing work on a streaming dataflow model for nested data parallelism. By evaluating bulk operations in chunks in a network of stream transformers, the streaming model saves significantly more space than traditional data-parallel languages in many common cases. On GPUs, the device memory is very limited relative to the available parallelism, making streaming essential in large computations. On CPUs, streaming can help improve cache performance, and since fusion is not as essential on CPUs as on GPUs, the streaming model can leverage pre-compiled kernels that are hand-optimized with SIMD instructions and multi-threading.

A low-level functional GPU language (Martin Dybdal)

Obsidian is an embedded functional language that allows playfulness and experimentation when developing data-parallel algorithms for GPUs. Obsidian gives explicit control of shared-memory usage, fusion, loop-unrolling, warp-level computations etc., when developing new GPU algorithms. This feature makes it possible to generate high performance GPU-kernels, in a simpler framework than plain CUDA/OpenCL.

In this presentation, we show how to “unembed” Obsidian to create a standalone language FCL, a language at the same level as Obsidian, but designed as an intermediate language. Our plan is to use FCL as an intermediate language for our APL-compiler, and to allow users to inline FCL-terms, when performance tuning is necessary.

Verifying the generation of payoff-language expressions (Danil Annnenkov)

In this presentation, we present some results on pushing forward code certification in connection with the HIPERFIT Portfolio Management Prototype project. The contract DSL, which is used to express a large variety of financial contracts, is translated into an intermediate language (IL) inspired by traditional approaches to payoff languages. The IL is mapped relatively straightforwardly to a subset of language constructs in other languages, such as OpenCL, Haskell, and Futhark. The generated code is then “fused” into an appropriate contract valuation engine. Translation from the contract DSL to the IL is proven correct with respect to a language semantics specified in the Coq proof assistant. The extracted translation code works nicely with the certified code for contract analysis and transformation.

10:30-11:30   The Futhark Parallel Optimizing Compiler

Introduction to the Futhark language and compiler (Troels Henriksen, DIKU)

Compiling real-world applications to efficient parallel code, especially when targeting vector hardware such as GPUs, requires an optimiser and code generator that can exploit a combination of high-level invariants and low-level optimisations. We present a purely functional data-parallel programming language, named Futhark, that supports nested map-reduce parallelism on regular arrays, but also a set of “imperative” constructs, such as in-place updates and do-loops. We report in-progress work on our optimising Futhark compiler, and demonstrate significant speedups for a range of benchmark programs.

Experiences porting Accelerate code to Futhark (Niels Gustav Westphal Serup, DIKU)

The people working on the embedded array language Accelerate have a repository of computation-heavy benchmarks. In this talk I present how I have ported some of their benchmarks to Futhark. I then describe how I have creatively measured the correctness of the Futhark code, which can be challenging due to several technical factors. Finally I compare and discuss the execution time of hand-written Futhark code and hand-written Accelerate code.

11:45-13:00   Bohrium

SME and BPU: High-level development for low-level hardware (Kenneth Skovhede, NBI)

In this talk I present the motivation and ideas behind the FPGA backend for the Bohrium Runtime System. I start by covering the evolution and experiments we performed with Synchronous Message Exchange (SME) as a design pattern for developing hardware. I then describe how we use the SME model and our VHDL generation system to rapidly prototype hardware. Finally I show the current state of the BPU and show how the processor maps to FPGA hardware.

Fusion of Parallel Array Operations (Mads Kristensen, NBI)

Array operation fusion is a program transformation that combines, or fuses, multiple array operations into a kernel of operations. When it is applicable, the technique can drastically improve cache utilization through temporal data locality and enables other program transformations such as streaming and array contraction. Thus, the challenge is to find which array operations to fuse in order to maximize memory access reuse.

The traditional formulation of this problem is as a graph partitioning problem. Given a DAG that represents array operation dependencies and is extended with undirected weight edges and fuse-preventing edges, find a partition that minimizes the sum of the weight edges that cuts between partition blocks while nodes connected with fuse-preventing edges are not in the same partition block. This graph problem is known as that Weighted Loop Fusion Problem. In my talk, I will show that this formulation is insufficient when optimizing for memory access reuse and introduce a new graph formulation that is sufficient.

BDAE – Big Data Analysis Engine (Brian Vinter, NBI)

In Big Data Analytics the primary processing approach is MapReduce, which based on a physical distribution of the data so that processing is done in parallel as a direct consequence of the data locality. This approach is very scalable and to a large degree convenient for programmers since the programmer initially need only to write code to process the data that is on the individual node. Unfortunately, the physical distribution of the data is done with conventional file-system approaches, i.e. in fixed size blocks, in the most popular HDFS the standard is 64MB blocks. This fixed size approach means that data that is semantically correlated is split between two storage nodes, and to handle this scenario the programmer must then add code to manage communication between the two nodes so that the correct data-representation can be processed.

In BDAE we address this challenge, the talk will outline the BDAE architecture and seek to demonstrate how easy programming new analysis codes becomes with this setup.

14:00-15:00   Risk Management

Automated Loan Credit Rating (Omri Ross, IMF)

The current process of credit rating for a loan approval in Denmark is manual, cumbersome and non-optimal. We would like to propose a process allowing for a quick credit decision based on the available personal data. Our process has two steps: First using a non-linear dimensional reduction algorithm on the original data and then running a classification algorithm on the results of the first step. We improve existing results compared to the standard benchmarks.

The MC-squared problem (Oleksandr Shturmov, DIKU)

15:15-16:00   Miscellaneous Topics

The HIPERFIT portfolio management prototype (Martin Elsman, DIKU)

We present the HIPERFIT portfolio management prototype, which aims at integrating various HIPERFIT research projects, such as a financial contract modeling framework and generic parallel monte-carlo pricing.

Integration work and design has primarily been undertaken by Danil Annenkov. Features added by BSc student projects.

Hedge Funds Don’t Hedge - And 50-Odd Other Odd Things in Finance (Rolf Poulsen, IMF)

A tour de force of things in finance that are not exactly what they sound like. For instance: Risk-neutral pricing does not assume risk-neutrality. The FED isn’t federal. Hedge funds don’t hedge. What’s up with the Mertons? Default isn’t default. Change of numeraire changes the denominator, not the numerator.


03 March 2016