HPCCommunity.org
 
Register

Go Back   HPC Community - High Performance Computing (HPC) Community > Blogs > Khalid

Rating: 2 votes, 4.50 average.

Research Topics in HPC

Posted May 21st, 2008 at 08:46 PM by Khalid
Updated May 21st, 2008 at 08:52 PM by Khalid (Fixed typos)
The High Performance Computing (HPC) area is undergoing quite a bit of changes that may impact how HPC applications are developed, and operated over the next few years. We here in the research group at Platform Computing are tracking a number of technology trends and trying to get a handle on how they will impact the HPC Community. To kick things off here is an initial list of possible areas:

1. Cloud Computing. The advent of services like Amazon EC2 has provided opportunities to access compute capacity on demand without having to set up physical infrastructure. While Cloud Computing represents more of change in business models, there are technology implications for enterprises which seek to build out their own internal clouds as well as leverage external clouds. Clouds present several challenges for resource allocation and management systems which must take into account price, network latency, and data transfer costs. The ability to dynamically provision nodes without the IT overhead can have an impact on how to allocate resources for services where the SLA associated with them is outside the control of a single organization.

2. Multi-Core, GPUs, FPGAs With chip speeds not getting any faster, vendors have added large amount of parallel computing on the box in the form of multiple processing cores. GPUs offer deep parallel processing pipelines that effectively create a vector processor on a card. While there is a lot of potential hardware horsepower for HPC calculations, to effectively exploit the low-level parallelism requires use of vendor-specific low-level tools. How the models for distributing workloads across boxes and optimizing within one box, can converge is an interesting area for research.

3. Parallel Programming Languages and Models. Ever heard of Haskell or Erlang or Hadoop? These are not widely used in traditional HPC today where C/C++ and Fortran are dominant. But these programming models may offer alternative approaches to expressing parallelism and distributed processing capabilities. Is there any scope to apply these models to HPC applications or is a better approach to use language extensions like OpenMP or MPI?

4. Data-Centric Computing. High-performance computing is not always just about compute-intensive number crunching. Frequently large amounts of data need to be processed as part of the computational workflow, and fast access to data allows performance of the application to be improved. There is a range of data types and requirements that have lead to the creation of different techniques such as parallel filesystems (PVFS, Lustre), in-memory data grids (Oracle Coherence, Gemstone as examples), basic data caches (memcached), or other types of data partitioning and distribution methods optimized for wide-area networks. What are the implications for how we write application and for the run-time scheduling and resource management infrastructure when data is primary resources rather than compute cycles?


5. Virtualization in HPC Server virtualization technologies are becoming part of the mainstream in enterprise data centers. However, the use of these tools in HPC has been limited to due performance overheads as well as costs associated with them. The open-source Xen hypervisor may change things by giving HPC environments the flexibility need to implement rapid workload-centric provisioning of machines- starting them up, shutting them down, or migrating them in response to the needs of various applications. With the de-coupling of OS from hardware, there is greater level of customization of the OS stack for individual job types that is possible. For example, what are the possibilities of creating job or application specific appliances that have just-enough-OS to suit the needs of that application and perhaps optimized for it?


6. Complex Event Processing (CEP). Traditionally HPC environments has focused on batch processing of large complex jobs which takes minutes or hours or longer to run. CEP technologies deal with more low latency processing of large event streams associated with for example algorithmic trading in stock markets. These environments can arguably be considered as “Edge HPC” as opposed to the traditional HPC. However, these environments share some of the same stringent requirements for high performance although expressed in different terms such as latency and throughput in terms of events per second. Some basic questions need to be answered whether CEP should be considered as part of a broader definition of HPC. Can the technologies being developed in these areas be leveraged in wider HPC? Or can the techniques developed in traditional HPC be applied in CEP environments.

This isn’t meant to be an exhaustive list or even a full explanation of all the research questions to be explored in these areas. We will expand further in some of our thinking in future blogs. We’d like to use this opportunity to stimulate further discussion and get feedback from users or other researchers. Let use this forum for discussing possibilities for collaboration to get a better handle on the implication of these trends in HPC.

Total Comments 9

Comments

Old
Pretty nice outlook on HPC research area. I wonder if Symphony or LSF provides cloud computing capability.
permalink
Posted May 23rd, 2008 at 08:34 PM by Southpaw Southpaw is offline
Old
The debate of clouds vs grids is a topic in its own right. I think LSF and Symphony have some elements necessary for cloud computing such as some of the policies for resource sharing. However a cloud is more than just a workload scheduler. There are elements such as provisioning, billing, portals to allow self-service operation, management of virtual machines and so on. We'll try and elaborate and speculate in future blogs about what a Cloud Computing Stack might look like.
permalink
Posted May 23rd, 2008 at 09:13 PM by Khalid Khalid is offline
Old
beowulf's Avatar
I attended HP-CAST last week that was held here in Singapore. There was a session on Grid vs Cloud Computing and I thought the presenter gave a good introduction and a 'clear' definition of grid vs cloud.

