Below is a simple implementation of the producer-consumer parallel strategy with MPI. It’s just a dummy example, and could probably be improved greatly, but it is a nice illustration of the producer-consumer model, as well as uses for MPI_ANY_SOURCE, MPI_ANY_TAG, and MPI_Status. #include <stdio.h> #include <mpi.h> #include <time.h> #include <stdlib.h> #include <math.h> // Producer-consumer scheme
CUDA is a very powerful API which allows us to run highly parallel software on Nvidia GPUs. It is typically used to accelerate specific operations, called kernels, such as matrix multiplication, matrix decomposition, training neural networks et cetera. One such common operation is a reduction: adding up a long array of numbers. One simple implementation
In autumn 2018, I teamed up with classmates Silvia Nauer and Mikael Stellio for a project in the ETHZ course Physically-Based Simulation for Computer Graphics. The objective of our project was to create a video of a meteorite crashing into the sea, by implementing our own FLIP fluids solver and rendering the video with Blender.
As part of a Case Studies seminar at ETH, I recently studied and presented the paper behind AlphaGo, titled “Mastering the game of Go with deep neural networks and tree search”. This is a summary of my findings about this sophisticated AI software. Google DeepMind made quite a splash in 2016 when their AI AlphaGo
This is a summary of the introductory lecture to the coure Image Analysis and Computer Vision which I took at ETH in the autumn semester 2018. Interaction of light and matter Interactions of light and matter be divided into three main types (plus diffraction). Phenomenon Example Absorption Blue water Scattering Blue sky, red sunset Reflection
In the autumn semester of 2018 I took the course Robot Dynamics. The summary I took with me to the exam is available here in PDF format as well as in LaTeX format. Here’s an overview of the topics the course covered: Kinematics Rotation and angular velocity Rigid Body Formulation Homogeneous transformations Kinematics of systems
In the autumn semester of 2018 I took the course Dynamic Programming and Optimal Control. The summary I took with me to the exam is available here in PDF format as well as in LaTeX format. Here’s an overview of the topics the course covered: Introduction to Dynamic Programming Problem statement Open-loop and Closed-loop control
At ETH, many courses offer the possibility of taking a summary with you to the exam. This is usually restricted in size and some times must even be handwritten. I have always preferred writing them in digital format, mainly because it gives me the flexibility to rewrite, add or remove parts if I realise I’m
In image analysis, we often may want to detect lines in an image. This is useful for many things, including segmentation, tracking, etc. The Hough transform goes a step beyond a traditional edge detector, giving us mathematical expressions for lines in the image.
When learning about robotics, and specifically kinematics or dynamics of robots, Jacobians are a very common concept. However, I was always confused as to the difference between analytical and geometric Jacobian. When I finally figured it out, it helped to put it in words.