MacierzAdam, Studia - Politechnika Opolska, Semestr 8-9
[ Pobierz całość w formacie PDF ]
//-->WYDZIAŁ ELEKTROTECHNIKI, AUTOMATYKI I INFORMATYKIPOLITECHNIKA OPOLSKAProgramowanie współbieżne i rozproszonelaboratoriumKierunekstudiów:Rokakademicki:Temat:Informatyka studia II-go stopnia2010/2011Rok studiów:Semestr:IIĆwiczenie 2: Mnożenie macierzyLp.1.ImięNazwiskoSprawozdanie oddano dnia:Ocena:AdamCzechProwadzący:Wtorek17:50L126.05.2015Termin zajęć:dzień:godzina:grupa:dr hab. inż. J. Sadecki Prof. POOpole 2015WYDZIAŁ ELEKTROTECHNIKI, AUTOMATYKI I INFORMATYKI1. Cel ćwiczeniaCelem ćwiczenia było przygotowanie programu wykonującego mnożenie macierzy. Doobliczeń należą: mnożenie macierzy i mnożenie macierzy przez wektor. Program miał byćwykonany w taki sposób, aby obliczenia były przeprowadzane na wielu rdzeniach.2. Wstęp teoretycznyMacierz to układ w postaci prostokątnej tablicy danych. Najczęściej współczynnikimacierzy są elementami pewnego ciała bądź pierścienia przemiennego, jednak w ogólnościwystarczy dowolna abstrakcyjna struktura, której wielkości można dodawać i mnożyć.Macierze wykorzystuje się do opisu układów równań liniowych, przechowywaniawspółczynników przekształceń liniowych. Dzięki swoim algebraicznym własnościom są onekluczowym pojęciem algebry liniowej. Macierze jednowskaźnikowe, czyli tablicejednowymiarowe utożsamia się zwykle z wektorami. W informatyce odpowiednikiemmacierzy jest tablica dwuwymiarowa.3. Kod źródłowy:#include#include#include#include#include<unistd.h><stdio.h><stdlib.h><sys/times.h><time.h>//włączenie odmierzania czasustart = times(&t_start);printf("Alokuje pamieć...\nwielkośćmacierzy:\nA[%d][%d]\nB[%d][%d]\nC[%d][%d]",N,M,M,K,N,K);// alokacja pamięciA = (double**)malloc(N * sizeof(double*));B = (double**)malloc(M * sizeof(double*));C = (double**)malloc(N * sizeof(double*));for (i = 0; i < N; i++){A[i] = (double*)malloc(M * sizeof(double));}for (i =B[i]}for (i =C[i]0; i < M; i++){= (double*)malloc(K * sizeof(double));0; i < N; i++){= (double*)malloc(K * sizeof(double));1Opole 2015WYDZIAŁ ELEKTROTECHNIKI, AUTOMATYKI I INFORMATYKI}for (i = 0; i < N; i++) {for ( j = 0; j < M; j++ ){A[i][j] = rand();}}for (i = 0; i < M; i++) {for ( j = 0; j < K; j++ ){B[i][j] = rand();}}end = times(&t_end);doit("\nCzas wykonania inicjalizacji i losowania liczbmacierzy", end - start);start = times(&t_start);//wyłączenie odmierzania czasuend = times(&t_end);doit("\nCzas wykonania mnozenia macierzy przez wektor przyużyciu algorytmu równoległego -1 wątek", end - start);printf("Czyszcze macierz wynikową------------------------------------");for (i = 0; i < N; i++) {for ( j = 0; j < K; j++ ){C[i][j] = 0;}}//równoległy 2 wątkistart = times(&t_start);// C = A*B.#pragma omp parallel for shared(A, B, C, N, M, K) private(i,j,k)num_threads(2)for (i=0; i<N; i++){for (k=0;k<K;k++){C[i][k] = 0;for(j=0; j<M; j++)C[i][k] += A[i][j] * B[j][k];}}end = times(&t_end);2Opole 2015WYDZIAŁ ELEKTROTECHNIKI, AUTOMATYKI I INFORMATYKIdoit("\nCzas wykonania mnozenia macierzy przez wektor przyużyciu algorytmu równoległego -2 wąteki", end - start);printf("Czyszcze macierz wynikową------------------------------------");for (i = 0; i < N; i++) {for ( j = 0; j < K; j++ ){C[i][j] = 0;}}//--------------------------------------------------------//równoległy 3 wątkistart = times(&t_start);// C = A*B.#pragma omp parallel for shared(A, B, C, N, M, K) private(i,j,k)num_threads(3)for (i=0; i<N; i++){for (k=0;k<K;k++){C[i][k] = 0;for(j=0; j<M; j++)C[i][k] += A[i][j] * B[j][k];}}end = times(&t_end);doit("\nCzas wykonania mnozenia macierzy przez wektor przyużyciu algorytmu równoległego -3 wąteki", end - start);printf("Czyszcze macierz wynikową------------------------------------");for (i = 0; i < N; i++) {for ( j = 0; j < K; j++ ){C[i][j] = 0;}}//--------------------------------------------------------//równoległy 4 wątkistart = times(&t_start);// C = A*B.#pragma omp parallel for shared(A, B, C, N, M, K) private(i,j,k)num_threads(4)for (i=0; i<N; i++){for (k=0;k<K;k++){C[i][k] = 0;for(j=0; j<M; j++)C[i][k] += A[i][j] * B[j][k];}}3Opole 2015WYDZIAŁ ELEKTROTECHNIKI, AUTOMATYKI I INFORMATYKIend = times(&t_end);doit("\nCzas wykonania mnozenia macierzy przez wektor przyużyciu algorytmu równoległego -4 wąteki", end - start);printf("Czyszcze macierz wynikową------------------------------------\n\n");for (i = 0; i < N; i++) {for ( j = 0; j < K; j++ ){C[i][j] = 0;}}//--------------------------------------------------------------4Opole 2015
[ Pobierz całość w formacie PDF ]
Tematy
- Strona pocz±tkowa
- Materiałoznastwo 5, ATH studia - materiały, Materiałoznastwo
- Materiałoznastwo 6, ATH studia - materiały, Materiałoznastwo
- Materiałoznastwo 4, ATH studia - materiały, Materiałoznastwo
- Matematyka dyskretna - wykład, Studia, Matematyka dyskretna
- Matura 2010 maj. pr, NAUKA, Chemia - matura+studia, Arkusze maturalne, Arkusze maturalne od 2001
- Matura próbna 2009.01 pp.odp, NAUKA, Chemia - matura+studia, Arkusze maturalne, Arkusze maturalne od 2001
- Mapy fizyczne i sekwencja DNA genomu, MOJE STUDIA Toksykologia i Mikrobiologia środowiska (Ochrona Środowiska - dzienne), genetyka, Genetyka, DNA, biologia molekularna, techniki
- Matura próbna 2009 (XI.2008) - poz. podst., NAUKA, Chemia - matura+studia, Arkusze maturalne, Arkusze maturalne od 2001
- Maszyny Elektryczne wokół nas - [Ronkowski, STUDIA, Maszyny Elektryczne i Sterowanie
- Matematyka dyskretna 2002 - 09 Grafy nieskierowane, materiały naukowe do szkół i na studia, Matematyka chomikuj, Skrypty z matematyki chomikuj
- zanotowane.pl
- doc.pisz.pl
- pdf.pisz.pl
- natalcia94.xlx.pl