Thread - multiplicação de matrizes

477 palavras 2 páginas
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <pthread.h>

int tamanho = 1000, divisao = 0; int matriz1[1000][1000], matriz2[1000][1000], matriz3[1000][1000]; int a1 = 0, a2, a3, a4, a5, a6, a7, a8;

void *calcula (int *arg){ int k = 0, i = 0, j = 0; for (i=*arg;i<*arg+divisao; i++) { for (j=0; j<tamanho; j++) { for (k=0; k<tamanho; k++) { matriz3[i][j] = matriz3[i][j] + matriz1[i][k] * matriz2[k][j]; } } } pthread_exit(NULL);
}

/*exemplo de função usando thread foi a que funcionou void *vetor1 (int *arg){ int count = 0, i = 0; for(i = *arg; i < *arg+25; i++){ count += vet[i]; } printf("%d\n", count); pthread_exit(count);
}
*/

int main(int argc, char *argv[]) {

int i, j, k; int num_thread; tamanho = atoi(argv[1]); num_thread = atoi(argv[2]); matriz1[tamanho][tamanho]; matriz2[tamanho][tamanho]; matriz3[tamanho][tamanho];

divisao = tamanho / num_thread; a2 = divisao; a3 = a2 + divisao; a4 = a3 + divisao; a5 = a4 + divisao; a6 = a5 + divisao; a7 = a6 + divisao; a8 = a7 + divisao;

pthread_t t1, t2, t3, t4, t5, t6, t7, t8;

printf("\n#### MULTIPLICACAO DE MATRIZES ####\n");

//preenchimento matriz 1 for (i=0; i<tamanho; i++) { for(j=0; j<tamanho; j++) { matriz1[i][j] = 1; } }

//preenchimento matriz 2 for (i=0; i<tamanho; i++) { for(j=0; j<tamanho; j++) { matriz2[i][j] = 2; } }

//preenchimento matriz 3 for (i=0; i<tamanho; i++) { for(j=0; j<tamanho; j++) { matriz3[i][j] = 0; } }

if(num_thread == 2){ pthread_create(&t1, NULL, calcula, &a1); pthread_create(&t2, NULL, calcula, &a2); pthread_join(t1, NULL); pthread_join(t2, NULL); }else if(num_thread == 4){ pthread_create(&t1, NULL, calcula, &a1); pthread_create(&t2, NULL, calcula, &a2); pthread_create(&t3, NULL, calcula,

Relacionados

  • Multiplicação de matrizes usando thread
    542 palavras | 3 páginas
  • Trabalhando com OpenMP
    2772 palavras | 12 páginas
  • Introdução à programação CUDA
    4318 palavras | 18 páginas
  • Avaliação de Desempenho do OpenMP em Arquiteturas Paralelas
    13798 palavras | 56 páginas
  • Uma Revisão de Ferramentas para Programação Multithread Baseadas no Modelo de Paralelismo de Tarefas
    11085 palavras | 45 páginas
  • Threads
    1166 palavras | 5 páginas
  • redes
    12803 palavras | 52 páginas
  • Filas E Pilhas
    11428 palavras | 46 páginas
  • funções de cálculo numérico
    4181 palavras | 17 páginas
  • Implementação em GPU de Rede Neural para Análise de Sinais de EEG
    8673 palavras | 35 páginas