ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Implementación de una matriz en OPENMP


Enviado por   •  28 de Enero de 2021  •  Informes  •  1.015 Palabras (5 Páginas)  •  54 Visitas

Página 1 de 5

ESCUELA POLITÉCNICA NACIONAL

FACULTAD DE INGENIERÍA EN SISTEMAS

CARRERA DE INGENIERÍA EN SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN

Materia: SIC616 – Computación Distribuida

Memoria Técnica

Tema: Implementación de una matriz en OPENMP

OpenMP

Es un api, la cual se puede hacer uso para implementar aplicaciones o programas con multiprocesamiento, pero en memoria compartida. Cabe recalcar que al ser un api y no se puede manejar los procesos en bajo nivel, OPENMP asigna los procesadores en donde se vayan a realizar las tareas asignadas.

Este código nos ayuda a paralelizar un problema que requiere mucho procesamiento en este caso calculo de números muy elevados de tipo long long en una multiplicación, para ello se utilizó #pragma que es una sentencia con la cual nosotros podemos “decirle” al compilador como se debe comportar para el siguiente programa dado.

Como se puede observar se ha divido el código en secciones y se les asignado un hilo para cada sección. Esto se defino en con la línea de código #pragma omp parallel sections num_threads(7).

Código:

#include <stdafx.h>

#include <iostream>

#include <omp.h>

using namespace std;

int _tmain(int arc, char* argv[])

{

        const long long size = 12000000000;

        float* a = (float*)malloc(3 * size * sizeof(float));

#pragma omp parallel sections num_threads(7)

        {

#pragma omp section //1

                {

                        for (long long i = 0; i < size * 20; i++) {

                                a[i % size] = 3.141926 + (i % size);

                        }

                }

        

#pragma omp section //2

        {

                for (long long i = 0; i < size * 20; i++) {

                        a[i % size] = 3.141926 + (i % size);

                }

        }

#pragma omp section //3

        {

        for (long long i = 0; i < size * 20; i++) {

                a[i % size] = 3.141926 + (i % size);

        }

}

                

#pragma omp section //4

                {

                for (long long i = 0; i < size * 20; i++) {

...

Descargar como (para miembros actualizados)  txt (3 Kb)   pdf (195 Kb)   docx (175.6 Kb)  
Leer 4 páginas más »
Disponible sólo en Clubensayos.com