Basically, Cloud Computing is as what Khalid mentioned about portal, billing etc, but the most differentiating factor would be that while grid resources can be distributed between several organizations, in Cloud Computing, the resources are typically owned by one single organization, eg. Amazon.
permalink
Posted May 26th, 2008 at 04:05 PM by beowulf beowulf is offline
Old
Amzon EC2 in particular uses AMI to contain application logic to be executed on cloud. How is AMI different from Symphony service?
permalink
Posted May 28th, 2008 at 05:08 AM by Southpaw Southpaw is offline
Old
Thanks for the question Southpaw. An AMI is a full virtual machine image, containing the OS, system libraries, binaries, configuration, etc that can be run on a hypervisor. Amazon uses a version of the Xen hypervisor to host the AMIs I believe. A Symphony service is a much lighter weight container that runs on an OS like Linux or Windows. It may make sense to package a Symphony service in an AMI (or other virutal machine) if different services have strong dependency on the OS or system configuration that would prevent two services from sharing the same physical OS because of conflicts. Hope this helps.
permalink
Posted May 28th, 2008 at 07:14 PM by Khalid Khalid is offline
Old

virtualization v. SOA

Hi Khalid, I'm afraid this will become a question about virtualization v. SOA. I didn't quite follow why different services would conflict each other in case there heavily dependent on particular OS and system configuration? Would you elaborate more with some concrete example?
permalink
Posted May 29th, 2008 at 03:21 PM by Southpaw Southpaw is offline
Old
Young's Avatar

Gartner report

Guys, I'm glad that you brought this topic about cloud computing. It seems it has passed the buzzword stage already. Gartner predicts that 80 percent of top Fortune 1000 companies will use cloud computing service. See the Gartner report.
Number one issue in cloud compupting is security, of course. Secondly, complying with different geo-political policies on networked resources can become a big challenge to expand such hot IT trend.
permalink
Posted May 29th, 2008 at 03:40 PM by Young Young is offline
Old
Yes Southpaw, the debate does become one of SOA vs virtualization Actually SOA does virtualization too , at the application-level so that the programmer does not have to worry about where services being invoked are physically located.

The traditional term of virtualization, or server virtualization to be more specific, is done at the system or hardware level. A few cases where virtualization at system-level (a la VMware or Xen) might be useful:

- Service A was compiled with glibc 2.3.2, while service B was compiled with glibc 2.3.4 on Linux for example. Both of them can't run on the same system.
- Two services need certain certain settings of kernel parameters like shared memory segments or IPC variables for optimal performance
-One service is buggy and can leave files in /tmp which may interfere with other services

I'm sure others can find more practical scenarios. People work around these issues now in Symphony context by being very careful in how they develop and deploy their services. Server virtualization could give added flexiblity.

I suspect grid vendors will integrate server virtualization into their offerings in some form, so from a programmer's perspective, if I want to launch 500 instances of a service, it doesn't really matter to me if some of them are on physical machines, virtual machines running in my local environment, or in VMs running in the cloud somewhere at Amazon or Google :-)
permalink
Posted May 30th, 2008 at 01:03 AM by Khalid Khalid is offline
Old
Ajith's Avatar

Virtualization

Virtualization is a broad term. When I think of virtualization, I think of products like VM Ware and Virtual PC. These are relatively heavy virtual machines or VM's that host their own guest operating system and emulate their own hardware.

I think VM's are great if you have tons of system resources and only want to host a few VM sessions. I have a powerful quad-core computer with 4G of RAM and can only host 2 VM sessions with 1G of RAM each before my host system bogs down. I know memory and CPU cycles are getting cheaper, but power and cooling for compute hosts are still expensive.

With Symphony, I can host many more service sessions and more efficiently utilize host resources. I don't have to worry about the overhead of the VM and the guest OS's.

Symphony relies on the host OS to provide the security and sand-boxing of the service processes. Symphony doesn't handle specific OS and compiler incompatibilities, but this a trade-off -> efficiency vs. porting costs.
permalink
Posted June 3rd, 2008 at 07:49 PM by Ajith Ajith is offline
 
Total Trackbacks 0

Trackbacks

Recent Blog Entries by Khalid

All times are GMT. The time now is 08:22 AM.


Powered by vBulletin® Version 3.7.4
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.