7 ms·
Parallelism, as opposed to concurrency, is purely a performance consideration. With concurrency, you can actually write programs you couldn't write before. That
by eslaught 12y ago
Parallelism, as opposed to concurrency, is purely a performance consideration. With concurrency, you can actually write programs you couldn't write before. That is never the case with parallelism. The only reason to write parallel code is to make your code run faster. Given how much of a burden parallel programming is, if you're not seeing measurable performance benefit, you should just drop it and go back to your original serial code.
As a result, CS149 is a class in performance programming. Sure, if you only wanted to teach how to program in each programming model, then you could virtualize everything and run locally. But if you want meaningful, predictable performance, you had better provide hardware where it is possible to achieve the performance you're asking for.
Even the larger AWS node sizes can be suboptimal for our purposes. The networks on AWS, for example, would be too high latency, low bandwidth, and unpredictable for use with typical MPI applications. Even their dedicated cluster instances still go through 10 Gbps Ethernet, with performance that continually lags behind the specialized networks used in modern supercomputers. So if we gave students an MPI assignment, we wouldn't be teaching them what the actual state of the art in the field is today.