R” integrated with Symphony

In my previous blog, I mentioned that Platform Symphony can be used in statistical computing. “R” is a programming language and software environment for statistical computing and graphics. The R language has become a de facto standard among statisticians for developing statistical software, and is widely used for statistical software development and data analysis. R is an implementation of the S programming language combined with lexical scoping semantics inspired by Scheme. Below is an example of how R can be used to speed calculations:



Sample code of R:

func <- function(x, y, z) { some operations }
data1 <- c(1:20000)
data2 <- c(20000:1)
result <- data1
for (i in 1:500)
{
iresult <- mapply(func, data1, data2, i) # Time-consuming operation
result <- result + iresult
}
Problem:

One of our customers was running that on single node and it took around 5 minutes to
complete on single core. Is there a way to parallelize the above code and make use of multiple cores to speed up the calculation?

Solution:

We integrated “R” with Symphony and ran the same script that took five minutes on single core, now took around 30 seconds on 10 cores. With Platform Symphony, one gets linear speedup and virtually unlimited scale.

Platform Symphony outside Financial Services

Although the majority of Platform Symphony’s customers are in the Financial Services sector, Platform Symphony’s core value propositions (faster, cheaper with more agility) also apply to a variety of industries outside of Financial Services.

For example, Platform Symphony is widely used for Monte Carlo simulations in finance. Those same methods has actually also been applied to fields as diverse as space exploration, oil exploration and predicting cost or schedule over-runs. Specific application areas that make use of Monte-Carlo simulation include:

  • Reliability engineering (CAE)
  • Bio-molecular simulations, computation chemistry (Pharma)
  • Particle physics & big research (Government)
There are also other applications that can utilize the power of Platform Symphony--for example, statistical computing and numerical computing. In my next blog post, I’ll talk about how just how Symphony can be applied in statistical computing scenarios.

Platform Symphony for Financial Services

One of the principal applications for Platform Symphony is risk management. While risk management techniques vary by customer type, all financial services companies face the same basic challenge of modeling multiple scenarios describing different risk factors so as to maximize gains and minimize the potential for financial loss.

Here are some examples of problems financial services customers are typically trying to solve:
  • Value at Risk (VaR) – end of day / intraday – Monte Carlo simulation based or based on historical market data
  • Pricing model validation / back-testing
  • Model changing risk intraday to drive hedging strategies
  • Sensitivity analysis / “what-if” analysis
  • Accurately measure risk to optimize capital reserves
  • Counterparty credit risk analysis
  • New product development
  • Pre-trade limit checks
  • Calculate key measures like CVA on a pre-deal basis
  • Timely reporting to meet regulatory requirements
  • New regulatory requirements driving increased need for HPC

In all of the above examples, customers parallelize the application(s) via APIs and tools provided by Symphony. Fine grained units of workload are submitted to Symphony. Symphony schedules those units of workload to the all of the available resources based on the configured policies.

HPC from A-Z (part 7) - G

G is for Gambling.


Whether you like to place the occasional bet or not, most of us would agree that online gambling and gaming is a big money industry. Not only can we now wager our money on more events than ever before (from the result of the Super Bowl or the elections to whether it will snow on Christmas Day), but the age of the internet is also fuelling an increasing demand for “live-in play” and virtual games like online poker.


As you can imagine, managing the real-time odds and the artificial intelligence required to support virtual gambling environments requires some serious computing power, not to mention the resources required to calculate all those odds. Firms like Sporting Index rely on HPC to give them the edge over competitors, letting them plan hundreds of moves ahead and crunch vast amounts of data to generate odds for all manner of wagers.


Think all that would be possible without HPC? Don’t bet on it.

Not to burst your bubble…

Probably everyone who has ever been in an HPC environment as a user has run into resource constraints. Limitations like hardware, licenses, memory, or maybe even GPUs on hybrid compute engines rank at the high end of the limitations most users face are facing today. The problem comes when you run into these limitations in the middle of running a job. What do you do then? “Hitting the stops,” so to speak, will often cause another procurement cycle and consume lots of resources in terms of analysis, internal meetings, planning, as well as the purchase and deployment phases before any additional real work can get completed.


Cloud computing, or in this case, cloud bursting offers an approach to mitigate the process and limitations that most HPC consumer corporations go through today. Certainly, using resources outside the firewall can have its own challenges for corporate users, but those aren’t the focus of this blog.


Assume for a moment that security, licensing, provisioning latency and data access are not a problem. Of course, they’re all major issues that need to be addressed to make a cloud solution usable, but bear with me. There are still some important questions that need to be answered:

  • What are the appropriate conditions to start up and provision cloud infrastructure?
  • What jobs should be sent to the cloud once that infrastructure is provisioned and which should stay local and wait?


