Computational system
For the 2013 contest the computational system has changed. It is a cluster composed by three nodes:
saturno is a NUMA system with 4 Intel hexa-core NEHALEM-EX EC E7530 nodes, and a total of 24 cores, 1.87 GHz, 32 GB of shared-memory. It has an NVIDIA GeForce, which will not be used.
marte and mercurio are AMD Phenom II X6 1075T (hexa-core), 3 GHz, 8 GB marte) and 15 GB (mercurio), private L1 and L2 caches of 64 KB and 512 KB, and L3 of 6 MB shared by all the cores, with an NVIDIA GeForce GTX 590 with two devices, CUDA Compute Capability 2.0, each with 16 SMP of 32 cores, a total of 512 CUDA cores in a device, 1.2 GHz. The total amount of memory in each GPU is 1.5 GB.
They are connected through fast-ethernet.
Contest system
Mooshak is used for the contest. The access is through the contest web-page (luna.inf.um.es). Each team will have one account for all the members of the team.
After entering the selected test, there are available five options:
-A problem can be selected and viewed. The problem to be solved is provided together with:
The scheme mooshak uses for input/output and for time account and speed-up calculation. This file is not modified.
A file with the sequential solution provided by the organization. The contestants should modify the function which solve the problem, parallelizing it to obtain the maximum speed-up with respect to the sequential version. Speed-up can be obtained through parallelization or optimization of the sequential version.
A example of input file, similar in problem size and number to that with which the problem is evaluated.
-The file where the contestants have written their solutions should be selected and submitted.
-Questions can be sent to the organizers with the Ask option.
-The Help option gives general information on Mooshak (it is not of utility for our contest).
-And Logout.
The Submissions, Ranking, and Questions can be viewed.
The contest
Some problems should be solved with OpenMP on saturno, others with MPI and/or OpenMP in marte and/or mercurio, and others with CUDA in mercurio.
The number of nodes and cores and the problem type is indicated with comments at the beginning of the file sec.c (or sec.cu). The problem we are working with is indicated in the comments and by selecting the corresponding problem when file sec.c is sent to the evaluation system.
The comments at the beginning of sec.c must be in the correct format. There are 4 variables:
CPP_CONTEST: Name of the contest (2013).
CPP_PROBLEM: Name of the problem. It must not to be modified.
CPP_LANG: C+OPENMP for OpenMP problems, C+OPENMP+MPI for MPI+OpenMP problems, and CUDA for CUDA problems.
CPP_PROCESSES_PER_NODE: Number of processes per node.
CPP_PROCESSES_PER_NODE is modified to indicate the resources to be used:
-in OPENMP problems, saturno 1 must be indicated. All the cores of saturno can be used. The number of threads should be indicated in the code (sec.c), for example with omp_set_num_threads.
-in MPI+OPENMP problems the number of processes to be started in marte and mercurio is indicated. For example, “marte 2 mercurio 3” indicates 2 MPI processes in marte and 3 in mercurio. All the cores in marte and mercurio can be used, and each process can start slave OpenMP threads.
-in CUDA problems, mercurio is used, which is indicated with “mercurio 1”.
Scoring
The score awarded will be calculated on the basis of the speed-up achieved with respect to the sequential solution given by the organizing committee.
A problem will be awarded zero when no correct solution is obtained or when the speed-up is lower than one.
The inputs used for testing will not give large execution times (between 10 and 50 seconds).
For each problem the score is the minimum of a value MSP (MSP=10 for each problem in the 2013 contest) and the maximum speed-up obtained by all the teams minus 1. For each problem and team the score will be calculated by linear interpolation of the maximum speed-up obtained by the team minus 1 and the maximum score obtained for the problem:
Let p=1,2...P be the P problems and t=1,2,...T the T teams. S(p,t) is the speed-up of team t on problem p (each submission after the tenth one will be penalized by minus 1), and the speed-up for problem p is S(p)=max_t=1,2,...T S(p,t), and the maximum score for problem p is V(p)=min {MSP,S(p)-1}. Through linear interpolation, the score of team t for problem p is V(p,t)=V(p)*(S(p,t)-1)/(S(p)-1). (All values are considered greater than or equal to zero).