Obliczenia wielkoskalowe mogą być zaimplementowane przy użyciu biblioteki MPI (w tym MPJ Express), a następnie rozpraszane na wielu komputerach (klastry). MPI dostarcza programistom mechanizm komunikacji grupowej: grupowe przesyłanie danych (broadcast, scattering) oraz podstawowe operacje arytmetyczne wykonywane na przesyłanych danych (reduction).
Operacje przesyłania grupowego pokazują poniższe schematy:
Operacje redukcji oraz skanowania:
Przetestuj działanie metod scatter rozsyłając n liczb, a nastepnie redukując te n liczb metodą reduce. Jako operator redukcji wybierz kolejno sumę, minimum oraz mnożenie. Parametr n oznacza liczbę procesów. Przykładowy kod dla n=10 procesów:
int[] sendbuf = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; int[] recvbuf = new int[1]; MPI.COMM_WORLD.Scatter(sendbuf, 0, 1, MPI.INT, recvbuf, 0, 1, MPI.INT, 0); MPI.COMM_WORLD.Reduce(recvbuf, 0, recvbuf, 0, 1, MPI.INT, MPI.SUM, 0);
Korzystając z dostępnych metod komunikacji grupowej MPI, zaimplementuj algorytm wyznaczania sumy prefiksów ciągu.
HPC: wyznaczanie wartości liczby Pi metodą monte carlo.