Algorithms + Data Structures = Programs - Episode 283: From 0 Programming to NVIDIA in < 3.5 Years

Episode Date: April 24, 2026

In this episode, Conor and Bryce chat with Marco Salgado about his journey from no programming experience to NVIDIA in &lt; 3.5 years.Link to Episode 283 on WebsiteDiscuss this episode, leave a commen...t, or ask a question (on GitHub)SocialsADSP: The Podcast: TwitterConor Hoekstra: LinkTree / BioBryce Adelstein Lelbach: TwitterAbout the Guest:Marco is a software engineer at NVIDIA, where he works on improving the nvCOMP library, which offers fast GPU implementations of multiple data compression formats. For the past couple of months he has been working on a GPU implementation of the rotate algorithm.Show NotesDate Recorded: 2026-04-23Date Released: 2026-04-24ADSP Episode 237: Thrust with Jared HoberockNVIDIA CCCLNVIDIA nvCOMPNVIDIA Nsight SystemsNVIDIA Nsight ComputeC++TO Meetup: Parrot - Array GPU ProgrammingIntro 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 I think I started programming around the end of 2022. I started with Python. Then a year after that, somewhat, I started getting into C++. And then middle of 2024, I discovered Cuda. And that's, I got really into Cuta. And then I did my master thesis in Cuda. I, after that, June of last year, I started an internship at Nvidia. And then that was until December.
Starting point is 00:00:24 And then in February, I've started as a full-time employee, as a software engineer. on the NVCOM library team, so maintaining that library. And that's basically my path to where I am now. Welcome to ADSP, the podcast, episode 283 recorded on April 23, 2006. My name is Connor, and today with my co-host, Bryce, we interview a fellow NVIDian Marco Salgado. This will probably be part one of a three or four-part conversation. In this first part, we primarily talk about Marco's path to Nvidia, where he started.
Starting point is 00:01:08 with zero programming experience less than three and a half years ago and ended up with a full-time position at NVIDIA. I should also say I was supposed to announce at the beginning, but now I guess I have to cut this in. If you are listening to this in the first three days from when this comes out tomorrow, which for you is today listening to it, on April 27th, if you happen to be in Toronto, there is a, the first in like many years, C++, Toronto user group meeting, which I'll be speaking at. I flew back, you know, Shanghai, Hong Kong, Hong Kong to New York, and that is east to west. Ramona flew back Shanghai to Dubai and then she spent a day doing stuff in Dubai and then Dubai to New York. My question is not why she's not with you. My question is, why are you picking her up? Because the last time I checked, you don't have a car. I mean, this is just, this is just what you do.
Starting point is 00:02:12 Connor, you pick up, when your partner returns from a long trip, you go to the airport and you meet them with flowers. What? This is like boyfriend one-on-one, 101. Whoa, whoa, whoa, whoa, whoa. What she, how are you getting to the airport? I'm going to take the train. She's got bags and she doesn't like traveling on her own. So you meet her at the airport.
Starting point is 00:02:36 What, she's going to have to go and figure out where to get a cab on her own. It's called Uber. You hit a button on your phone and it shows that is, wow, you are quite the gentleman. I mean, because how long have you guys been dating? You've been dating for, I want to say five years. I'm actually, for once, I'm banking on immigration, taking a long time to process it like they usually do. All right. So we don't have time.
Starting point is 00:03:03 We have like a whole, I've gone down like a very deep AI rabbit hole. And like, I think I've leaped for, I sent you on Slack. I think I've leapfrogged you on a couple things. All right, we've got to take a step back. This is classic Bryce, though. He, like, jumps into the middle of, like, a conversation that we haven't even started. And he's like, all, right, right, right, right, we got this. So we have a guest with us, first of all.
Starting point is 00:03:23 So what we're going to do is we're going to introduce our guest. And then we are going to talk about the couple, maybe more than a couple topics that you're going to hear over the next two to three to four episodes. We're probably going to record this in two parts, though, because we've got, I think, only 40, maybe 50, depending, depending on. on the status of Ramona's progress through immigration. And anyway, so what we talk about in this first episode, I don't actually know which topic we're going to cover first. But we'll introduce Marco in a second. The topics we're going to talk about, I believe, are Bryce's leaping Connor and his AI
Starting point is 00:03:56 abilities with his auto coupa and everything else he's been up to. Plus maybe some Bryce updates because he's been all over the world at different, I don't know, conferences, universities, doing lectures and talks. I don't actually know. He'll tell us. Will that be in the second part, the third part, or the first part? We don't know. And then the other thing we're going to, the other major topic we're going to be talking about is GPU implementation of an algorithm we talked about.
Starting point is 00:04:22 I don't know what episode it was on, folks. Maybe Marco does. Of Rotate, which we. I think 200, 102. There's a couple of them there where you mentioned that in the episodes with Jared Weber. He knows the episode. You also talk about that. Well, that's the reason.
Starting point is 00:04:37 on the slides that I presented, I mentioned one of the episodes. That's why I know that. So we'll let Marco introduce him in a second, but the way that this episode or these ADSP episodes came together is I've missed the last two Better Code meetings, which is an internal meeting at Nvidia that happens, I believe, every Wednesday or every other Wednesday that Jake Hempstead, I think is in charge of, but he might have actually delegated running it to a couple people on his team. Jake is a manager of the CCCL team, which is the Cuta Core Libraries, Kuta Core Compute Library. See, that's the beautiful thing about that acronym. Yes, change. You stand for whatever you wanted to stand for. The C has changed from time to time, but it is currently the first CQA.
Starting point is 00:05:22 It was Cuta Core compute libraries. No, I thought originally it was C++. C++, yes. No, no, no. Originally, I told people it was C++, but it was really Cuta core compute libraries. All right, right, we got what? It doesn't matter. We got, like I said, we're short on time, so we can't tell all these stories.
Starting point is 00:05:39 But I missed the last two. One was on a find-if implementation, a GPU find-if. And the second one, the most recent one, was a rotate. And I actually had planned to go to that one, but a story we don't have time to tell the day is that my sump pump pipe, like, exploded. And that morning, like, I came downstairs in the basement to see water shooting out of the floor. I actually was at my desk at 5 p.m. Eastern time when that meeting was taking place. But just because the pipes had exploded, it rattled me and I missed that meeting. But then I was like, oh, yeah, better code was today.
Starting point is 00:06:14 I checked it like 10 p.m. And then I saw that I didn't know what the topic was. I saw that the topic was a rotate implementation. And I was like, oh, my goodness, I can't believe I miss this. And I also saw it was two hours. And I was like, holy smokes, it actually wasn't two hours. It was an hour. And then I believe, I think I'll throw them under the bus.
Starting point is 00:06:31 Andrei Alexandrescu didn't log off of the meeting for an additional 60 minutes. So it's just his little icon. He has an excuse. The thing is that he had to basically leave the meeting because he had to take his kid to soccer practice or something. So he basically told me, yeah, I'll just stay in the meeting so that it keeps recording. And then everyone just locks off. So that's basically the reason.
Starting point is 00:06:52 Was he the one that started the recording? Yeah, exactly. Oh, I see, I see. All right, that's fair enough, fair enough. You got to pick up your kids. You got to pick up your wife. you got to pick up your wife. A lot of people you got to pick up.
Starting point is 00:07:03 Anyway, so I saw that at 10 p.m. And I can't remember if I immediately watched it or I waited to first thing Thursday morning. And then I thought to myself, I did not understand a lot of stuff that was talked about in this session. And plus, even if I had understood everything, we got to bring Marco on. So with that all out of the way, we'll throw it over to you, Marco, because I actually, I don't think we've crossed paths before this. And introduce yourself. Tell us a little bit about your history, your path to Nvidia. and then we can decide do we defer GPU rotate to part two and get Bryce's Auto Kuda and travel updates or we do to the rotate now.
Starting point is 00:07:38 I don't know. We're going to talk about rotate this week because by next week, by next week, by next week coming. The whole will happen by next week. You're what is it? You're the Thanos collecting infinity rings and you've got like four out of five right now. That is correct. I have four out of five. All right.
Starting point is 00:07:58 So Marco, throw it over to you. introduce yourself and then we'll yeah we'll talk about GPU rotate yeah so yeah mark i'm a fellow listener of the adsp podcast and yeah i'm 25 years old i'm from madrid spain originally but i studied in germany and i think i started programming around the end of 2022 i started with python then a year after that somewhat i started getting into c++ and then middle of 2024, I discovered Kuda, and that's, I got really into Kuda, and then I did my master thesis in Kuda. I, after that, June of last year, I started an internship at NVIDIA, and then that was until December, and then in February, I've started as a full-time employee, as a software engineer
Starting point is 00:08:43 on the NVCOM library team, so maintaining that library, and that's basically my path to where I am now. hear what NVCOMP is. Also, you may be the youngest, the youngest guest on our, or the first post-COVID programmer on our podcast. And wait, before we get to MVP comp, I got 100 questions. This is like a, I don't want to say like regs to riches story, but you started programming like three and a half years ago and now you're working at Nvidia. Like, that's absurd.
Starting point is 00:09:16 Well, first of all, what were you doing before then? And second of all, like, what are to tell the listeners, well, I guess maybe most of the listeners are gamefully employed, but to the ones that aren't her that are university students, how does one start programming and then rapidly go through Python C++ Kuda and get a job at Nvidia? That's wild. Yeah, that sounds well to me as well. Yeah. So basically I did my bachelor's in mechanical engineering. And I would say my first passion was aerodynamics. And so that's where I started. And then I did my master's in aerospace engineering. But I basically went to a specific university where you could choose a lot of different subjects. Because right after I began my master's, that's when I got started into programming and I really liked it. So I didn't know if I wanted to stay in aerodynamics or go into programs. And so that master's basically allowed you to do, I don't know, I did courses on quantum computing, on algorithms, on probabilistic and Monte Carlo methods, like weird stuff. Basically, you could choose between a lot of stuff. And then, yeah, basically, I also got a part-time job as a programmer in Python, and then that's also where I learned a lot of stuff. And then early on, I realized that I really enjoyed this and basically got obsessed with it. And that's how that went.
Starting point is 00:10:32 And then, yeah, when I got to C++, I got another job. I switched jobs to another part-time job as a C++ programmer. And I think that also helped me a lot because I went into a team that was developing a library where they were going to sell the source code itself. And so they really took care that everything was programmed very well and very clean style, very clean way of programming. And I learned a lot there. And then, yeah, I mean, when I got into Cuda, I think I was also very naive.
Starting point is 00:11:00 and I basically got destroyed at the beginning with the complexities, but I just kept on going, kept on going. And then my master thesis, I also had the fortune or like the good luck that I found a very good supervisor who's a professor at Texas State University, and he allowed me to do the master thesis with him. And I also learned a lot from that master's thesis. And then, yeah, and then the internship, everything also lined up. I think my supervisor is someone that is somewhat well known in the data compression space,
Starting point is 00:11:34 in the GPU data compression space. So him giving good feedback on my work, I think also helped a lot for me to get the internship on Nvidia. And then once I was in Nvidia, I think it was just showing that I was good enough. And then I guess that was the way that I got in. I think doing an internship seems like a very good way of getting in because Nvidia seems to be a company that either only hires interns or all. only hire senior people. There's like a gap in between where new graduates don't really,
Starting point is 00:12:04 there are not really options for that. So I think an internship is a very good way for someone young to get into Nvidia. I think a lot of companies are like that. I mean, they would deny that they are, but it's just a matter of that it's, you're taking a risk. Like, it's a more certain thing if an intern has proven themselves and like a senior person has proven themselves. And so I do know that like new grads do get hired. But it is just, much more difficult. Like the company that I got hired at, they had like a massive funnel of basically co-op students and interns. And like it wasn't, this may be changing because I, when I was in China, I met with one of the most AI-pilled teams at Nvidia. And the manager of the team was saying,
Starting point is 00:12:45 I only hire, I love interns. I only hire interns in new college grads. I have a bunch of senior roles that I can't fill because all the senior people are not like sufficiently AI-pilled. And so I don't want to hire a senior person when I can just keep hiring more junior people. And like that does kind of make sense to me. The other good way to get hired at NVIDIA is be a student at the University of Waterloo and do crazy, you know, cool AI stuff and then tweet about it. And there's like three or four of these students who have come across my desk recently. And I don't know what's going on with this current class of the University of Waterloo,
Starting point is 00:13:23 but they're all really, really sharp. I mean, it's always been the case, University of Waterloo, a great school. But yeah. Did the guy that implemented Herbal Quant get a position at Envidio or what? Not comment. Can't comment on that. Yeah. Any and I are chatting.
Starting point is 00:13:41 So wait, a couple more questions because I do find this very curious. You mentioned so you were based in Madrid, then you studied in Germany, but then you mentioned your thesis for your master's was at Texas State, A&M. I know there's a bunch of, I'm not sure if I got, did I get that right? Texas State. It's Texas State University. It's a different one from A&M. Okay.
Starting point is 00:13:57 Yeah, yeah, I know that, because there's like three of them. There's also like UT Austin anyways, and I always get them confused. So it's just Texas State. Were you still in Germany at the time, or did you come to the U.S. for your, how did that work? No, we did it remotely. So, I mean, I, yeah, when I did my master teachers, I went back to Madrid because it was in the winter, and winter in Germany is pretty miserable. So I took the chance, and I went back to Madrid, and I've been in Madrid ever since. So this was end of 2024.
Starting point is 00:14:24 And so were you doing your master's just remotely from Texas state or did the Germany University have some like partnership or something? No, it's not necessarily a partnership. But I mean, in my experience, German universities are very flexible with how you do things. And so I basically just found someone at the German university that allowed me to have an external supervisor. And so I just did my thesis remotely from Madrid with my supervisor in Texas. We just had one Zoom call every week talking about stuff and then we emailed.
Starting point is 00:14:56 And then the guy from Germany just had to basically sign off the thesis saying that. You tell me that Germans are known for their flexibility. I know, I know. It doesn't sound right. But in my experience with university, they are pretty flexible. I mean, even in university, if you want to do your bachelor's in seven years, you can do it in seven years. It's your choice. You can choose how many courses you take every year. You can take during your first year. You can take courses from the third year if you want. You can do everything basically as you wish. It's your own problem. And I'm just going to say, please, no angry,
Starting point is 00:15:37 no angry letters for that from the Germans. I guess last question, unless Bryce has got more questions about the education, because I find this very fascinating. And also, this is, I think, very valuable. Or maybe Europeans already are aware of this kind of flexibly. ability. But when you were searching for your thesis advisor, were you specifically at that point, did you have like CUDA in mind and potential like jobs in this space? And did you reach out specifically to that thesis advisor because of that? Or was it for other reasons you reached out? And then that kind of path just led to CUDA and Nvidia. No, so I, so basically I started with CUDA beginning of 2024 middle of 2034 in a university project and after getting into that I knew that
Starting point is 00:16:23 I wanted to do my master thesis in that and I think doing a master thesis in kuda is quite difficult it's quite difficult to find topics for it and research groups that specialize in that and so I basically started looking all over europe to see what options there were and then I came across some papers from him I think I had come across a paper from him already in the past and so I contacted him His name is Martin Burtcher. And then I just contacted him, sent in an email, and he was kind enough to, yeah, give me an opportunity. And that's basically how it happened. This is a, that's an amazing.
Starting point is 00:16:55 I don't know if this exists in North America, but what a life hack. Like, I'm not sure if you had a mentor or something that told you this is possible. But, like, if you just stumbled onto this or maybe it's just a common thing, that is, like, wildly, like, I don't know, like, amazing. Or just, like, a focused, like, you wanted to go a place. you didn't find any advisors, you know, and so you just searched basically the globe, tried to find folks that were doing research in this area, found one, got them to agree to be your advisor. Note to like listeners that are, because we, like, probably one of the most common
Starting point is 00:17:27 questions we get is whether how do you get a job in Nvidia or like some other big tech company. And it's, and one of the things we always say is like, well, what do you want to do? And it sounds like you answered that question like very quickly, or at least at some point and then went and like found someone to basically do master's with. But that is very fascinated by that story. And I imagine there's a few people listening right now thinking like, huh, I'm in my fourth year of university.
Starting point is 00:17:52 What a interesting idea. You know, maybe they're going to go do the same thing. All right. Any follow-up questions from Bryce? And also, too, actually, I do have one more question. You took a whole undergraduate degree in mechanical engineering. Was that the right engineering? And they didn't have a single programming assignment or programming course or anything like that?
Starting point is 00:18:11 They had a course on programming. that was Java. I think it was second year or third year. And I remember that was very basic. I remember even the exam, you had to write code by hand. Oh, so that is a mandatory course. So you did take one course, but the problem was it was in Java, and that did not make you fall in love with it.
Starting point is 00:18:31 Nah, the thing is I was already in love with aerodynamics, I guess. So it was hard for me to dedicate a lot of time to that because I was very focused on aerodynamics. Right. I see. So it wasn't until later until you came to programming. a second time that you kind of fell in love with it. Yeah, exactly.
Starting point is 00:18:48 Interesting. All right, any questions from Bryce, and then we can pivot to GP2, GPT. That's how AI build I am, folks. I can't say GPU correctly. No, no, no, no, let's talk about GPU rotate. All right. Well, throw it over to Marco. So, I mean, my, I thought the presentation was great.
Starting point is 00:19:07 There was, I mean, I'll let you explain the two different. I should, I have not seen this presentation because I was in China. So I have very limited background on this. And also the listening to those too. I mean, I guess we can't. You'll have to submit some version of all the version of this once GPU rotate gets into Thrust or Cub or wherever we're going to put it somewhere in CCCL and give it at a conference because probably we can't make that internal talk public.
Starting point is 00:19:32 But anyways, you present two different kind of implementations based on a criteria. But then the thing that I, you know, this might end up in like part two of this conversation. So a week from now. is like all the profiling and you were doing a ton of stuff with, I believe, NCU to like measure this metric and this metric. And like that stuff is just like I use NSIS, not all the time, but pretty frequently. It's NICU, not N-C-O. Is it N-C-U?
Starting point is 00:19:59 I mean, I've never, I've never heard it said that way in my life. I always say N-C-U. Yeah, because N-C-U. I mean, do you say N-S-Y-S? No, because that has a good, that has a good pronunciation. N-SIS sounds good. NICU? NICU stands for the neonatal incubator.
Starting point is 00:20:18 It's like where the babies that need help in the hospital go. Well, you know, the kernels need help. Let me, because I've been saying this lot in our tutorials, Nvidia has two different profilers for the compute side of things. Insight Systems gives you an eagle-eyes view of everything that's going on in your program. It's a sampling profiler, so it looks at what's happening to every stage of your profile, of your program. And then it builds up, just like in an audio editor, a bunch of different tracks showing
Starting point is 00:20:55 what every process and thread is doing at any given point in time. It is great for identifying I.O. and memory movement bottlenecks, concurrency issues, et cetera, looking at overall utilization. And it has relatively low overhead. But Insight Compute is a kernel level profiler. So it is a tool for profiling a single individual kernel or operation or multiple different kernels and then looking at those results. It can collect a bunch of different hardware performance metrics like, for example, L2
Starting point is 00:21:30 cash performance information like L2 cash misses or things like how many sectors are utilized out of every L2 sector that's. trend that's loaded in and also things like how many operations are issued per cycle stuff like that now collecting all these hardware performance metrics is challenging because you can only collect a few of the underlying counters at a time so insight compute will run your kernels multiple different times it'll run your whole program multiple different times so it could be up to you know 40 or 50 times so it has a lot of overhead but it gives you very detailed information insights into the performance of a particular kernel or algorithm in your program.
Starting point is 00:22:16 So yes, you used a lot of these metrics of which, to be honest, like how often, Bryce, do you use NICU? Pretty often. Pretty often? I think I've used it once, and like, I failed to gleam any information from it because I was like, this is too confusing. You should come to one of my classes, Connor. I'll teach you.
Starting point is 00:22:35 I have a whole great, we have a great... I've been at your classes. You never talk about NICU. Oh, no, you haven't been to our classes recently, not in the last year. That's not true. I was in Norway. You were, yes, and we talked extensively about inside compute and inside systems. I think you talked about ENSIS briefly.
Starting point is 00:22:55 But anyways, I'm not an expert. And so we get to chat about the implementations, the things that you were measuring. And hopefully this will be a fun conversation because we love rotate, obviously, but also informative in terms of like, how do you go from nothing to, designing a GPU algorithm and the things you have to consider. And do you start with ENSIS or do you go straight to Nick you? It sounds so weird. But anyways, over to you, Marco. Now, like a mini-representation of the better code GPU rotate that you gave a week ago.
Starting point is 00:23:27 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 GitHub discussion where you can leave thoughts, comments, and questions. Thanks for listening. We hope you enjoyed and have a great day. high quantity. That is the tagline of our podcast. It's not the tagline.
Starting point is 00:23:46 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.