Jakub Homola, a PhD student at the Faculty of Electrical Engineering and Computer Science (FEECS) at VSB – Technical University of Ostrava (VSB) and a researcher at the IT4Innovations National Supercomputing Center, completed a high-profile internship at the US Argonne National Laboratory (ANL). While there, he even gained hands-on experience with the Aurora supercomputer, one of the world's most powerful supercomputers.

During his internship, he focused on making application development easier across different types of GPUs – from NVIDIA and AMD to Intel. Using the Kokkos and KokkosKernels frameworks, he explored ways to help scientists run code on modern supercomputers without having to rewrite their applications for each type of hardware.

His internship resulted from a long-term collaboration between Argonne National Laboratory and the IT4Innovations Infrastructure Research Lab, led by Lubomír Říha. Jakub shared with us what it was like to work at one of the world's leading supercomputing research centres, what he gained from the experience, and what key takeaways he's bringing back.

How did the internship opportunity at Argonne National Laboratory come your way?

JH: As part of my PhD studies, spending time at a host institution abroad is a must. I initially looked at options in Europe, but when my supervisor mentioned he was collaborating with researchers at Argonne and that an internship there might be feasible, I jumped at the chance. They have several paid internship schemes that could have worked, but due to overly complex bureaucracy and likely the political situation, going on an unpaid internship ended up being the only option – though I still received a mobility grant from VSB-TUO and FEECS. That practically eliminated the application process, but there was still plenty of paperwork to deal with.

Jakub během stáže v Argonne National Laboratory

What was it like to pack up and start living on another continent for a month, from finding a place to stay to your first few days at Argonne National Laboratory?

JH: Like a true procrastinator, I only started looking for accommodation about a month before the internship started, so there wasn't much left to choose from. I didn't want to rent a car, so I was looking for somewhere with good public transport links to both Argonne and Chicago. Even though the commute between my place and Argonne took just over an hour, I was really happy with my choice of the town of Aurora. My first impressions were a bit uncertain, but I ended up really liking it. It’s a pretty nice, classic mid-sized American town with the Fox River running through it, surrounded by a lovely park with trails and plenty of greenery.

And living on another continent didn't actually feel all that strange to me. At the end of the day, you still go grocery shopping, cook meals, commute to work, relax, and spend your free time pretty much as you would anywhere else – just done a bit differently than back home. So, there was no major culture shock. The only big difference was that without a car, your freedom is much more limited, but I knew that in advance and chose my accommodation accordingly.

Naturally, during my first few days at Argonne, I kept getting a bit lost, but the other interns and colleagues were always super helpful. And since there are usually hundreds of interns there over the summer, they're used to handling it at Argonne.

What did you actually focus on during your internship at Argonne?

JH: Most of today's supercomputers, especially the most powerful ones, get their power not from traditional CPUs, but from GPU accelerators, which are much faster and more energy-efficient. Typically, GPUs from three main vendors are used: NVIDIA, AMD, and Intel. But each vendor uses a different programming model. So, when you're developing an application that needs to support all three types of GPU accelerators, you usually have to tailor it for each hardware vendor separately.

However, there are software libraries – like Kokkos and KokkosKernels, which I was looking into – that unify the approach to GPUs across all manufacturers. The library handles the internal details and differences under the hood, so the programmer doesn't have to worry about them. It saves a lot of work because you only need to write one version of the code instead of three.

At the same time, though, these libraries must make various trade-offs that lower application performance. The goal of my work was to use Kokkos and KokkosKernels, evaluate their usability, and determine how significantly the trade-offs impact our application's performance. And thanks to Argonne, I even got access to the Aurora supercomputer, where I could run my code on Intel GPU accelerators.

How did the work environment and culture at an American research institution differ from what you are used to in the Czech Republic?

JH: I felt that there was a much bigger emphasis on collaboration over there. People know each other better; they know what everyone is working on, and whenever there's even a chance that someone could help out, a meeting gets booked in a conference room to talk things over. It was also basically one big open-plan office, which really helps with that kind of collaboration. But I don't have enough experience to say whether that was down to America itself, or just the fact that it's a different institution with different people and habits.

What was the biggest surprise for you during your stay at Argonne – professionally or even just in day-to-day life?

JH: What surprised me the most was probably how seriously they take information security over there. Since Argonne falls under the government agency DOE (Department of Energy), a close watch is kept for espionage and the theft of knowledge and technology. Apparently, they've already had a few cases of espionage and network breaches aimed at stealing data and tech. Even though I was working mostly with open-source software, all the rules still applied to me. It was a bit uncomfortable and sometimes made day-to-day work a hassle, but I totally understand why they do it.

It was also pretty interesting to see how much people in the US worry about tornado threats in general, and just how common tornadoes actually are. In those five weeks alone, there were two tornado alerts, and a few tornadoes even touched down in the wider area.

What will you take away from the internship for your future work, and what advice would you give to students and early-career researchers who would like to get a similar experience abroad?

JH: On the technical side, I mainly learned how to work with the Kokkos ecosystem, gained access to the Kokkos user and developer community, got hands-on experience evaluating application performance portability, picked up new insights into the Intel GPU software stack, and a whole lot more.

But I think the internship was actually even more valuable for me in terms of soft skills. Working in a different team, with different people, in a new environment, and in a slightly different way gave me a fresh perspective without me having to leave my current job. As with everyone else, I would definitely recommend taking on an internship like this. It'll almost certainly broaden your horizons in ways you didn't even know existed. And it'll either open doors out into the world for you or reassure you that there's no place like home.

If you had to pick one single moment from your internship that would stay with you the most, what would it be?

JH: I've thought about it for a long time, but nothing really stands out above everything else. I've got so many great memories, from an in-person tour of the Aurora supercomputer to a bike ride around Lake Michigan, traditional Chicago deep-dish pizza, the Memorial Day parade in the city of Aurora, and the open house across the whole of ANL on my final day. But it's impossible to pick just one. Every single one of those experiences had something going for it, and even though there were a few bad moments too, like my laptop breaking down in just the second week, overall, I look back on my time in the US really fondly.

Jakub, thank you for the interview.