Graduate students at Purdue have been learning a coding technique that will help them land top-tier jobs once they graduate.
The computing industry has felt a strong push toward finding ways to compute large amounts of data with simultaneous coding. Tasks formerly delegated to a computer’s central processing units (CPUs) are now being given to graphics processing units (GPUs), which more efficiently process large amounts of data. These developments require students to acquire new effective coding skills, including the ability to perform “parallel programming,” a technique taught to students in CGT 62000, Introduction to Compute Unified Device Architecture, or CUDA.
“There is a paradigm shift in computational thinking,” said Bedrich Benes, professor of the course. “Computers are no longer a single CPU. They use multiple computational cores and the new generation should know how to utilize their power.”
Benes, an associate professor in the department of computer graphics technology, said the class provides opportunities that have helped his students find jobs at large companies.
“Several companies are trying to smear the differences between CPUs and GPUs in bringing them closer together,” Benes said.
CUDA is a skill that a computer programmer wants to add to his or her resume, whether he is a computer scientist or engineer, said Innfarn Yoo, a graduate student in the department of computer graphics technology.
“Today’s industrial areas are more and more focusing on analyzing, processing and visualizing large-scale data,” Yoo said. “For example, visualizing the United States’ pollution levels, solving the Navier-Stokes equation for weather forecasts and processing computer graphics in movie industries.”
CUDA can speed up a student’s or researcher’s data analysis up to 500 times, making the programming skill attractive to potential employers. Even the movie industry has need of the advanced coding skills in CUDA, since it continues to rely more and more heavily on expert visual effects coding.
Yoo said that even as a student in college, he’s noticed the helpfulness of learning to use CUDA programming.
“My master’s thesis was about human motion processing, and at that time, I was using 6.5 hours of human motion capture data,” Yoo said. “The 6.5 hours of human motions took more than four GB of data ... I applied CUDA for the processing, and it only took two to four seconds on my laptop. Compared to CPUs, it sped up more than 500 times.”
Juraj Vanek, a graduate student in the department of computer graphics technology, said that learning CUDA has increased his value on the job market.
“Such parallel programming is very beneficial, especially with tasks that involve large data,” Vanek said. “Any company is willing to pay well for the expert who is capable of using GPUs to speed up existing applications hundreds of times, thus saving the company time and funds.”
Vanek said CUDA is a less common skill among computer programmers and helps a job candidate stand out among others.
“There are a lot of programmers with common skills: C++, Java or similar procedural language ... but not so many that know CUDA,” Vanek said. “It’s because programming for GPUs requires one to think that his code will not run once, but thousands of times at the same time.”
Marek Fiser, a graduate student in the department of computer graphics technology, personally benefited, getting an internship at NVIDIA, the company that invented CUDA, last summer.
“(The class) is not about teaching CUDA specifically, but more about being exposed to parallel programming that is extremely useful nowadays,” Fiser said. “Parallelizing algorithms is very important because multi-core processors are in every computer and newer mobile device.”