practice
Doi: 10.1145/1831407.1831423
Article development led by
queue.acm.org
Clem Cole and Russell Williams discuss
Photoshop’s long history with parallelism,
and what is now seen as the chief challenge.
acm caSe StuDY
Photoshop
Scalability:
Keeping it
Simple
Over the PASt two decades, Adobe Photoshop
has become the de facto image-editing software
for digital photography enthusiasts, artists, and
graphic designers worldwide. Part of its widespread
appeal has to do with a user interface that makes
it fairly straightforward to apply some extremely
sophisticated image editing and filtering techniques.
Behind that façade, however, stands a lot of complex,
computationally demanding code. To improve the
performance of these computations, Photoshop’s
designers became early adopters of parallelism—in
the mid-1990s—through efforts to access the extra
power offered by the cutting-edge desktop systems
of the day that were powered by either two or four
processors. At the time, Photoshop was one of the
32 communicationS of the acm | OcTOber2010 | VOL. 53 | nO. 10
only consumer desktop applications to
offer such a capability.
Photoshop’s parallelism, born in the
era of specialized expansion cards, has
managed to scale well for the two- and
four-core machines that have emerged
over the past decade. As Photoshop’s
engineers prepare for the eight- and 16-
core machines that are coming, however, they have started to encounter more
and more scaling problems, primarily a
result of the effects of Amdahl’s Law and
memory-bandwidth limitations.
In this ACM Case Study, Adobe Photoshop principal scientist Russell Williams speaks with Clem Cole, architect
of Intel’s Cluster Ready program, about
how the Photoshop team is addressing
these challenges. Although in their current positions they represent different
aspects of the parallel-computing landscape, both have long histories of tackling parallelism at the operating-system
level.
Prior to joining the Photoshop development team, Williams had a long
career as an operating-system designer
at companies such as Apple, where he
worked on the Copland microkernel,
and Elxsi, where he helped develop
mini-supercomputers. The diversity
of that background now allows him to
maintain a well-rounded perspective
on parallelism at different levels of the
stack.
Cole is a veteran operating-system
developer with years of experience in
Unix kernel and tool development. His
current efforts to advance methods that
take advantage of multiple processors—
using Intel’s next generation of multicore chips—makes him a fitting interviewer for Williams, whose work in large
part builds on top of the platforms Cole
helps to create at Intel.
While Photoshop comes with a
unique set of problems and constraints,
many of the engineering challenges it
presents will undoubtedly seem familiar
to any software engineer who has ever
attempted to achieve parallelism in an
application. Still, to get a handle on the
issues Photoshop’s engineers are facing
today, we must first consider the appli-
PhotograPh by richard Mortgenstein