Live Broadcast

Keep tuned! Our participation in the Student Cluster Competition will be broadcast live here.

Cast your vote!

What do you think are our chances of winning?

View Results

Loading ... Loading ...

Portland!

We have all just arrived in Portland and are quickly getting accustomed to the idea that we’ll be without sleep for the next few days. Much work still lies ahead of us, but we’re excited for the challenge. Our team members have been working day and night to solve very tricky problems involved with building these complex applications, and a lot of success has come out of this hard work. We’re coming to Portland with a full head of steam as our hardware was locked and loaded into a truck earlier today, racked, cabled, and looking like a beautiful piece of IBM machinery. So far the help from Microsoft and IBM has been top notch, first with the Microsoft visit to Redmond to refine our Windows HPC Server 2008 knowledge, and currently with the tireless effort (literally) of IBM representative Matt Archibald. Matt has worked one-on-one with us to develop an IBM scheme that will dominate the competition. We plan to use Matt’s insight on IBM technology, along with our own dedicated effort, to post some of the best numbers that the competition has seen. We’re really looking forward to this week, and though it will be tough, we’re ready to put in all the necessary effort and come home with a victory. More updates soonI!

Post Microsoft

Our trip to Redmond was a wonderful experience as we spent our time enjoying a well-planned weekend coordinated by Microsoft. Because half the team had previously experienced the great treatment by Microsoft staff, we brought fresh energy and a wise approach to our visit. It was well known in advance that the codes we were dealing with needed adequate treatment to be fully functional and scalable, so we structured our visit to deal directly with our needs. Microsoft contains some of the most brilliant computer scientists in the world, and their presence was evident as they provided us with the resources and the direction to handle arduous tasks. Their generosity also deserves mention! They were very kind hosts and not only provided us a furnished workspace, but gave us necessary accounts, hardware, and software that would make our experience seamless and enjoyable. They also provided us with complimentary gifts and we are very thankful for this gesture. ASU certainly directs many thanks to Microsoft for their continuous support as we have developed a strong relationship with an acclaimed global organization. We will continue working hard towards the competition, as it is just a few weeks away!

Redmond here we come…

It’s October 12th and the team is on its way to Redmond, WA for exclusive Microsoft training. We’re all very excited to go to Redmond and meet with some of the familiar faces from last year. During our last visit, Microsoft provided invaluable assistance and very generous resources while we were exploring the vast community of their campus. This year we hope to build on our past knowledge and excel with the helpful collective wisdom of experienced Microsoft professionals in the HPC community. SC09 is almost a month away and preparation is essential to our success. We will report back on our experiences and divulge the amazing experiences that we will certainly encounter. Wish us luck!

Team Update

Hey Everyone!

With temperatures already starting to be less than 100 degrees we know that the school year is at full throttle, and so is our preparation for the Cluster Challenge. We are getting our codes ready to go up to Microsoft next weekend, which the entire team is really excited for. Last year the trip proved to be an invaluable visit and I’m sure this year will be just as rewarding for us. Microsoft and IBM have been amazing so far and we are lucky to be able to work with them as the competition date gets closer. Between balance midterms, school projects, and preparing our cluster our teams have been packed but exciting. We are looking forward to taking all we’ve learned and showing what we can do at this years Cluster Challenge.

Introduction to MPI

Message Passing Interface (MPI) is a standard API for information exchange between nodes commonly used in distributed memory systems (memory systems in which each processor has a separate memory space). When using MPI, all processes must initialize and finalize MPI and must include header files (for example, mpi.h for C and mpif.h for Fortran).
Collections of processes that can communicate with each other using MPI are called communicators. Each communicator has to answer two questions: how many processes exist in this communicator and which process am I? The default communicator which encompasses all processes is MPI_COMM_WORLD.
Once communicators are set up, point to point communication between two individual processes or tasks is possible. This can be accomplished through the two basic calls in MPI: MPI_Send() and MPI_Recv(). The processor which issues the send or receive cannot move on to the next statement until the target processor issues a matching send or receive.
Communication which involves all the processes in a communicator (collective communication) is also possible with MPI. There are three basic types of collective communication: synchronization, computation with movement, and data movement.

  • Synchronization causes every process in the communicator comm to block until all other tasks have reached their synchronization point. The barrier called is MPI_Barrier(comm) or mpi_barrier(comm, ierr) which will wait so all processes can be synchronized.
  • Computation with movement, also called collective computation, can be accomplished using a reduce or scan call.
  1. Reducing can condense the data stored in all members of the communicator into a single processor
  2. Scanning can concatenate the values in each processor of the communicator as it is scanned and load the newly concatenated value in the processor it has just scanned.
  • Collective data movements can be performed a variety of different ways: through broadcasting, scattering, and gathering. See Diagram 1 below for a pictorial representation of each of these methods.
  1. Broadcasting sends a piece of data from a single root process to all communicator members.
  2. Scattering breaks up the data stored in one processor and disseminates it to all communicator members.
  3. Gathering collects the information from all communicator members and stores it in a single processor or, if the proper command is given, copies the collected data to all processors in the communicator.

