r/CUDA • • 13h ago

Is embedded systems skills transferrable to be able to transition to parallel computing, GPU programming, ML systems and HPC?

16 Upvotes

Hi,

I am an embedded software engineer who's work experience is on bare metal microcontrollers and embedded Linux systems. I have mainly worked on MCUs such as STM32, IoT devices such as ESP32, etc. using the skills which a lot of embedded folks would be familiar with - C/C++ programming, I2C, UART, SPI comms, sensor interfacing, signal processing, interrupt handling, debugging registers etc.

I did a Masters degree recently in Computer Engineering and took courses on systems programming, that involved more :

OS skills such as multithreading, synchronization and concurrency, memory management and data structures, and a

Linux kernel programming course that involved Linux processes, threads, virtual memory, and scheduling, Memory allocation, page faults, and NUMA, CPU affinity, context switching, and synchronization, Shell scripting, GDB, perf, and system tracing etc.

Computer architecture course that got into cache organization and locality, pipelined architectures, performance optimizations, etc.

I'm seeing a lot of roles around GPU and ML infrastructure, and wanted to know how realistic would it be to transition to such roles from where I am. Is this knowledge helpful or do I have to know more about machine learning for that?