The Concurrency class introduced at the University of Texas in fall 2018 achieved a variety of outcomes. It provided computer science students with hands-on experience in parallel hardware and programming models, to demystify concurrency and convince them that concurrency is a powerful tool at their disposal. In addition, it introduced students to Cascade – a better, faster, more user-friendly compiler for programming FPGAs.
The course also helped Cascade developers improve the program, as students debugged the code while moving through their classwork. Cascade is an open source programming tool for FPGAs from VMware Research.
People need to graduate with computer science degrees that reflect a high level of comfort, facility and engagement with concurrency and parallelism,” said Christopher J. Rossbach, the Concurrency professor at UT and a member of the Cascade team at VMware Research.
“What we’re trying to accomplish with the course is give students a sense of empowerment, and a willingness to get their hands dirty and try to do things that seem hard.”
“If you look at how we’ve taught parallel programming and concurrency in the past,” said Eric Schkufza of VMware Research, “what we’ve actually done is given them just enough information to be fearful about parallel programming.
“With Cascade, we’re giving students a tool on Day One that makes it easy for them to program concurrent systems,” he said. “And because we open-source Cascade, it’s easy for them to get in the classroom and for students to tell their friends where to download and try it.”
“Cascade was a key enabler for our Concurrency course because it provided a much friendlier interface than students would have exposure to otherwise,” said Rossbach. “Programming an FPGA is hard. When students write a program for an FPGA that takes forever to compile, they get frustrated.
“Programming an FPGA with Cascade might still be hard, but some of the worst challenges are taken off the table by the ability to run transparently in software on hardware or on some combination of the two.”
Reprogrammable hardware (FPGAs) can exceed the performance of general-purpose CPUs by several orders of magnitude. However, programming an FPGA can be an extremely slow process. Trivial programs can take several minutes to compile using a traditional compiler, and complex designs can take hours or longer.
Cascade is the world’s first just-in-time compiler for Verilog. It reduces the time to produce working hardware designs, and therefore encourages more frequent compilation. With Cascade, code is executed immediately in a software simulator and compilation is performed in the background. When finished, the code is moved into hardware, and from the user’s perspective the process is much faster.
“Insofar as VMware’s core business has transitioned from virtualizing the server to virtualizing the data center, and data centers today have more FPGAs than ever, VMware needs a solution for virtualizing an FPGA. We’re discovering that Cascade could be the mechanism to do that,” said Rossbach.
“Many technology trends suggest that we’re going to see FPGAs in a lot of shared environments,” said Michael Wei of VMware Research. “If you can’t virtualize an FPGA or you can’t use it or even access it in a virtual environment, that’s fundamentally limiting VMware. Making it more accessible is congruent with VMware’s goals.
“In addition to writing code for multicore or multi-processor platforms, more and more programmers are having to write codes that run on specialized hardware like GPUs and FPGAs, which are super parallel and super concurrent,” said Wei.
“We’re improving Cascade,” said Rossbach. “We’re learning what’s important: to make the hardware more programmable and make the experience more like software, that the availability of a tool like Cascade changes the way people think about parallelism and concurrency.
“Teaching people to program FPGAs by giving them something that takes two hours to compile, and then is wrong because of bugs, is the wrong direction,” he said. “Providing a learning environment in which it’s super easy to experiment and understand the semantics is the right thing to do.
“In our Concurrency course there were students finding bugs in Cascade. When a couple of them got into the code base and tried to fix things themselves, I wanted to do backflips of joy,” said Rossbach.
Download the Cascade technical paper at https://github.com/vmware/cascade/blob/master/doc/asplos19.pdf
Cascade is available to download and test at https://github.com/vmware/cascade