This second question is the focus here. Often in science, the hardest part of solving a tough problem is stating the question properly. In this case, the question is nicely represented by the below inequality where each entity represents a factor of elapsed time. For cloud computing to be advantageous from a performance perspective,


(Data upload to cloud) + (Cloud Pend time) + (Cloud Run time) + (Data download from cloud) < (Local Pend time) + (Local Run time)


Such a statement allows us to draw a few conclusions about the conditions for when cloud bursting is advantageous for the HPC user:

  • When local job pend time estimates for a job get very large
  • When local elapsed run time is large -- A corollary to this condition is that if the job can be parallelized, but there are insufficient resources locally to run the job quickly, then cloud bursting the job may return results to the user sooner than allowing the job to run on insufficient resources locally.
  • When the job’s data transfer requirements into and out of the cloud are small

Additionally to those conditions, we start to see where several of the real challenges are for a scheduler to make the right decision about which jobs get sent to the cloud and which don’t. For instance, most schedulers today do not consider the data volume associated with a job. But, in a cloud scenario, the data transfer times associated could be 2-50x the runtime for a job and not only dependent upon the file size, but the available transfer bandwidth. Schedulers will need to evolve on several levels to tackle this challenge:
  • Allow users to indicate the files (both input and output) required for each job.
  • Estimate pending and run time for disparate infrastructures
  • Estimate the run time for jobs which run parallel
Be on the lookout for solutions from Platform Computing that start to address exactly these challenges.

HPC from A-Z (part 6) - F

F is for financial services…

Every day financial traders work at the speed of light to deal in a wide variety of investment banking products. To stay ahead of the game, they rely heavily on large numbers of complex and compute-intensive data risk analysis and commodity pricing calculations. Without these, it would simply be impossible to turn a profit!

As the last few years take their toll on the industry, competitive pressure has rocketing up the Richter scale. Banks now need to provide results faster than ever. However, they face a rapidly rising volume of information as well as industry regulations which place extraordinary demand on existing computing resources.

Banks like Svenska Handelsbaken, Société Générale and Citigroup have turned to Platform Symphony to help make light work of heavy numbers, securing their positions as leaders in the industry.

With statistics such as computer hardware utilization increasing by as much as 60% as a result of implementation, it’s no surprise that grid technologies are at the heart of the financial world.

HPC from A-Z (part 5) - E

This week I’ll turn my attention to the letter ‘E’.

Energy is an extremely hot topic. It’s an issue that is important on a global level, and governments across the world are ushering in new legislation and tax laws to encourage a more energy efficient approach to life.

Those who see HPC as a burden on energy supplies are often short sighted – HPC can be used to provide more energy efficient engineering and design. For example, it can be used for designing aircraft and vehicles that consume less fuel.

Developers in the renewable energy sector rely on advanced weather models – produced using HPC – to locate ideal sites for wind farms and solar plants. In the case of Renewable Energy Systems (RES), HPC made wind mapping 20 times faster than it had been previously and helped RES cut power consumption by 75 percent. This was made possible by Dell consultants who designed and implemented a Dell blade cluster that was running Platform Computing software.

Do you have any ideas or recommendations for other E industries, companies or projects that could benefit from HPC?

Performance and Productivity of an HPC Cluster (3)

My last blog described the results of implementing a refreshed 32-node CFD (computational fluid dynamics) cluster by using a completely different solution from the one implemented in the previous cluster. Using Platform HPC for the refresh, the new cluster significantly reduced its job failure rate and had a 15% usage increase and 25% throughput increase.


After the HPC cluster was in production with happy users, the management team began making plans to further improve application performance and user productivity. They were able to start to investigate and plan for the future. GPU adoption and a new ways to speed up the design process are two areas identified.


GPU Use


Using GPU to accelerate applications is what this organization is looking at next. Some commercial applications ISVs have already released applications that support GPU acceleration, for example, ANSYS. Adding GPU to the cluster could dramatically reduce the application run time. However, it will obviously increase the cluster complexity. Fortunately Platform HPC can help reduce such complexity. With Platform HPC, it’s much easier for administrators to deploy GPU required software. Platform Computing has repackaged NVIDIA’s CUDA software into a format that can be automatically deployed across all compute nodes in a cluster by leveraging the cluster management capability of Platform HPC. The workload scheduler in Platform HPC is also GPU aware so it can schedule GPU resources such that users running GPU jobs don’t need to worry about which node has GPUs or if the GPUs are used by other users. These capabilities would go a long way to helping this organization overcome the hurdles of adopting GPU technology.


Design Process Acceleration


