Research
Functional Programming and microcontrollers, Functional Programming in hardware design, Functional Programming in IoT
Until May 2022 I worked at Chalmers University of technology doing reserach in the Functional Programming research group. My research is revolving around
functional programming for resource constrained platforms.
I work on a bytecode virtual machine together with a bunch of colleagues at Chalmers. The focus of this VM is IoT application and we hope to focus on security and robustness.
We call the VM Sense-VM .
Mostly as a hobby, but also as a way to learn about microcontrollers while doing something fun, I develop a Lisp interpreter, bytecode compiler and bytecode virtual machine (work in progress) for
the STM32, ESP32 and NRF52 microcontrollers as well as on Xilinx Zynq 7000 (any 32 bit platform with a reasonable amount of memory should be fine) that I call LispBM.
Autonomous Vehicles, Vehicle Electronic Architecture, Embedded Systems
At RISE I was involved in work related to the RISE Self Driving Vehicle Platform
together with Benjamin Vedder. Benjamin is not at RISE anymore but I enjoyed working with him a lot.
I have also been a part of a research project involving UWB positioning and Galileo and
the Chronos projects about testing autonomous and ADAS functionality at AstaZero.
At RISE I had the chance to get started on PCB design under the mentorship of Benjamin Vedder.
Reconfigurable computing
I have worked on acceleration of applications by utilising reconfigurable hardware, Field Programmable Gate Arrays (FPGAs), Xiling Zynq 7000 devices to be specific.
This work focused on OpenCL (High level synthesis) generated hardware kernels treated as compute black boxes. We experimented
with surrounding support infrastructure for making these OpenCL kernels execute more efficiently, for example by moving scheduling
of kernels into hardware, relieving the processing system of the ZYNQ of this task. My research in this area ended when I left Chalmers
but I continue to explore the Zynq platform and to write down what I learn in the form of guides for beginners of Zynq and FPGAs.
The Zynq development/experiment board I use is the Trenz ZynqBerry.
Streaming aggregation on an FPGA
Prajith is doing research on acceleration of streaming computations using FPGAs and
I am happy to have worked with him in exploring the capabilities of the Maxeler machine.
Lightweight binary-instrumentation
During a postdoc at Indiana University I participated in work on binary-instrumentation together with Buddhika Chamith and Ryan Newton .
Embedded languages and parallelism
During my Ph.D. studies Mary Sheeran, Koen Claessen, Josef Svenningsson and I were exploring high level and functional approaches to program highly parallel computers such as a GPU.
Currently there are GPUs available with over a thousand processing elements. Our approach was to develop an embedded
language in the style of Lava, using combinators to describe
parallel computation structures. We call this language Obsidian. Running an Obsidian program results in a CUDA C program being generated.
We have also experimented with Haskell embeddings of
Intel's Array Building Blocks, ArBB.
This embedded language we call EmbArBB.
Presentation slides
Experiment documentation
Technical reports
Publications
- (MEMOCODE 2022) Robert Krook, John Hui, Bo Joel Svensson, Stephen A. Edwards, Koen Claessen: Creating a Language for Writing Real-Time Applications for the Internet of Things
- (ECOOP 2022) Abhiroop Sarkar, Bo Joel Svensson, Mary Sheeran: An API and Runtime for Embedded Systems
- (MPLR 2021) Abhiroop Sarkar, Robert krook, Bo Joel Svensson, Mary Sheeran: Higher-Order Concurrency for Microcontrollers
- (MDPI Electronics 2020) Javier San Martin, Ainhoa Cortés, Leticia Zamora-Cadenas, Bo Joel Svensson: Precise Positioning of Autonomous Vehicles Combining UWB Ranging Estimations with On-Board Sensors
- (HINDAWI Journal of Robotics 2020) Benjamin Vedder, Bo Joel Svensson, Jonny Vinter, Magnus Jonsson: Automated Testing of Ultra-Wideband Positioning for Autonomous Driving
- (ICFPT 2017) Prajith Ramakrishnan Geethakumari, Vincenzo Gulisano, Bo Joel Svensson, Pedro Petersen Moura Trancoso, Philippas Tsigas and Ioannis Sourdis: Single Window Stream Aggregation using Reconfigurable Hardware
- (PLDI 2017) Buddhika Chamith De Alwis Kahawitage don, Luke Dalessandro, Bo Joel Svensson, Ryan R. Newton: Instruction Punning: Lightweight Instrumentation for x86-64
- (FHPC 2016) Martin Dybdal, Martin Elsman, Bo Joel Svensson and Mary Sheeran: Low-level functional GPU programming for parallel algorithms
- (CPC 2016) Martin Dybdal, Martin Elsman, Bo Joel Svensson and Mary Sheeran: Low-level functional GPU programming for parallel algorithms
- (PLDI 2016) Buddhika Chamith, Bo Joel Svensson, Luke Dalessandro, Ryan R. Newton: Living on the edge: Rapid-toggling probes with cross modification on x86
- (JFP 2016) Bo Joel Svensson, Mary Sheeran, Ryan Newton: A Language for Hierarchical Data Parallel Design-space Exploration on GPUs
- (FHPC 2015) Michael Vollmer, Bo Joel Svensson, Eric Holk, Ryan R. Newton: Meta-Programming and Auto-Tuning in the Search for High Performance GPU Code
- (FHPC 2015) Bo Joel Svensson, Michael Vollmer, Eric Holk, Trevor L. McDonell, Ryan R. Newton: Converting Data-Parallelism to Task-Parallelism by Rewrites
- (FHPC 2014) Bo Joel Svensson, Josef Svenningsson: Defunctionalizing Push Arrays (2014)
- (CACM 2014) Bo Joel Svensson, Mary Sheeran, Ryan Newton: Design Exploration through Code-generating DSLs (2014)
- (ACM Queue 2014) Bo Joel Svensson, Mary Sheeran, Ryan Newton: Design Exploration through Code-generating DSLs (2014)
- (ICFP 2013) Josef Svenningsson, Bo Joel Svensson: Simple and Compositional Reification of Monadic Embedded Languages (2013)
- (FHPC 2013) Josef Svenningsson, Bo Joel Svensson, Mary Sheeran: Counting and Occurrence sort for GPUs using an Embedded Language (2013)
- (FHPC 2012) Bo Joel Svensson, Mary Sheeran: Parallel Programming in Haskell Almost for Free (2012)
- (DAMP 2012) Koen Claessen, Mary Sheeran, Bo Joel Svensson: Expressive Array Constructs in an Embedded GPU Kernel Programming Language (2012) (more info)
- (FASPP 2011) Bo Joel Svensson, Ryan Newton: Programming Future Parallel Architectures with Haskell and ArBB (2011)
- (PAPP 2010) Joel Svensson, Koen Claessen, Mary Sheeran:
GPGPU kernel implementation and refinement using Obsidian (May 2010)
- (IFL 2008) Joel Svensson, Mary Sheeran, Koen Claessen:
Obsidian: A Domain Specific Embedded Language for Parallel Programming of Graphics Processors (Sep 2008)
- (DCC 2008) Joel Svensson, Mary Sheeran, Koen Claessen:
Obsidian: GPU Programming in
Haskell (Mar 2008)
Presentations by others
Related to Obsidian
Download Obsidian, EmbArBB and other Projects
From Github (svenssonjoel)
Counting sort
link
Related links
www.gpgpu.org
NVIDIA CUDA
Intel's Array Building Blocks
Other links
Github
Researchgate
Google Scholar
© Copyright 2020 Bo Joel Svensson