PSMB_Seqan_2017_webassembly

PMSB Project at the intersection of C++, High performance computing and modern web technologies. Has the possibility to be continued as a Bachelor Thesis.

Introduction

Since modern web-browsers are used for all kinds of tasks they have gone through an immense amount of optimization in the past years, especially the javascript engines. They are now comparable in speed with many ahead-of-time-compiled languages. [1] Modern browsers also offer access to disk-space and most of the computers available RAM so they are indeed useful for scientific applications. This opens up the possibility to do *client-side* computations via the browser.

While many SeqAn-based applications are used on large servers, many smaller workloads could actually be done on Laptops and Desktops. There, however, software deployment is often a problem and command-line tools or platform-dependent executables prevent easy adoption.

By creating browser-based apps from SeqAn-apps one could bridge this gap and hopefully provide a useful service to many users. In any case high-performance biological applications are an interesting test case for the current browser technologies and the involved software.

Previous Work

There was already a PMSB project in 2016 and a subsequent Bachelor Thesis that evaluated C++ to Javascript compilation and building a framework around it:

Based on this work the student should instead target WebAssembly[2] as output and perform similar comparisons as in the previous work (but now with WebAssembly instead of Javascript).

Prerequisites for this project

  • some experience with HTML5, Javascript and "the web" is *required*
  • basic experience with building a C or C++ program (g++, make, cmake) is definitely helpful, but not strictly required

The student will learn…

  • how to work with large software projects and in teams (social aspects, but also GitHub and other tools)
  • how new and exciting technology is evolving (WebAssembly is a joint project by Mozilla, Microsoft, Google and Apple!)
  • how different technologies and abstractions relate to each other (programming both "close to machine code" and platform independent)
  • how to do performance benchmarks and analysis of run-times and memory usages

Possible continuation as Bachelor's Thesis

The goal would be to pick a SeqAn application like Lambda or Yara and port it completely to WebAssembly, i.e. make sure that everything works and create a web-site that serves the WebAssembly and contains Javascript interfaces to certain native functionality, like opening and saving input/output files.

This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback