Benchmarking HPC in the Cloud
All clouds are not the same. It’s an adage that rings especially true when it comes to running high-performance computing (HPC) workloads. HPC middleware solutions vendor Techila Technologies recently took the time to benchmark and analyze three of the top cloud platforms – Amazon Web Services, Google Compute Engine, and Microsoft Azure – in the context of several real-world high-performance computing scenarios. The results are detailed in a subsequent report, titled simply “Cloud Benchmark – Round 1.”
“If the technical features of a cloud do not align with the needs of business, a solution which looks cost efficient can have a high cost of ownership.” This observation by Techila speaks to why the benchmarking was carried out, to explore which cloud offerings and instance types work best for a given application.
Techila explains that the benchmark experiment was intended to provide HPC customers with an easy-to-understand analysis. Potential cloud adopters have told the company that FLOPS-per-dollar and Gbps-per-dollar are interesting but do not adequately answer their questions or address their concerns.
“Raw processor power, available memory, or theoretical maximum data transfer rate do not always translate directly to application performance,” writes Techila. “Because of this, the focus of [the] benchmark experiment is on testing the performance of AWS, Google Compute Engine GCE, and Azure in real-world HPC use-cases, and on studying how the leading clouds can respond to requirements arising from HPC scenarios.”
The test suite that Techila used was developed with the participation of cloud providers and users of MATLAB, R programming language, and simulation-backed engineering tools. After the first round of testing, the primary conclusion was that not all platforms demonstrate the same level of elasticity.
Tests fell into two categories: deployment and application performance. The first test zeroed in on a cloud’s ability to respond to computing needs. The focus was directed to embarrassingly parallel problems, which can scale to best use a large number of cores. (Techila says it is planning MPI-like tests in the future.)
The experiment set out to answer several questions, such as:
What instance types provide the best performance? Should I use the most expensive instance types?
Does the operating system of the cloud have effect on the throughput of the system?
Should I worry about the internal infrastructure of the cloud?
For convenience, Techila provides a chart of each cloud’s technical specifications (see above). With regard to instance types, for Azure, the report looked at A8 (with Windows) and the Extra Large (A4) (also with Windows). For AWS, two implementations of c3.8xlarge were examined, one with Windows and one with Linux. And for Google Compute Engine (GCE), they used n1-standard-8 (with Debian 7).
While cloud pricing has gone through many revisions, the prices at the time of the experiment are also listed. The price per CPU core/hour in US dollars ranges from .060 (for AWS with Linux) to .306 for Azure A8.
The deployment tests analyzed the deployment of a 256 CPU core virtual HPC environment in a cloud. Among the interesting findings, Techila observed that deployments with Microsoft Windows operating system take longer than instance types with a Linux operating system. The authors suggest this is likely related to System Preparation (Sysprep) phase, which occurs during the installation of Microsoft Windows.
Another finding relates to the shape of the AWS c3.8xlarge and Azure A8 Windows instances. The deployment is not linear. The report’s authors suggest that “a possible reason for this is that the availability of these instance types is still quite limited and datacenters have challenges in responding to a request for a large number of these instance types.”
Testing deployment on Azure was not possible in this experiment because Azure is designed as a Platform-as-a-Service (PaaS) and does not provide the needed Java management interfaces for the current version of the Techila Deployment Tool.
The configuration tests examined how MATLAB-based applications fare in a 256 CPU core virtual HPC environment. The findings show that configuration of an instance was slower in Azure than the other cloud offerings. They reason that this could be do to Azure’s PaaS-based design. AWS and GCW, however provide direct access to the infrastructure. “Because of the limitations of Azure’s PaaS design Techila middleware can not support Peer-to-Peer (P2P) transfer technology inside the HPC environment in Azure,” note the report’s authors.
Another key observation was that configuring the AWS instance was quicker with Linux than Windows. While the experimenters can’t confirm the basis for this, they think it might be explained by file system capabilities. The data transferred was said to contain approximately 33,000 files, and it’s been suggested that the file system on Windows performs slower when handling a large number of rather small files.
The HPC application tests looked at three common application scenarios:
- model calibration (using MATLAB code)
- portfolio simulation (implemented in R)
- machine learning (implemented in C++)
Techila provides detailed assessments of each application case, with charts that include Wall-clock time, price per CPU core and cost of cloud computing.
Here are several of the interesting observations made by the experimenters:
For MATLAB code:
“The findings show that in this particular scenario MATLAB seems to perform better in Windows environment than on Linux environments.”
For R users:
“An interesting observation is related to the performance of AWS c3.8xlarge performance. When compared to Azure A8 and Azure Extra Large, we can see that in this case, the Azure Extra Large provides a very similar performance as AWS c3.8xlarge, and Azure A8 provides double performance compared to AWS c3.8xlarge and Azure Extra Large. Because the cost of Azure Extra Large is affordable and Azure supports a fine granularity billing, this can make Azure Extra Large a great value option for users of R programming language.”
“Another interesting observation is that in this case AWS c3.xlarge with Linux provides clearly better performance than AWS c3.8xlarge running Windows operating system.”
For machine learning:
“Another interesting observation is that in this specific case Azure A8 and AWS c3.8xlarge with Windows operating system provided very similar performance, despite of differences observed in other test cases. It was suggested that this could be related to the fact that some scenarios are well suited for hyper threading and can benefit of it. Because of this, if the goal is to get the most out of a hyper threading platform, it is important to understand the suitability of the applications for the platform.”
Based on the results of Techila’s first cloud benchmarking round, the company is confident that cloud computing will have a role to play in HPC. The experimenters also believe that cloud will have a profound democratizing effect on HPC, writing:
“HPC will no longer be science, which would require special training and expensive upfront investments. Cloud will bring HPC to new desks and simplified user experience will empower new users to benefit of it.”
The testing process also served as a reminder that commercial cloud platforms follow more of a hardware path in that they don’t use version numbering. Vendors are constantly pushing out new instance types and features, and prices too are under constant revision. Because of this, any benchmarking must be regarded as work in progress. To stay relevant with these changes, Techila is planning to keep its report up to date by repeating tests periodically.
Techila also raises the point that elasticity is not truly unlimited. Resource provisioning, even at the scale of Amazon, etc., is still limited by physical boundaries. Aside from impacting the planning stage, Techila maintains that the physical architecture is the reason why HPC in the cloud needs middleware.
“Performing such experiments in a loosely coupled infrastructure, such as the cloud, requires a middleware, which enables horizontal scaling and can hide the possible nonlinearities of the physical infrastructure,” the report states. “After all, cloud is built of very similar units what we see in our offices. When we come to the limits to the physical unit’s scalability, we need a solution, which enables scaling over the limit, which in this experiment was the Techila HPC middleware.”