After users transferred from using the command line interface to the web interface, they still had some complex scripts that they needed to automate job flows. These scripts were originally built by a few power users. New users typically just copied them and wrapped the scripts with a few lines of code as required. But when there was a problem, it was very difficult to debug. One technology they are evaluating to help alleviate this problem is Platform Process Manager. Platform Process Manager allows users to program a flow in a graphical way without writing scripts. It can be integrated with Platform HPC’s web interface. Once a flow is developed, users can click a button to launch the flow. Job dependencies are taken care of by the Platform Process Manager. This company is exploring the possibility of using Platform Process Manager as a technology to automate their job flow to further increase user productivity. The graphical view of the flow also makes the job flows much easier to maintain and improve, which can also be used to document best practices in their engineering process.


The partnership with Platform Computing allows this design firm to advance digital design efficiency with increased user productivity. By doing more simulations to improve the quality of the design, high performance computing gives them the competitive advantage to be leading edge.

HPC from A-Z (part 4) - D

Today’s HPC ABC will focus on the letter D.

DesignHPC computing is a great environment for Computer Aided Design. It allows designers to perform complex analyses that can result in a range of benefits – from more efficient aircraft design to faster cars and complex architectural renderings.

Simpson Strong-Tie produces structural products for building safer, stronger homes and buildings and has done for nearly 50 years. Concrete modelling might not seem very hi-tech but the team rely on HPC to simulate the strength of designs in rapid time. The alternative, manually building physical models, involves a lot more effort, a lot more concrete and takes 14 times longer.

What does the future hold for HPC and design? Maybe I’ve watched too many science fiction films, but I can see a time when HPC can help us in our mission to reach distant planets that are outside our solar system, by aiding spacecraft design. Who knows, maybe we’ll scrap traditional urban planning and just use HPC to model entire cities, using building designs that withstand extreme weather and earthquakes.

The sky is the limit when it comes to HPC and design; the possibilities are endless. I really believe that HPC is a great playground for creative people. As Margaret Atwood said, “The techno-scientific world has some of the most creative people you'll ever meet”.

Next week we’ll look at HPC and the letter E.

HPC from A-Z (part 3) - C

Consumer Products — In the world of Fast Moving Consumer Goods (FMCG) the need to deliver high quality products fast and in huge volumes – often for global distribution – means the strategic and logistical challenges are endless. Meanwhile, in an ever-restrictive economic climate, manufacturers of consumer products also need to maintain a delicate balance of reducing costs while maintaining their competitive edge and innovating.

As we’ve seen with many industries facing complex day-to-day challenges, the IT department can help eliminate some of the pain. High Performance Computing is now widely used by consumer manufacturers to reduce costs, drive major improvements in products, increase production efficiency and speed to market, as well as better meet changing customer needs.

Whether it’s for toiletries, electronics, confectionary or household goods, I have no doubt that the application of HPC technology across multiple layers of consumer product manufacturing will only continue to become more ingenious.

HPC shifting sands: Distributed or centralized infrastructure

As NVIDIA takes the HPC world by storm by lending the power of their GPUs (graphic processing units) to HPC applications, ISVs, system architects, and users are all trying to find their footing when it comes to planning how they’ll be using HPC in the next year or two. To make a historical comparison, the core counts, memory footprints, and I/O bandwidth achievable in a single workstation today would have enough to make HPC aficionados salivate only two years ago.


Indeed, “deskside” clusters were the prediction in 2007, expected to bring about the demise of the centralized cluster—with more computing power than any one user could ever need. Well, the HPC community are a greedy bunch. And in some ways the prediction has become half true. “Deskside clusters” have actually developed into “desktop SMPs”.


It seems that the line between when a user needs a cluster and when he can live with his personal workstation will be shifting. I believe that’s due to the enormous computing power offered by GPU accelerators. Yes, most applications aren’t ready yet, and, yes, the Tesla hardware is expensive. But those two barriers are true only today and are likely to quickly disappear.


Time will bring new and more mainstream applications into GPU enablement and force their now square peg into NVIDIA’s round hole. The elite prices of GPGPUs are nothing more than market perception. I just purchased an NVIDIA card for less than $200 for a media center PC that has 96 cores in it.


This trend adds up to a temporary shift in the centralized vs. distributed computing tug-of-war. Every one of the workstations on a corporate refresh cycle will have graphics capability. Servers, on the other hand, are often on a slower refresh cycle and are scrutinized more carefully by corporate bean counters who won’t buy GPUs servers until CIO/CTOs tell them to.

Desktop compute harvesting, once a fringe HPC endeavor, may suddenly have more ROI than it ever has as a technique for providing HPC scale for minimal incremental cost. The question is: Will the window of opportunity for such techniques close before a complete solution can be developed and delivered?

Of course, the inclusion of GPUs in servers will happen. When that occurs, the balance will shift back. Until then, though, the horsepower of cloud or even local clusters has become a little less attractive when there’s a processing stallion underneath the desk waiting to be bridled.