Algorithms + Data Structures = Programs - Episode 261: 🇳🇱 C++ Under the Sea 🇳🇱 Bernhard, Koen & C++26 Reflection!
Episode Date: November 21, 2025In this episode, Conor and Bryce record live from C++ Under the Sea! We interview Bernhard, Koen, talk about C++26 Reflection and more!Link to Episode 261 on WebsiteDiscuss this episode, leave a comme...nt, or ask a question (on GitHub)SocialsADSP: The Podcast: TwitterConor Hoekstra: Twitter | BlueSky | MastodonBryce Adelstein Lelbach: TwitterAbout the Guests:Bernhard is a senior system software engineer at NVIDIA, where he extends, optimizes and maintains the CUDA Core Compute Libraries (CCCL). Previously, he worked as software engineer among physicists at CERN on real-time and embedded software for the Large Hadron Collider, as well as data layout abstractions for heterogeneous architectures, for which he received a PhD in High Performance Computing from the University of Dresden, Germany. Before, he implemented GPU accelerated simulations and 3D visualizations of industrial machining processes. Since 2022, Bernhard is a voting member of WG21 and his interests span geometry, 3D visualizations, optimization, SIMD, GPU computing, refactoring and teaching C++.Koen is an engineer specializing in high-quality software with a strong mathematical foundation. With a PhD in Computer Science from KU Leuven, his work bridges applied mathematics and performance-critical software engineering. As Team Lead for HMI Software at NV Michel Van de Wiele, he focuses on developing C++/Qt applications for textile production systems, optimizing performance, usability, and cloud integration. Passionate about elegant, efficient solutions, Koen brings deep expertise in numerical methods, system optimization, and software architecture.Show NotesDate Recorded: 2025-10-10Date Released: 2025-11-21Thrust DocsCUB LibraryC++26 Reflection ProposalADSP Episode 39: How Steve Jobs Saved Sean ParentParrotParrot on GitHubSean's C++ Under the Sea KeynoteParrot sumIntro Song InfoMiss You by Sarah Jansen https://soundcloud.com/sarahjansenmusicCreative Commons — Attribution 3.0 Unported — CC BY 3.0Free Download / Stream: http://bit.ly/l-miss-youMusic promoted by Audio Library https://youtu.be/iYYxnasvfx8
Transcript
Discussion (0)
Frost has this very algorithmic-oriented style of, like, it works with iterators, it composes into different algorithms, right?
So, like, some algorithms are implemented in terms of other algorithms, and it has this nice touch, right?
Whereas when you go into Cobb, it's just full of, like, C-style cars, reinterpreting type-alizing.
It has, like, every kind of U.B that you can imagine, which is why I think Cobb actually stands for Cuda undefined behavior, right?
It's, Cub is specific to our platform, which means it's not, like, we, NVIDIA, make the platform.
Yeah, the parrot thing, well, just, I am now, I have a second daughter now, and as things go, I can make a lot of dead jokes now, so, so Sean Parrott.
Congratulations.
There's a conversation to be had at a later date about API design and the importance of an ergonomic and
intuitive interface.
Welcome to ADSP, the podcast, episode 261 recorded on October 10, 2025.
My name is Connor, and today with my co-host, Bryce,
We continue our conversation live from C++ Under the Sea in the Netherlands.
In this episode, we chat with Bernhard, a fellow Envidian from Austria,
Kuhn from Belgium for the third time, C++, 26 Reflection, and more.
We got another Invidium.
Oh, hi.
You can also explain how great extorts are going to do.
Oh, no, I'm not explaining that because I might get it wrong.
I have to check up how it works again.
Okay, my name is Bernhardt.
I joined in video one and a half years ago.
I started out in Cobb, but since then, I think I took over maintaining Frost as well,
and I have my hands in Lipku Plus, plus, and I think by now I kind of do everything.
Right.
He's in everything, man, folks.
He does everything.
What do you like better?
Cover thrust.
Ooh, good question.
They have very different styles.
What I like about Frost, like...
He dodged the question, folks.
Well done.
You're a future politician.
So Frost has this very algorithmic-oriented style of, like,
it works with iterators, it composes into different algorithms, right?
So, like, some algorithms are implemented in terms of other algorithms,
and it has this nice touch, right?
Whereas when you're going to Kaab, it's just full of, like, C-style cars,
reinterpreting type-elizing.
It has, like, every kind of U.B that you can imagine,
which is why I think Kaab actually stands for KUDA undefined behavior, right?
It's, Cub is specific to our platform, which means it's not, like, we, Envidia make the platform.
CUB is the implementation.
And so we're allowed to do, like, look, if you're within the standard library, the standard library implementer is allowed to do whatever they want.
It's not UB because you're the standard library.
You better not do anything that's going to break.
But CUB is only runs on our platform, and it's provided by the vendor, which means there's no UB and Cubs.
it's all just like the only thing that my cub might have is some undocumented behavior about how it works
but i do think that the cub block level primitives can be very nice to work with they're very nice
abstraction they're very nice on the outside just don't you know have to look on the inside
but uh but yeah what what does cub i mean that's really not what cubs stands for right i assume not
it's what yeah cuda unbound okay cuda unbound yes what what were you what were saying the joke was
What do you mean?
You miss the joke?
Yeah, I did.
What was the joke?
Oh, the joke was that I think Cobb could stand for Cuda undefined behavior
because it contains so much of that.
But I fully agree with Price's analysis before that because we know the tool chain that Cup runs on, right?
Like, we know the NVCC versions that the process cop.
We know, like, the behavior of our compiler.
So we have leeway in what we can write there because we know how the compiler.
processes and translates our code yeah and the the biggest problem like the biggest source of ub that
we've probably had in cub has been like initialization problems and that's largely been
requirements change when cub was originally written it was largely designed to work only with plain old
data types and with things that it could assume could be left uninitialized or not zero initialized
because there was a cost to it it was only later on as cub evolved and cub became the back end for
thrust in particular that Cubs, that the requirements have to change and that Cubs then had to
really support, you know, arbitrary user-defined types. And at that point where, you know,
like all of the places where we just assumed that everything was int-like, you know, became
a problem. Or like another good example would be the fact that CUB defaults to 32-bit indexing,
which has caused, you know, some amount of pain over the years. But, like, recent versions of
cup now fully support 64-bit size and offset types or we internally choose right like we check what
kind of size type you pass in we can dispatch an implementation that can handle large offsets and it will
it will do an efficient thing and it will do a correct thing where did you uh where did you work
before invidia and wait got to let these guys finish their chicken nuggets and also too we haven't
said uh or you both haven't said where you're based because we this is the first time we've
ever had four invidians at once.
Jared, we peaked at three.
And so now we've got four.
But we're in the Netherlands right now.
He said that's a quatro in case.
That's an invidio joke if you miss that, folks.
But yeah, tell us where you're based,
because we're not in America right now.
I mean, both of us are basically now the German team at CCL.
No.
The Europe team?
At cup, let's say that.
There's more Germans.
So for the record, I'm based in Austria, which is no longer part of Germany.
You know, there have been times, but that has been long ago, right?
I'm based in Austria, fully remote, working there for the CCCL team maintaining
Cobb, Frost, and Libku Plus Plus.
I actually do live in the countryside, like, in a very small town, a 1,700 inhabitants.
I lived in the mountains.
The sound of the music, you know, like the woman, like, dancing, singing,
on the hills that's that's for what bryce said about the sound of music is the most american thing that
you could think about of austria but it's entirely true like uh like just last weekend uh we
we organized that the baptism of my son and we went there in little hos and and those uh shirts right
like as you would see in in the movie so that's not a lie i actually watched the movie with my wife
a couple years ago because people for the first time right because it's not a thing that the austrians know
a lot about right there are better movies to watch exactly absolutely so so we figured we have to
finally watch that and it's actually a nice movie it's well done and it shows beautiful pictures of
my country there's that one song where she's spinning around on the hilltop very beautiful
very beautiful can you sing any of the songs are you uh no he's never he's seen it once
unfortunately no i'm not a good singer and i also can do like like traditional dances or
or like mountain communication, you know, with big horns or something like, no, no, I'm not, I'm not skilled in this.
Here's a little ADSP, you know, inside knowledge.
I mean, Bryce probably doesn't know this either.
I have three sisters, and when I was younger, my mother, a massive sound of music fan, massive musical fan,
she would torture the four children that she had by making us perform songs from the sound of music.
So we would have, we would all have to line up in the living room.
And sing her favorite was the final song where they do the goodbyes in different languages.
Adieu to you and you and you and you.
So long, farewell, I'll be to say adieu.
Adieu, adieu, to you and you and you.
And then you'd have to like flip and flat.
I'm pretty sure that's either child abuse or forbidden by the Geneva Convention.
I appreciate that.
I feel seen.
Thank you, Bryce.
Because we all didn't like it.
And my mother, I love you, Mom.
You're not listening to this because I know you don't find this podcast interesting.
But if you for some reason end up listening to this, yeah, we never liked it.
And we all, you told us that we had to do it as your children.
But it wasn't really.
All right, all right.
That was the question that initially was asked before I interrupted to say, where are you guys based?
So where did you work before you were at in video?
Right. So before I joined NVIDIA, I did a PhD at CERN, which is a particle physics facility. It's actually the largest. It has a name usually. It's in Switzerland, in Geneva, and we have huge machineries. Like, we have an underground particle collider that's 27 kilometers in circumference. Massive detectors there, like tens of thousands of tons of underground silicon that just measure a particle collider.
and it's full of radiation and high voltage equipment, liquid helium everywhere, and it's just awesome.
It was safer than working on Cub.
That's a good question.
I think we had a, we also had a good share of undefined behavior.
Maybe for, in the defense of CERN, like, you had to do appropriate trainings before you could go into dangerous areas.
Whether when I started out at Envid, he immediately left me into the code base, completely untrained and unprepared.
of the horrors that I would see there.
How did you end up at NVIDA?
Because Paul was saying that he was using CCCL before.
He was a contributor and then he found his way.
What was, were you a similar path or, you know, CERN just gets you a job at NVIDIA?
Like what a...
Oh, no.
So, so many years back, I spared a whole life story, right?
But I'm doing C++ for quite a long time.
And around 2019, I attended my first C++ comedy meeting.
And...
I thought you said comedy for a second.
comedy.
What am I?
They are funny.
Maybe that wasn't a misspell, right?
So I went to a committee meeting and I fell in love with the language before.
I really liked it.
I kind of like grew into the C++ community.
And when I was at CERN, I further developed my skills in C++ and eventually kind of like grew into high performance computing, where we also did some GPGPU computing.
And when the Ph.D. kind of ended, you know, you ask yourself, like, what job can I imagine?
What company could I see myself working for?
I knew I didn't want to continue in academia, so I wondered what kind of company, you know, is invested in the C++ community, cares about that language.
Probably does GPU and care about performance and can maybe employ me in Austria, fully remote, because I wanted to move back from Switzerland because my wife and me were about to start a family.
And that didn't leave a lot of options there, right?
So I figured Nvidia was a natural choice that could combine all these interests
and provide a nice place to work for.
Didn't I, we met for like the second or third time when I came to CERN to give a talk.
And then I was like, we got to hire this guy.
And then I was like, I just like poke people.
Was that time you heard on the podcast and you mentioned that you had gone to CERN?
Yes, that was, yeah.
And I just, well, Bernard gave.
That means you've worked here for less than five years, probably, like three or four.
Yeah, probably.
Is that accurate?
Oh, I started at a video one and a half years ago.
Okay, yeah, yeah.
So there's actually, there's an even better part of the story, which is that when I went to CERN,
I went there to give a talk, and then some group of people at CERN organized, I think an intervention
is probably the best way to describe it, where they took me into a room with a bunch of different CERN users,
and they were like, hey, we really care about reflection.
Can you get on board with caring about reflection too?
And everybody gave a little presentation about how they were using reflection,
why reflection was important.
And I remember you gave a presentation.
Yours was, everybody's presentation was good.
Yours was better than everybody else's.
And I actually was convinced by that meeting,
and I went out of that meeting, and I went back,
and I went to all the C++ powers.
that be at nVIDIA and i was like reflection
we got to make it a priority
we should uh we should focus some effort
on it and uh yeah so
so you you convinced me
that we should care about reflection and i was like
and we should also hire bernard because he's
he's really good we got to have him
before we hand the mic back to bernard this is real bad because
what a lot of listeners just heard
is if you invite bryce to your
corporation
you can then potentially get a job at invidio
i mean well if you can if you can
if you invite me to come
to your corporation and then you ambush me
and convince me. They didn't ambush me to be fair.
I was very happy to meet with them.
But if you stage an intervention and try to convince me
if you convince me something, I mean that's pretty,
you make a compelling presentation.
Presentation is the way to my heart. A good slide deck
is the way to my heart. I will tell you that.
I have like an awful lot of thoughts
in my head. Now I don't wonder like whether I
should like publicly speak about it.
But since like reflection finally got
standardized and in C++,
26, I think I can let Bryce in on some of the background of why we locked him up in this room.
And the backstory was that CERN founded this open source program office and they wanted to have
like a popular figure from the C++ community to speak there.
But CERN also has a very big interest in reflection as a feature because CERN develops this
C++ interpreter and that kind of like depends on generating metter information on C++ code.
and CERN is actually pushing for reflection as a C++ feature,
I think as early as 2005.
Some people showed me papers, like before C++11,
where CERN was proposing reflection.
So when one of my supervisors kind of got in contact with Bryce
to have him speak at that event,
I already made the decision that after the PhD,
I'm going to apply it in media, and I told him.
And my supervisor told me, look,
we're going to have Bryce here.
And one of our priorities would be to just make Bryce believe that reflection is an absolute killer feature.
And he should make sure that every power that Nvidia has should just push for reflection to get into the standard.
And by the way, Bernard, if you want to impress Bryce, maybe he can put in a good word to get hired at Nvidia.
So you do the presentation in that room in front of Bryce and you make a good impression and convince Bryce that we want to have reflection in the standard.
and boy I was so nervous
and I couldn't sleep for weeks
because I know my whole life
and the life of CERN
depended on the 20 minute presentation
I was scared shit
sorry shouldn't say that right
long has the explicit
tag been put on our podcast
so one of the things that actually came out
of that presentation indirectly
is that the reflection
suffered I think in some of the
earlier drafts from having
not the strongest example a lot of people
or making fun of it is like, oh, you can't do anything
with this reflection, you can just do enum to string.
And one of the reasons is that the current perfectionability,
you don't have a way to inject functions yet.
Right, it's a static reflection only.
You don't have a way to introduce new functions.
So it does, to some degree, limit what you can do.
But there was a very simple example
that one of the uses that y'all had at CERN
was using reflection for reordering the field
yields of like a struct, like packing or doing like array of struct, destructive array.
And that, that example I found very, very motivating.
And so I put that into a couple talks.
And then I convince the reflection authors, I think through Andre, that they should put it
into their paper.
And I would like to believe that that example is one of the best motivating examples.
And one of the reasons about, I'd like to think that's one of the reasons why we got
reflection.
What do you think?
That is a great, it is a great origin story, a great Nvidia origin.
story for brown yeah yeah yeah all right who should we should we got we should get coon on the
mic here just for a sec because we mentioned your name earlier and coon is the genesis is the reason you
were the one that came up with sean parr it might be like you're you're gonna get sean parrott t-shirts
we're gonna have oh my god we're going to make we're gonna make i you know i i told conner a couple days ago
i was thinking about making adesp t-shirts but you know just a t-shirt that says a dsp i didn't
I feel like it would be enough, but we're going to get t-shirts that have the parrot, parrot on it, but with Sean's face.
This is coming from the folks that took five years to get you stickers, and it's not like we had the idea three months ago, and it took us three months.
We've been talking about stickers for, like, four of the five years of this podcast.
I will execute quicker on this.
Anyways, well, I mean, technically, we don't need to introduce, Kuhn, because you were on the podcast almost a year ago or two years ago?
Only one time.
Only one year.
Why did you do two?
Oh, for two episodes.
That's right, because you were at the table,
and that got diced and diced up,
as we do on ADSP,
because otherwise it wouldn't be a weekly podcast.
But...
What?
There were two recordings?
Yeah, there were two recordings.
We recorded twice last year?
Or here, you explain.
You take the mic and introduce yourself
in case if we have some new listeners since a year ago.
Shame on you for not going back to the backlog
and listening all 200 episodes since you started listening.
We need those, and also two,
Right before we give Kuhn the mic, we've recently discovered that, like, the Steve Jobs saved
Sean Perrin episode is like the sixth, the most popular Sean episode, and like, I don't even
think it's in the top 100 episodes.
If we don't ask for much listeners, we don't ask for much, what I'm asking is that you all
go to your podcast player, you don't have to listen to it, just go back, download it from
the archive, and then erase it and mark it is played.
we need it to be in like the top 10
because it's not okay
that's not in the top 100
anyways over to Coon introduce yourself
for those that didn't listen a year ago
and maybe tell us about this year's
you know C++ Under the Sea experience
and also how did Sean Parrott come to you
because you're now a part
you were already a part of the lore of ADSP
but now you're really going to be a part of the lore
because Sean Parrott that's brilliant
okay so yes my name is Coon and I'm from Belgium
and well this is actually
actually my third episode, because in the first episode I was in, it was actually recording by Tristan.
I had a question on CPP On Sea last year.
My memory is so bad that yes, we had the episode, I think it was at CPP North, where you had given, or you didn't give,
Tristan whipped out his cell phone, recorded your question. I believe it was about unique count
and a parallel implementation of that and a possibility of the implementation. He played that for
me at CPP North, and then we responded to that, and then we met you here later at last year's
edition. I totally had forgotten that backstory. It was, so when you said three, it wasn't two
times at C++ Under the C. It was one time at C++ Under the C. This is now the second and third
overall, because Tristan's recording of your voice at CPP North. Yeah, absolutely. I mean, you're
very much a part of the lore now. You've technically recorded at two different conferences. How many
people can we say that about? I do not know. You would know. You have the data. I mean, basically
just speakers, I think, because they're the folks that go to different conferences.
Anyways, back to you. What did you think about this conference? And you got any, you got any new
deeply insightful questions for us about the podcast? Feedback? Complaints? Pribes? Putting Kuhn on
the spot. I don't have any questions for the moment, but yeah, the parroting, well, just, I am now
I have a second daughter now
and as things go
I can make a lot of dad jokes now
so Sean Parrott
Congratulations also is this a recent
second daughter or February
so yeah
congratulations
congratulations
so that's why I'm making a lot of
dad jokes now and that was one of them
that came to mind and
what did you think on the conference this year
was good
I learned a lot about Kuda as well
so that was great to get some more
insight on that
and while hearing Sean speak of course
has also been a highlight
and getting to know the Parrot Library
it's funny because some of the things
I already also started implementing
in our library
just because of the ease of use
to have a simple function to call
to have a sum instead of having to call
STD accumulate and so on
so having the simple interfaces
is something that really can help for colleagues
and just to have less
code to make less mistakes so that's really nice to see uh i mean this this is amazing folks dad jokes
is what brought sean parrot into existence and you got to understand is this is going to be a part
of our lives now for years to come i mean uh apparently there may be t-shirts being made
uh we had to we shan's here he gave a keynote the opening keynote to the conference and we got
approval from him because we don't want to abuse sean's name like that but he thought it was hilarious
And yeah, so now it's a part of our lives.
Dad jokes brought this name to you.
And, yeah, the dot sum.
I mean, there's a conversation to be had at a later date about API design
and the importance of an ergonomic and intuitive interface
because I've had conversations with folks that don't necessarily think that that's enough
to be a compelling thing.
And that's not all the pair it is.
But I, I, that people believe that a better interface is not sufficient for, for a library to succeed?
A little bit, yeah.
I mean, with some asterisk, but, you know, you always talk about the 10x difference to switch to a language.
I don't know what the multiplier that you need to switch to a library, but I've heard the quote,
if it's just an improvement, an interface change, that's not enough.
But it's, but parrot is not.
What Parrot, the key selling feature of Parrot is that Parrot is maximally lazy.
And that means that Parrot is asynchronous by default and does fusion by default, both of which are the huge pain points of thrust today.
So the major pain points of thrust are overcome almost immediately by Parrot.
Cheers, Sean.
But wait, well, let's say goodbye to Coom.
Thank you so much.
this is your third appearance. There's got to be a fourth, fifth, and sixth now down the road.
And we're about to talk to Sean Parent, which, you know, it's like right in the middle,
is Sean Parrott. Yeah, yeah. So the name of the Parrot, which is the graphic signifier,
not logo, of my library, has now been named by Coon because he has two daughters, a second daughter
recently. We should explain. Invitya has one team, one org, and one logo. So there are no other
logos. Some things do have graphic signifiers. I did. On Wednesday,
The day before this library was open source, I did spend an hour trying to get the icon of my library to be the parrot.
Graphic signifier.
No, the icon of the GitHub repo.
But it is within the NV Labs organization, and I determined after three different LLMs, an hour of being gaslit,
that's like, oh, you just need to change the markdown, blah, blah, blah.
If the org sets it to be so that you cannot change the icon, you cannot change the icon, you cannot change the icon.
You cannot change the icon.
Anyways, thank you, Kuhn, for being on.
Thank you for Sean Parrott.
We hope, I don't know, are we going to be back next year?
Maybe.
If we're back next year, hopefully you'll be here.
And, yeah, thanks for coming on.
Yeah, thank you for having me.
All right.
And with that, we will transition to not Sean Parrott, but Sean Parent.
Be sure to check these show notes, either in your podcast app or at ADSP thepodcast.com for links to anything we mentioned in today's episode,
as well as a link to a get-up discussion where you,
you can leave thoughts, comments, and questions.
Thanks for listening.
We hope you enjoyed and have a great day.
Low quality, high quantity.
That is the tagline of our podcast.
That's not the tagline.
Our tagline is chaos with sprinkles of information.