Currently there are two different types of MPI: MPI (v. 1.2) and MPI (v. 2.0). Version 1.2 uses a standard library defined by a committee of vendors, implementers, and parallel programmers. This version is available on almost all parallel machines with C/C++ and Fortran bindings and has about 125 routines, 6 of which are basic. Version 2.0 includes features left out of version 1.2 like one-sided communication, dynamic process control, and more complicated collectives. Implementations of version 2.0 include OpenMPI and MPICH2.

Diagram 1

Diagram 1

Hopefully this has given you a solid foundation of Parallel Computing and MPI so now you can start writing your own programs. Good luck!

Sources:
“Introduction to Message Passing Interface” lecture through ASU HPCI on August 18, 2009

A User’s Guide to MPI by Peter Pacheco (there’s an updated version of this text but it has to be purchased)

Diagram 1 – http://www.hpjava.org/theses/hkl/dissertation/dissertation/img12.png

Introduction to Parallel Computing

We know that, like us, a lot of you out there are relatively new to HPC and want to learn more about it. With that in mind, we decided to give a quick overview on what HPC is and its key aspects. Feel free to post questions that you have or answer questions that have been posted. After this overview we will post some more specific information about starting to write your first HPC program. Enjoy!

Parallel computing is the use of multiple processors or computers working together to accomplish a task. Tasks can be broken down into data parallelism, where each processor performs the same task on different data, or task parallelism, where each processor performs a different task. Most applications use a combination of these two types of parallelism.
There are also many types of parallel computers: Single Instruction, Single Data (SISD) which has a single scalar processor; Single Instruction, Multiple Data (SIMD, also called an “array processor”); Multiple Instruction, Single Data (MISD), which includes various special purpose machines; and Multiple Instruction, Multiple Data (MIMD), which describes most parallel computers around today.
Since most parallel computers today are MIMD, a better way to classify them is through their memory model – either shared or distributed memory. Shared memory programming can be done using an API like Open Multi-Processing (OpenMP) to facilitate memory sharing on different architectures using different languages. Shared memory codes are mostly data parallel, meaning when they are broken down they become Single Instruction Multiple Data (‘SIMD’) code. With this system, applications can be developed to run loop iterations with no dependencies executed by the different processors. One issue with shared memory is that if multiple processors want to write to a shared variable at the same time there could be conflicts.
In contrast, distributed memory systems have separate memory spaces for each processor. Data must be manually decomposed for each node in the system, but each node can then work on its own section of the problem and exchange information with other nodes. Data can be shared between nodes using an API like Message Passing Interface (MPI), the standard for distributed memory programming.
MPI programs have two basic calls: MPI_Send and MPI_Recv. These calls are blocking, meaning that the processor which issued the send or receive cannot move on to the next statement until the target processor issues a matching send or receive. Multiple address spaces and the need to access remote data make programming distributed memory systems more difficult than programming shared memory systems.

HPC 101

The HPC world is exciting and dynamic, and with that known we want to get any and everyone we can interested in this field. The Cluster Devils are going to be partaking in some courses in the upcoming weeks and relay the information here to YOU so you can learn with us. So be sure to check back for some extremely useful information to help you dive into the HPC community. Also, if you have any questions, or what to answer a question that has been posted, please do so. We are very open to these boards and would love to interact with you guys!

Check back soon for some HPC basics.

The ASU Team – Ben

Benjamin Jimenez is an Aerospace Engineer with a concentration in Astronautics. He is a senior and has worked with HPCI at ASU since his freshman year. He also competed in the Cluster Challenge at SC08. His research is for Computational Fluid Dynamics, and he also worked recently at Honeywell to study RANS and LES simulations. This year’s competition is exciting for him because he is fortunate enough to be put in a position where he can lead the Cluster Devils to victory. He will be working on team coordination and planning, but will also work on the scientific application WRF and the benchmark tools HPCC/Linpack. After college he wants to obtain a Ph.D. from a leading Aerospace Engineering institution so he can pursue a career in industry. In his very spare time I waste my life away on hockey, biking, music, and other electronics.

Ben

The ASU Team – Megan

Megan Kearl is an undergraduate student studying Computer Science and Biology and Society planning to graduate in spring 2011. Although she came to the HPC team at ASU with little experience, shes excited to work with NWChem and help the ASU attain HPC glory at this year’s competition. When not programming, she enjoys participating in ASU’s mock trial program, learning Spanish, and painting.

MeganKearl

Cluster Challenge on Facebook!

If your like everyone else in these times, you probably have a facebook! So come check us out and join our facebook group here!