In the world of high-performance programming, true portable code has been a goal for a long time. Vulkan has been very successful at this, with Vulkan drivers being provided by every major GPU vendor and available for all common desktop and…
Kernel development + C++26 reflection = 🧡
Anyone who has written a non-trivial GPU kernel has hit the same wall. You define a struct in C++ and pass it to a kernel. Six months later, somebody adds a member, forgets to update the matching layout on the device…
RDNA and CDNA: similarities and differences
In 2019 AMD announced the Radeon™ RX 5700 XT, a GPU that sported its brand-new at the time architecture named RDNA. It aimed to provide upgrades compared to the older GCN-based cards. Then one year later, AMD announced another GPU architecture…
Asynchronous and parallel programming in C++26
For the past decade, every C++ programmer who wanted to do real concurrent work has had the same conversation with themselves. std::async is a toy. std::thread is too low-level. std::future doesn’t compose. So you reach for TBB, or another third-party library,…
Lazy Ranges in C++23 with std::generator
Disclaimer: LLMs were used for proof-reading and grammar check. C++20 gave us coroutines. The machinery needed was included: co_yield, co_return, co_await but the standard library had no concrete coroutine types. You had to write your own promise type, your own iterator,…
GPU Day 2026
At Stream HPC, we enjoy opportunities to connect with the HPC and accelerator community, exchange ideas, and learn from engineers and researchers working across the GPU ecosystem. Later this month, several members of our team will be attending GPU Day 2026…
Thinking with iterators in CUDA and HIP
Parallel primitives are the ubiquitous building blocks of GPU programming with CUDA and HIP, to make your life as a programmer easier. Primitives like scans, reductions, and sorts operate in parallel over large data inputs. The basic use case has input…
IWOCL 2026
At Stream HPC, we love open standards. They allow developers to write portable applications, encourage industry collaboration, and enable common tooling. Each year Khronos organizes the annual IWOCL conference on open standard compute languages, and this year we are delighted to…
N-Queens project from over 10 years ago
Why you should just delve into porting difficult puzzles using the GPU, to learn GPGPU-languages like CUDA, HIP, SYCL, Metal or OpenCL. And if you did not pick one, why not N-Queens? N-Queens is a truly fun puzzle to work on,…
How to get full CMake support for AMD HIP SDK on Windows – including patches
Written by Máté Ferenc Nagy-Egri and Gergely Mészáros Disclaimer: if you’ve stumbled across this page in search of a fix for the ROCm SDK’s CMake HIP language support on Windows and care only about the fix, please skip to the end…
Improving FinanceBench for GPUs Part II – low hanging fruit
Speeding up finance algorithms for GPUs
The Art of Benchmarking
How fast is your software? The simpler the software setup, the easier to answer this question. The more complex the software, the more the answer will “it depends”. But just peek at F1-racing – the answer will depend on the driver…
Problem solving tactic: making black boxes smaller
We are a problem solving company first, specialised in HPC – building software close to the processor. The more projects we finish, the more it’s clear that without our problem solving skills, we could not tackle the complexity of a GPU…
Improving FinanceBench
If you’re into computational finance, you might have heard of FinanceBench. It’s a benchmark developed at the University of Deleware and is aimed at those who work with financial code to see how certain code paths can be targeted for accelerators….
Updated: OpenCL and CUDA programming training – now online
Update: due to Corona, the Amsterdam training has been cancelled. We’ll offer the training online on dates that better suit the participants. As it has been very busy here, we have not done public trainings for a long time. This year…
The 12 latest Twitter Poll Results of 2018
Via our Twitter channel we have various polls. Not always have we shared the full background of these polls, so we’ve taken the polls of the past half year and put them here. The first half of the year there were…
OpenCL Basics: Running multiple kernels in OpenCL
This series “Basic concepts” is based on GPGPU-questions we get via email more than once, or when the question is not clearly explained in the books. For one it is obvious, for the other just what they’re missing. They say that…
How to speed up Excel in 6 steps
After the last post on Excel (“Accelerating an Excel Sheet with OpenCL“), there have been various request and discussions how we do “the miracle”. Short story: we only apply proper engineering tactics. Below I’ll explain how you can also speed up…
Selecting Applications Suitable for Porting to the GPU
The goal of this writing is to explain which applications are suitable to be ported to OpenCL and run on GPU (or multiple GPUs). It is done by showing the main differences between GPU and CPU, and by listing features and…
DOI: Digital attachments for Scientific Papers
Ever saw a claim on a paper you disagreed with or got triggered by, and then wanted to reproduce the experiment? Good luck finding the code and the data used in the experiments. When we want to redo experiments of papers,…
Learn about AMD’s PRNG library we developed: rocRAND – includes benchmarks
When CUDA kept having a dominance over OpenCL, AMD introduced HIP – a programming language that closely resembles CUDA. Now it doesn’t take months to port code to AMD hardware, but more and more CUDA-software converts to HIP without problems. The…





