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
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
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.
As an ETH student you get access to the Euler supercomputing cluster. Inaugurated in 2014 and hosted at CSCS in Lugano, Euler is a computer cluster dedicated for use by researchers and students alike. Courses like High-Performance Computing for Science and Engineering use it to allow students to practice the principles of working with a
Some times you will have a large C++ class with many parameters that need initializing. That can lead to some ugly constructor calls: auto popsim = PopulationSim(1000, 100000, 1000, 1000, 1500, 0.17, 0.05, 32, 3, 1, 7, 1); This makes the code very hard to maintain and debug, as there is no easy way to
During the autumn semester of 2017 I took the course “Programming Techniques for Scientific Simulations” as part of my BSc course in Computational Science and engineering at ETH Zürich. This is a summary of the course’s contents I wrote and used during the actual exam. Some things are missing, as it was an open-book exam