The tasks for this project are quite visible outside the Lab. Aidan can point to this work and say, ‘I made that!’
Ian Lee, mentor
two people on video chat overlaid on an abstract image of computer graphics

Open-Source Software Community Welcomes Virtual Internships

Thursday, October 1, 2020

LLNL hosts hundreds of student interns annually—even during a year distinguished by the COVID-19 pandemic. This summer, the Computing Scholar Program welcomed 160 undergraduate and graduate students into virtual internships.

The Lab’s open-source community was already primed for student participation. Open-source software (OSS) by definition is freely accessible by users and developers from any organization or location. LLNL manages more than 650 software repositories on the GitHub OSS hosting platform, where Lab developers are accustomed to interacting with far-flung collaborators. The open-source infrastructure and culture provide a natural, convenient setting for remote interning and mentoring.

Student contribution offers a win–win for both interns and OSS project teams. Students gain job experience, establish professional contacts, develop new skills, build a programming portfolio, and get a taste for working at a national lab. Project teams often delegate standalone features to interns, and can benefit from this temporary workforce’s motivation and perspective. OSS developers also have the opportunity to evaluate students beyond curricula vitae or school transcripts. Indeed, many Computing interns are offered, and accept, full-time jobs at LLNL after graduation.

Ascending New Architectures

This year marked Seif Ibrahim’s second summer contributing to Ascent, an in-situ visualization and analysis tool for multiphysics high performance computing (HPC) simulations. The computer science major came into the job as a “big user” of OSS. “Starting in middle school, I began experimenting with installing different Linux distributions. It was easy to find a Python script on GitHub and modify it to suit my needs,” he said.

Under the mentorship of Matt Larsen and Cyrus Harrison, Ibrahim developed a custom computer language in Ascent. He stated, “The language is designed to let scientists ask and get answers to questions about their data while the simulation is running.” He converted expressions in the custom language into kernels that run on graphics processing units (GPUs), which are a crucial part of many next-generation HPC systems including LLNL’s Sierra supercomputer.

This summer’s internship was a boon for Ibrahim’s programming abilities ahead of his third year at the University of California, Santa Barbara (UCSB). “I’ve increased my knowledge of C++ and Python, which directly translates into helping me with my undergraduate courses. The experience has opened up more opportunities to work at one of UCSB’s research labs should I decide to pursue a master’s degree,” he stated.

The internship has also enabled Ibrahim to acquire a bibliography. He published his first conference paper with the Ascent team at the In Situ Infrastructures for Enabling Extreme-scale Analysis and Visualization (ISAV) Workshop, which was held in conjunction with SC19. The research won the ISAV Best Paper Award, and his work was again accepted to the ISAV Workshop in 2020.

“Ascent is a modular library with logically separated components. A student can contribute to one area without having to worry about the overall complexity,” explained Larsen, who has mentored seven interns over four years. “Because Ascent is open source, Seif was free to develop code on his personal laptop in a familiar development environment.”

Ibrahim acknowledged that his previous experience as an LLNL intern made for a relatively easy transition into working remotely this summer. He already knew the Ascent project team and knew what to expect with onboarding. Still, “I missed being able to interact with other summer interns,” he said, emphasizing the importance of being disciplined when working at home. “I had to more consciously manage when I took breaks and moved around.”

The Ascent team used a dedicated Slack channel and held regular WebEx meetings. “A whiteboard can be helpful when discussing technical topics. Instead, we used WebEx, PowerPoint, or ASCII diagrams,” noted Ibrahim. Larsen elaborated, “More conversations took place over chat, where it’s harder to convey subtleties that would otherwise be much easier with speech. We held impromptu meetings where we looked at code together and talked through the complexities.”

Accelerating Skill Development

Stefan Henneking’s previous experience with OSS included an Amazon Web Services internship and his ongoing PhD research at the University of Texas at Austin. His internship with the MFEM (Modular Finite Element Methods) team this summer focused on GPU support for particular use cases for the math library. “Many scientific applications require the solution of high-frequency wave propagation where high-order finite elements, suited to computation on GPUs, are needed to obtain a stable discretization,” he explained.

By working on MFEM, Henneking learned about the challenges and advantages of GPU acceleration in finite-element codes. He was also exposed to other mathematics OSS including the finite-element visualization tool GLVis, the discretization library libCEED, and a repository of preconditioners and solvers called HYPRE. With his dissertation nearly complete, Henneking does not expect to apply his new skills to his PhD research. However, he noted, “Much of what I learned will be applicable after graduation, whether I pursue a career in industry, academia, or at a national lab.”

Mentor Mark Stowell was happy to have an intern’s help. He stated, “Bringing in Stefan improved our applications by leveraging GPU architectures, and he helped me learn these newer programming techniques. The internship was good for me, good for the Lab programs for whom I write applications, and hopefully good for Stefan as well.”

MFEM is a mature repository with contributors from all over the world. Its developers have shared code and tracked issues on GitHub for more than a decade. Accordingly, Stowell explained, “Working remotely with Stefan was quite simple and no different from the project’s usual workflow. We used Slack messaging to ask a quick question, exchange images or documents, and conduct spontaneous video calls.”

Henneking was initially skeptical about a remote internship. “Previous internships taught me that the social interaction and networking aspects are just as important as the technical tasks. However, I was very positively surprised with the team’s communication,” he said. “I hope I will have a chance to visit the Lab and personally meet the people I worked with.”

Visualizing Complex Information

Aidan Epperly did not have much practice with OSS before beginning his internship with mentor Ian Lee. “My only real experience was with open-source Python libraries. I had used GitHub as a way of coordinating personal projects across multiple people,” he stated. The University of California, San Diego, undergraduate created data visualizations for the Lab’s OSS website. His job entailed writing and editing JavaScript files to generate and update visualizations that provide insight into the characteristics of, and relationships between, LLNL’s software repositories on GitHub.

With most of his prior programming experience focused on mathematical modeling and simulation codes, Epperly found these unfamiliar duties challenging. “I didn’t have nearly as much experience writing in JavaScript as I did in Java or Python. For these visualizations, I learned D3.js, a JavaScript library for data visualization, and GraphQL, a query language used by GitHub,” he explained. As his code was publicly available, Epperly received valuable feedback on several of his tasks from LLNL developers outside the project.

Lee, who created the website as a portal to the Lab’s OSS development community, had been wanting to improve the visualizations. Although Epperly did not specialize in this field, he jumped right in. Lee pointed out, “The tasks for this project are quite visible outside the Lab. Aidan can point to this work and say, ‘I made that!’”

For Epperly, the virtual aspect of his internship was easier than expected. He said, “I was able to remain productive even while working from home. The most difficult part was the lack of casual social interactions with my peers and other Lab employees.” Lee added, “It’s odd that I didn’t meet with Aidan in person this whole summer, but video conferencing made that a lighter burden.”

More information about the Computing Scholar Program is available online.