Calculating... |

**Released: Monday May 11, 2015**

Your challenge is to take an existing serial program for approximating pi and create two parallel versions of it, both of which use MPI.

**Released: Monday April 27, 2015**

Your challenge is to parallelize part of an existing serial/OpenMP code simulating a forest fire to make use of the CUDA platform for running in parallel on a GPGPU.

**Released: Monday April 13, 2015**

Your challenge is to use the OpenCL framework to run a number of simulations in parallel, each of which calculates a value for the mathematical constant pi.

**Released: Monday March 30, 2015**

This problem challenges you to make use of the OpenCL framework to parallelize on a GPGPU a given simulation of heat flow.

**Released: Monday March 16, 2015**

This problem challenges you to make use of the OpenCL parallel programming standard.

**Released: Monday March 2, 2015**

This problem challenges you to parallelize a program that has been profiled using GNU gprof and for which a section has been identified as a candidate for parallelism.

**Released: Monday February 16, 2015**

This problem challenges you to use the GNU gprof utility to identify a function in a program that takes the longest time to run, thereby making it a candidate for parallelism.

**Released: Monday February 2, 2015**

This problem challenges you to combine two versions of a parallel program, one using MPI and the other using OpenMP, into a hybrid program.

**Released: Monday January 12, 2015**

This problem is an extension of a previous problem concerning an agent-based model of an ideal gas. You are challenged to write an MPI distributed version of the model given already-written serial (non-parallel) and OpenMP (parallel) versions in C.

**Released: Monday December 8, 2014**

This problem concerns an agent-based model of an ideal gas. You are challenged to write an OpenMP parallel version of the model given an already-written serial (non-parallel) version in C.

**Released: Monday November 24, 2014**

This problem challenges you to create a hybrid MPI+OpenMP model of a rumor spreading through a population.

**Released: Monday November 10, 2014**

This problem challenges you to create a hybrid MPI+OpenMP model of a chemical reaction.

**Released: Monday October 27, 2014**

This problem challenges you to create a hybrid MPI+OpenMP model of concentration of a drug in the bloodstream.

**Released: Saturday October 11, 2014**

This problem challenges you to create a hybrid MPI+OpenMP model of a water cycle in a pan of water.

**Released: Monday September 29, 2014**

This problem challenges you to modify an existing hybrid parallel program to generate output using NetCDF.

**Released: Saturday September 13, 2014**

This problem challenges you to create a hybrid MPI/OpenMP parallel program that simulates acceleration due to gravity.

**Released: Tuesday September 2, 2014**

This problem challenges you to create a hybrid MPI/OpenMP parallel program that simulates a disease model. The disease model is a simple SIR (susceptible, infected, recovered) model with parameters for initial number of susceptibles and recovery rate.

**Released: Sunday August 17, 2014**

This problem challenges you to implement a hybrid parallel program to simulate rolls of dice.

**Released: Monday August 4, 2014**

This problem challenges you to develop a parallel program based on an existing serial (non-parallel) program.

**Released: Monday July 21, 2014**

This problem challenges you to create a program in C or Fortran that simulates the described phenomenon.

**Released: Monday July 7, 2014**

This problem challenges you to create a distributed memory parallel version of the precipitating particles application.

**Released: Monday June 16, 2014**

A distributed memory algorithm is an algorithm that uses multiple computational processes that perform tasks in parallel but do not have shared access to the same data. To access each other's data, processes must send messages over a network. Your task is to modify an existing serial algorithm to target distributed memory.

**Released: Tuesday June 3, 2014**

This problem challenges you to create a shared memory parallel version of the precipitating particles application.

**Released: Monday May 12, 2014**

A shared memory algorithm is an algorithm that uses multiple computational threads that perform tasks in parallel and can access the same data. Your task is to modify an existing serial algorithm to target shared memory.

**Released: Monday April 28, 2014**

Two of the standards for parallel computing are OpenMP and MPI. Both of these standards have the widest support for implementations in the C and Fortran languages. Your task is to practice using C or Fortran by writing a code that implements a given serial algorithm.

**Released: Monday April 14, 2014**

Turning a serial (non-parallel) algorithm into a parallel one involves identifying where data and task dependencies exist. This problem challenges you to identify data and task dependencies for a given serial algorithm.

**Released: Monday March 31, 2014**

Algorithms are often thought of as recipes that programmers write for computers to follow. This problem challenges you to create an algorithm for an established model and its data structure.

**Released: Monday March 17, 2014**

Given a story and/or a picture, a computational model can be created by first identifying the data structure of the model. The data structure describes which data the model needs to keep track of in order to accurately represent the phenomenon being modeled.

**Released: Monday March 3, 2014**

