In response to Ed Sperling’s article titled, “Why Apps Can’t Run Faster“, Steve Reinhardt expresses his views in this blog post.
“Ed Sperling notes that many applications, especially commercial, don’t have enough parallelism to keep the current and planned multicore processors busy. Depending on the context, this is both true and not true.
* Applications can have parallelism at many different levels (e.g., for a payroll, calculating FICA and 401(k) deductions in parallel for a given employee, or calculating paychecks for different employees in parallel). As Sperling notes, there are many apps that have absurd levels of parallelism in them (e.g.,search). If there is truly no parallelism, then multicore won’t help. But many apps do have significant parallelism, when viewed at the right level.
* Applications depend to varying degrees on parallel infrastructure. For instance, if the application is rendering a frame on a screen, the output is typically completely independent, and the potentially hard parts that Sperling notes of splitting the task up and putting it back together are not very hard. By contrast, handling numerous ATM transactions in parallel depends on having an infrastructure, often a database, that accepts simultaneous requests for data that is truly independent, and appropriately mediates access to data for requests that are not completely independent. For these latter apps, an organization will be highly dependent on the infrastructure vendor to enable enough internal parallelism to run the application at scale; this is often difficult for the vendor.”


