Paweł Tatarczak

		Projekt zadania domowego z Systemów Operacyjnych
  1. Wprowadzenie do MPI

    MPI jest biblioteką umożliwiającą pisanie programów wykonywanych równolegle. Składa się z zestawu ok. 100 funkcji zapewniających identyfikację, synchronizację i przesyłanie danych między wykonywanymi procesami. Podstawowe funkcje to (wszystkie funkcje zwracają 0 jeśli nie było błędu i >0 wpp.):

    Więcej informacji: http://www.mat.uni.torun.pl/res/mpi/.

  2. Zadanie

    Modyfikując bibliotekę LinuxThreads, napisać bibliotekę MaleMPI pozwalającą na używanie funkcji MPI. Założenia: funkcje MPI mogą używać tylko zmiennych zdefiniowanych po MPI_Init(). Z Linuxthreads można "wyrzucić" funkcje obsługujące parametry tworzenia, semafory (mutex) i zmienne warunkowe (condition variables) oraz znacznie uprościć tworzenie i przerywanie wątków. Docelowo wykonanie programu np. silnia.c:

    	#include "mpi.h"
    
    	void main(int argc, char** argv)
    	{
    
    		MPI_Init(&argc, &argv)
    
    		int myrank,size;
    		int i;
    		double j,pom;
    		MPI_Status status;		
    
    		MPI_Comm_rank(MPI_COMM_WORLD, &myrank);
    		MPI_Comm_size(MPI_COMM_WORLD,&size);
    		
    		pom=1.0;
    		for(i=0;i<100/size;i++)	pom *= myrank*(100/size) + i + 1;
    		if(myrank > 0) 	 	             		  		 		 					MPI_Send(&pom,1,MPI_DOUBLE,0,MPI_ANY_TAG,
    				MPI_COMM_WORLD);
    		else if(myrank==0)
    		{
    			for(i=0;i
    skompilowanego następująco:
    
    	cc przyklad.c -lmpi
    ma dać poprawne wykonanie.

    Wskazówka: MPI_Init zdefiniować w mpi.h jako

    	#define MPI_Init(x)  _MPI_Init(x); } _MPI_main() { 
    gdzie _MPI_Init(x) tworzy sieć wątków z funkcją wykonywaną _MPI_main().