Algorithms + Data Structures = Programs - Episode 261: 🇳🇱 C++ Under the Sea 🇳🇱 Bernhard, Koen & C++26 Reflection!

Episode Date: November 21, 2025

In 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)
Starting point is 00:00:00 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
Starting point is 00:00:55 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.
Starting point is 00:01:47 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.
Starting point is 00:02:12 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.
Starting point is 00:02:23 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.
Starting point is 00:02:45 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.
Starting point is 00:03:22 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.
Starting point is 00:03:54 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
Starting point is 00:04:29 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,
Starting point is 00:05:14 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.
Starting point is 00:05:54 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.
Starting point is 00:06:14 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.
Starting point is 00:06:43 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
Starting point is 00:07:25 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,
Starting point is 00:08:06 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.
Starting point is 00:08:47 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.
Starting point is 00:09:07 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.
Starting point is 00:09:55 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?
Starting point is 00:10:28 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.
Starting point is 00:10:46 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?
Starting point is 00:11:21 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.
Starting point is 00:12:03 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.
Starting point is 00:12:22 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.
Starting point is 00:12:57 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
Starting point is 00:13:15 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
Starting point is 00:13:31 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.
Starting point is 00:13:47 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.
Starting point is 00:14:07 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,
Starting point is 00:14:45 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,
Starting point is 00:15:08 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
Starting point is 00:15:45 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
Starting point is 00:16:00 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.
Starting point is 00:16:20 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.
Starting point is 00:16:47 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.
Starting point is 00:17:09 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.
Starting point is 00:17:56 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,
Starting point is 00:18:15 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.
Starting point is 00:18:26 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.
Starting point is 00:18:53 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
Starting point is 00:19:16 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
Starting point is 00:19:34 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
Starting point is 00:20:16 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
Starting point is 00:21:01 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
Starting point is 00:21:15 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
Starting point is 00:21:29 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
Starting point is 00:21:46 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
Starting point is 00:22:15 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
Starting point is 00:22:47 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.
Starting point is 00:23:23 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.
Starting point is 00:23:58 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.
Starting point is 00:24:38 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.
Starting point is 00:25:00 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.
Starting point is 00:25:25 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.

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.