If you spend any time reading about scientific computing in the clouds, it is quite likely you have encountered the name Armando Fox at least once. Fox has been writing about cloud computing before the term ever emerged into mainstream computing speak and continues to be a prolific source of information about cutting-edge cloud computing research for scientific and technical computing.
Fox is an Adjunct Associate Professor at UC Berkeley and a co-founder of the Reliable, Adaptive and Distributed Systems Laboratory (RAD Lab) at Berkeley. He has held other teaching positions at Stanford, Illinois and MIT and is co-author of a paper that drew significant attention, “Above the Clouds: A Berkeley View of Cloud Computing,” which spelled out some early challenges and benefits of high performance computing clouds.
In addition to having his head in the clouds, Fox helped design the Intel Pentium Pro microprocessor and founded a company to commercialize his UC Berkeley dissertation research on mobile computing.
We recently spoke with Armando Fox about some of his observations on the future of high performance computing in the cloud and what directions he predicts industry and research will go in coming years.
HPCc: Give us a sense of your “history” with cloud and distributed computing — where does grid computing fit into this range of experiences, both scholarly and practical?
Fox: From 1994–1999, before the cloud was a thing, I worked on some of the earliest research projects in using clusters of commodity computers, the basis of today’s cloud architecture, as a graduate student at Berkeley. I’m now on the faculty at Berkeley and was a co-founder of the Reliable Adaptive Distributed Systems lab (RAD Lab), which was one of the earliest and most aggressive adopters of cloud computing for research and teaching.
We routinely do research experiments using hundreds of machines in the cloud, have spent hundreds of thousands of dollars for cloud capacity to support our research (though still much less than it would’ve cost to try to build and operate this capacity ourselves, which would not even have been possible for some of our very large experiments), and have used cloud computing in our courses from lower-level undergraduate though PhD to improve the students’ educational experience.
HPCc: You have published a number of papers on cloud computing for scientific applications, one of which was “Cloud Computing: What’s in it for Me as a Scientist” — although this was written some time ago, what IS in it for scientific users, many of whom have very specific needs, require low-latency networks, don’t want to contend with data movement hassles/expenses, etc.
Fox: It is true that there are some very large (“supercomputer sized”) scientific apps that really need much lower latency than what shared-nothing cloud provides; it’s also true that if you’re generating a lot of data each day, the costs to move it into and out of a third-party cloud can add up. However, we believe that there’s a huge and largely untapped “new middle class” of scientific computing users who would immediately benefit from running medium-to-large jobs (tens or a couple of hundred machines) on public clouds.
There are two reasons. One is zero waiting: rather than sitting in a queue waiting your turn on the big iron, you provision your ‘virtual supercomputer’ in minutes and start your experiment, or even multiple experiments simultaneously with different parameters. Second is true cost associativity (1000 machines x 1 hour is same price as 1 machine x 1000 hours), an unprecedented new ability made available by the public cloud. Together, these abilities can actually accelerate your research. And while some jobs do require something like MPI, which doesn’t run overwhelmingly well on the public cloud, frameworks like Hadoop, Hive, Pig, Dryad, and others allow plenty of useful problems to be solved, and even commercial packages like Matlab and Mathematica are starting to provide “cloud back-end” computation.
HPCc: Do you think “HPC-optimized” public cloud services are enough to resolve current barriers for HPC cloud computing to become more widespread?
Fox: As above — the current cloud architecture won’t be the answer for all scientific computing users. But yes, a lot can be done to tailor the specific cloud offerings to HPC (as Amazon and others have begun to do). And the exciting part here is that because of the scale and volume of commodity clouds, scientific computing users have a chance to do something they’ve never really had before — to influence the design of commodity equipment!
HPCc: Outside of the challenges I referred to in both questions, what are some of the programming problems that are persistent and what is happening now that might help overcome them?
Fox: Frameworks like Hadoop are great if your problem can be cast as one or more map/reduce problems, but writing that code is still cumbersome compared to using very-high-level languages like Python. Expect to see lots of tools that make current cloud frameworks more accessible to such languages. As well, today there are many different cloud computation frameworks that were developed in isolation, so they don’t always play nice together in terms of intelligently sharing/scheduling cloud resources. This is an area of active research — the Mesos project at UC Berkeley is one example of a “meta-framework” that does this task and is already being test-deployed internally at companies like Twitter and Facebook.
HPCc: There is a lot of talk about the coming age of “big data” — where does cloud computing play a role in this trend toward ever-larger datasets? There are some cost/data movement issues, so where is the benefit?
Fox: With big data you’re talking terabytes a day, minimum. The benefit is that to do meaningful computation on big data and get an answer in a timely manner, you need the parallelism of the cloud. Programming the cloud won’t just be a “benefit” for big data analytics, it will be the only way such analytics gets done. And while data movement remains a challenge, it will receive increasing attention partly because once your data does get into the cloud, (a) it’s backed up and (b) other scientists can potentially access it easily for their own work, i.e., the cloud facilitates data sharing.
HPCc: What strikes you as one of the best use cases for very large-scale computing on a public cloud resource?
Fox: The big win for public cloud is elasticity. If your work (whether running experiments, operating a website, or crunching data) uses an amount of resources that’s hard to predict in advance and/or may change significantly over short timescales, using the public cloud effectively offloads the risk of mispredicting what resources you need. Also, because you can pay as you go, the public cloud allows you to harness minimal resources at first and then smoothly increase your consumption as you earn revenue (or raise grant money, as the case may be).
More information about Armando Fox and his research can be found here.