Multiplicação de matrizes usando thread

542 palavras 3 páginas
#include
#include
#include
#include
#include

//QUANTIDADE DE THREADS int pthreads_count;
//QUANTIDADE DE LINHAS CALCULADAS POR CADA THREAD int * lines_per_thread;
//TAMANHO N DA MATRIZ N x N int matrix_size;
//MATRIZES
int ** matrix_a, ** matrix_b, ** matrix_c;
//ESTRUTURA PARA sER MANDADA PARA A FUNCAO 'pthread_create' struct ARGUMENT
{
int turn;
};

/* FUNCAO QUE CRIA, PREENCHE E RETORNA ESTRUTURA INT_MATRIX, DADOS LINHAS, COLUNAS, VALOR MAXIMO E VALOR MINIMO - ALOCA A MATRIZ DINAMICA - DEFINE O NUMERO DE LINHAS E COLUNAS - PREENCHE COM VALORES ALEATORIOS NO INTERVALO ( minimum, maximum ) */ int ** buildMatrix( int minimum, int maximum )
{
int ** matrix = ( int ** ) malloc( matrix_size * sizeof( int* ) ); // int i, j; for ( i = 0; i < matrix_size; i++ ) { matrix[ i ] = ( int * ) malloc( matrix_size * sizeof( int ) ); for ( j = 0; j < matrix_size; j++ ) matrix[ i ][ j ] = rand() % ( maximum - minimum + 1 ) + minimum; } return matrix;
}
/* FUNCAO QUE CRIA E RETORNA UMA ESTRUTURA INT_MATRIX PARA GUARDAR O RESULTADO DA MULTIPLICACAO a x b - ALOCA A MATRIZ DINAMICA ( ZERADA ) - MULTIPLICA AS MATRIZES a e b */
//MOSTRA O CONTEUDO DE UMA ESTRUTURA INT_MATRIX void show( int ** target )
{
int i, j; for ( i = 0; i < matrix_size; i++ ){ for ( j = 0; j < matrix_size; j++ ) printf("%d\t", target[ i ][ j ] ); printf("\n"); } printf("\n");
}

void multMatrices( void )
{
int mult_i, mult_j, pointer; for ( mult_i = 0; mult_i < matrix_size; mult_i++ ) for ( mult_j = 0; mult_j < matrix_size; mult_j++ ) { for ( pointer = 0; pointer < matrix_size; pointer++ ) { matrix_c[ mult_i ][ mult_j ] += matrix_a[ mult_i ][ pointer ] * matrix_b[ pointer ][ mult_j ]; } }
}
//FUNCAO PARA SER USADA NA 'pthread_create' void * multPthread( void * t )
{
int start_row = 0, final_row, i, turn = ( ( struct ARGUMENT * ) t )->turn; // for ( i = 0; i < turn; i++) {

Relacionados

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