profile_picture
Cedric Nugteren's home
Current job:
Machine learning
software engineer
Location:
Amsterdam, NL
Year of birth:
1986
Contact:

Summary

I received my Bachelors (Electrical Engineering) and Masters (Embedded Systems) from Eindhoven University of Technology. In April 2014, I successfully defended my PhD thesis at the same university. During the PhD I gained experience through two internships: with the OpenCL compiler group of ARM in Cambridge (UK), and with the cuFFT team of NVIDIA in Santa Clara (CA). After that, I worked as a GPU consultant at the SURFsara supercomputing center and as a C++ performance engineer for a computer vision and machine learning team at Blippar. Following, I worked at TomTom on deep learning software for autonomous driving in Python for 4.5 years. Currently, I work as deep learning engineer at Plumerai, creating the world's fastest neural network inference engine for edge devices.

Interests and expertise

My main programming languages are modern C++, Python, and CUDA/OpenCL for GPU programming. For several years I have worked on machine learning for computer vision applications, mainly in Python and TensorFlow. This includes both the software engineering as well as the machine learning research aspects. I also have experience with compilers, high-performance computing, computer architecture, code-optimization, micro-controllers, and low-level programming.

As a hobby I program in C, Python, modern C++, and OpenCL. The largest hobby project is CLBlast, an OpenCL BLAS library. CLBlast is used as a backend in one of the main open-source large-language-model frameworks llamacpp. For more hobby projects, see the projects page. Other than that, I like to run, watch & read Sci-Fi, and spend time with my kids.

Profiles on other pages



Work experience

01/2021 - current
Plumerai (Amsterdam)
Deep learning engineer
I work as a deep learning software engineer on neural networks for low-power edge devices at a start-up. The work includes training quantized neural networks as well as implementing optimized inference code. Main programming languages are Python, C++, and assembly.
07/2016 - 12/2020
TomTom (Amsterdam)
Deep learning R&D engineer and tech-lead
I worked as a deep learning R&D engineer on computer vision applications for autonomous driving. Topics include semantic segmentation and generative adversarial networks. Technologies include Python (3.6+) and TensorFlow. My roles included Python software engineering, machine learning research, and tech-lead / scrum-master.
11/2015 - 06/2016
Layar / Blippar (Amsterdam)
R&D engineer performance optimization
I worked as a C++11 performance engineer on computer vision and machine learning algorithms for an augmented reality company. My work included multi-threading, vectorisation and GPU-acceleration.
05/2014 - 10/2015
SURFsara (Amsterdam)
GPU/Supercomputing consultant
I worked as a consultant for the Dutch national supercomputing/HPC centre, specialised in accelerator programming (Xeon Phi, GPU). My job involves tuning scientific codes (C/C++/Fortran) for multi-cores (OpenMP), multiple nodes (MPI), and accelerators (OpenCL/CUDA). I have worked on codes from various domains, including finite element methods, fluid dynamics, and quantum chemistry.
01/2014 - 04/2014
NVIDIA Santa Clara (California)
CUDA software engineer
I worked for four months as an intern GPU programmer at the NVIDIA headquarters in Silicon Valley within the math libraries group, developing and performance tuning the CUDA Fast Fourier Transform library (cuFFT).
08/2012 - 12/2012
ARM Cambridge (United Kingdom)
Research intern
As part of a 4-month HiPEAC sponsored internship, I performed research within the ARM Mali OpenCL compiler team. I created a machine-code level mathematical performance model for the Mali T600-series, one of the first OpenCL capable low-power GPU architectures. Additionally, I worked on a GPU cache model, and was involved in the design of the PENCIL language, part of the CARP EU project.
11/2009 - 11/2010
Eindhoven University of Technology (Netherlands)
Scientific Programmer
Within the Electronic Systems group, I worked full-time as a scientific programmer, which included research into processor architecture (GPUs, SIMD) targeted at image and video processing applications (histogram, motion estimation).
10/2009 - 12/2014
Kinento (Netherlands)
Founder and owner of Kinento
Kinento is a privately owned e-commerce company. Three PHP extensions to Magento were developed and maintained. From 2015 onwards, they are open-sourced and available for free on GitHub.

Education

11/2010 - 04/2014
Eindhoven University of Technology (Netherlands)
Doctor of Philosophy (PhD)
Under the supervision of prof. Henk Corporaal, I performed research on GPUs. This covered most aspects of GPUs, including micro-architecture, compilers, performance modelling, and programmability issues. This has led to two journal articles, a patent application, and several publications in international conferences and workshops. During my PhD, I interned for 4 months at both ARM and NVIDIA. My PhD thesis is titled 'Improving the Programmability of GPU Architectures' and is available in PDF form.
08/2008 - 02/2009
Universidad Polytecnica de Valencia (Spain)
MSc. in Computer Science
Master degree program in Spanish, part of a six month Erasmus exchange.
08/2007 - 08/2009
Eindhoven University of Technology (Netherlands)
MSc. in Embedded Systems
Two year master degree program with a focus on (multi-)processor architectures. Master thesis carried out at the Electronic Systems group, titled 'Improving CUDA's compiler through the visualization of decoded GPU binaries'.
08/2004 - 08/2007
Eindhoven University of Technology (Netherlands)
BSc. Electrical Engineering
Three year bachelor degree program.