Models of natural behavior can be described well by writing stories and drawing pictures. This problem concerns the behavior of particles colliding and "precipitating" in a container.

**Released: Monday February 17, 2014**

NetCDF is a set of libraries and data formats used throughout the computational sciences, for example by the National Oceanic and Atmospheric Administration (NOAA, see http://www.esrl.noaa.gov/psd/data/gridded/whatsnetCDF.html) and the Open Geospatial Consortium (OGC, see http://www.opengeospatial.org/standards/netcdf). This problem challenges you to use netCDF to generate scientific data at a small scale.

**Released: Monday February 3, 2014**

This problem challenges you to modify an existing program to generate output so you can create a visualization.

**Released: Monday January 20, 2014**

This problem is an extension of Ant Attraction, http://hpcuniversity.org/students/weeklyChallenge/66/. You may want to familiarize yourself with that problem first.

**Released: Monday January 6, 2014**

This problem concerns a model of ants moving and communicating using chemical pheromones.

**Released: Monday December 9, 2013**

This problem is an extension of Simple Heat, http://hpcuniversity.org/students/weeklyChallenge/64/. You may want to familiarize yourself with that problem first.

**Released: Monday November 25, 2013**

This simple model of heat transfer in an object in two dimensions is an "I Am the Average of My Neighbors" model.

**Released: Monday November 11, 2013**

The concept of a random walk comes up often when modeling scientific behavior -- from particles moving in a container to predatory animals hunting for food. This problem challenges you to create a random walk simulator, with an added challenge of making it compute in parallel.

**Released: Monday October 28, 2013**

This problem is an extension of a previous challenge problem, Forest Fire (http://hpcuniversity.org/students/weeklyChallenge/61/). You will probably want to familiarize yourself with that problem first.

**Released: Wednesday October 23, 2013**

This problem concerns a model of the spread of a fire through a forest, ÃÂ la http://shodor.org/interactivate/activities/Fire.

**Released: Wednesday October 2, 2013**

This problem concerns a parallel model of a population of rabbits. The problem is an extension of Rabbit Reproduction, http://hpcuniversity.org/students/weeklyChallenge/58/ and Rabbits 2, http://hpcuniversity.org/students/weeklyChallenge/59/. You may want to familiarize yourself with those problems first.

**Released: Tuesday September 17, 2013**

This problem concerns a model of a population of rabbits. The problem is an extension of Rabbit Reproduction, http://hpcuniversity.org/students/weeklyChallenge/58/. You may want to familiarize yourself with that problem first.

**Released: Wednesday September 4, 2013**

This problem concerns a very simple model of the growth of a population of rabbits. It belongs to the general class of "HAVE = HAD + CHANGE" models (what you have now is equal to what you had before, plus what changed).

**Released: Monday May 13, 2013**

This problem is based on the processes and chemistry used by chains of amino acids to "fold" into proteins.

**Released: Monday May 6, 2013**

This problem challenges you to discover algorithm(s) to simplify and solve a well defined logic puzzle, given that for a contest lasting only a few hours, a brute force algorithm could take days of run-time to complete.

**Released: Tuesday April 30, 2013**

Profiling is a technique for determining which code regions are likely candidates for parallelization. As Donald Knuth said, premature optimization is the root of all evil (at least in software engineering). In software engineering, one often has to balance simple and well-written code, and well-optimized code, so choosing when to optimize is very important. Two common heuristics for choosing where to optimize are looking for code regions that have long runtime, and looking for code regions that are called repeatedly.

**Released: Sunday August 21, 2011**

This challenge will test your problem-solving skills more than your computing firepower...

**Released: Sunday August 14, 2011**

Modelling a game of chance can provide an interesting computational problem.

**Released: Sunday August 7, 2011**

A "repunit" is a number whose digits are all 1's.

**Released: Sunday July 31, 2011**

Here, you'll be investigating an interesting property of a numerical sequence.

**Released: Sunday July 24, 2011**

This problem involves cracking a login passcode using simple patterns.

**Released: Sunday July 17, 2011**

A modern encryption method is to take a text file, convert the bytes to ASCII, then XOR each byte with a given value, taken from a secret key.

**Released: Sunday June 19, 2011**

This problem entails coding a solution to a simple mathematical problem.

**Released: Sunday June 12, 2011**

Once again, your skills of numerical integration will be tested.

**Released: Sunday January 30, 2011**

This problem touches upon many aspects of computer science, mathematics and problem solving. At its heart though it is a problem about algorithms. The successful algorithm will not only be correct, but will finish running in the allotted time.

**Released: Sunday October 24, 2010**

The Traveling Salesperson (TSP) is a classic example of NP-completeness. This simple problem has applications in such diverse fields as shipping, circuit design, and DNA sequencing. It is one of the most well-studied optimization problems. Optimize and possibly parallelize a program for solving TSP.

**Released: Sunday October 17, 2010**

Calculate answers to the following short-answer questions on technology and its future, consulting hardware specifications or documented performance summaries as needed.

**Released: Sunday October 10, 2010**

The National Science Foundation uses 6 well-known scientific applications to benchmark their high-performance machines: WRF, OOCORE, HOMME, MILC, Paratec, and GAMESS, along with the famed LINPACK. The performance of these benchmarks is indicative of the expected performance of various types of codes. The benchmarks are also a central factor in the grant application process, which brings them very tangible value.

**Released: Sunday October 3, 2010**

Orbital navigation is a physically simple problem that leverages a number of common numerical techniques. The good news is that the only relevant physics is Newtonian gravity and mechanics. The bad news is that producing practical numerical results requires numeric integration and optimization algorithms. The subject of orbital dynamics provides some short-cuts, mostly in terms of symmetry and re-parameterization.

**Released: Sunday September 26, 2010**

Sometimes speed does matter. For example, which matrix library is faster when run under an industry-standard benchmark using a given workload?

**Released: Sunday September 19, 2010**

This problem uses the GROMACS molecular dynamics package.

**Released: Sunday September 12, 2010**

At one point, you may need to investigate and compare the performance (e.g. bandwidth and latency) of various network fabrics, such as gigabit Ethernet and Infiniband.

**Released: Sunday September 5, 2010**

This problem challenges you to balance the load on multiple processors.

**Released: Sunday August 29, 2010**

A turtle can move only in unit lengths along a grid in the right and downwards directions.

**Released: Sunday August 22, 2010**

Problems involving a large number of objects where everything interacts with everything else are found throughout science, from the very small to the very large and a lot in between. This class of problems is called an n-body problem.

**Released: Sunday August 15, 2010**

GEONGRID is an online community dedicated to developing resources for, visualizing, and collaborating on geolocated earth science data. It provides many online resources. This problem will walk you through a few of them.

**Released: Sunday August 8, 2010**

mpiBLAST is a parallel implementation of the BLAST algorithm. BLAST is used to search large nucleotide or protein databases and find similar sequences to an input sequence.

**Released: Sunday August 1, 2010**

Rest assured it's not a political commercial. In this problem you will be provided an algorithm. Your task will be to implement the algorithm using gridMathematica or (for those without access to a computing cluster) Mathematica 7.

**Released: Sunday July 25, 2010**

At least this problem description didn't mention 'gouda' in the title; that would have been cheesy. To prepare for this problem, familiarize yourself with the basics of CUDA programming.

**Released: Sunday July 18, 2010**

You will need to create an account and confirm via e-mail before completing this problem.

**Released: Sunday July 11, 2010**

One of the typical tasks facing a computational scientist is ensuring the accuracy and precision of results are within acceptable limits. Accuracy refers to how close your answers are to the actual answer; precision refers to how many digits, or bits, of a result that you can trust. Both are related to how you manage the error of your solution. This problem challenges you to solve a numerical integration problem taking accuracy and precision into consideration.

**Released: Sunday July 4, 2010**

Neglecting relativistic effects, two objects m1 and m2, located at positions vec{x1} and vec{x2} respectively, feel a pull towards each other. The solution to N bodies attracted to each other by gravity is known as the N-body problem.

**Released: Monday May 17, 2010**

Sudoku is a standard way to test basic problem solving skills. By making a generic Sudoku solver, those skills are pushed to a new level.

**Released: Monday April 19, 2010**

System dynamics models help us model situations that would otherwise be very difficult to analyze and understand. System dynamics models are well suited to situations where the rate of change of factors are interrelated. This problem challenges you to create a system dynamics model which could be used to inform some important decisions.

**Released: Monday April 5, 2010**

Systems dynamics programs allow scientists to be able to program simulations without actually having to know a programming language.

**Released: Monday March 22, 2010**

This problem provides some insight into the world of pharmaceuticals.

**Released: Sunday May 10, 2009**

This mathematical problem is gauged to test your ability to code up simple problems in an efficient way.

**Released: Sunday May 3, 2009**

This is a simple mathematical problem to test your skills.

**Released: Sunday April 12, 2009**

Monte Carlo simulations take many, many iterations with semi-random events to find an average of the outcomes over time. You'll want to familiarize yourself with that concept, as well as how to create a random number in your favorite programming language. If you know a little MPI, even better.

**Released: Sunday March 29, 2009**

Circular primes are special primes that hold certain properties...

**Released: Sunday March 15, 2009**

The Debugging problem walks you through a real bugger of a problem.

**Released: Sunday March 8, 2009**

The SquareDeal problem challenges students to correctly code a mathematically-oriented problem efficiently.