elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: [AIO elhacker.NET 2015] Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Ejercicios
| | | |-+  Duda principiante: ¿cómo es un bucle DIRECTAMENTE paralelizable?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda principiante: ¿cómo es un bucle DIRECTAMENTE paralelizable?  (Leído 1,157 veces)
Estudiante1986

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Duda principiante: ¿cómo es un bucle DIRECTAMENTE paralelizable?
« en: 20 Octubre 2015, 21:23 »

Hola a todo el mundo. Pues eso, ¿cómo es un bucle directamente paralelizable?

Más o menos, conceptualmente, sé lo que es la paralelización. También sé que existen diversos tipos de paralelización (a nivel de instrucciones, de peticiones y de datos).

Bien, pues... Lo que no sé es cómo identificar un supuesto bucle paralelizable a nivel de instrucciones. Tampoco sé lo que significa que sea "directamente" paralelizable ni lo que es "desenrollar" el bucle.

Algunos dirán que por qué pregunto todo esto que es más bien teórico, pero es que lo necesito para una asigantura.


Muchas gracias de antemano por las respuestas.


En línea

El Benjo


Desconectado Desconectado

Mensajes: 382



Ver Perfil WWW
Re: Duda principiante: ¿cómo es un bucle DIRECTAMENTE paralelizable?
« Respuesta #1 en: 18 Noviembre 2015, 05:49 »

Supongo que lo de "directamente paralelizable" se refiere a que la función ejecuta ciertas instrucciones sobre un número n de elementos y puedes ejecutar un número n de hilos que trabajen sobre estos elementos. Ejemplo:

Se tiene una función que realiza la suma de los elementos de n arreglos. La forma tradicional de hacerlo sería:

Código
  1. public struct StArreglos
  2. {
  3.  public int[] Elementos;
  4. }
  5.  
  6. StArreglos[] VarArreglos;
  7.  
  8. public void SumaArreglos()
  9. {
  10.  int C;
  11.  int D;
  12.  for(C = 0; C < VarArreglos.Lenght; C++)
  13.  {
  14.    for(D = 0; D < VarArreglos[C].Elementos.Lenght; D++)
  15.    {
  16. // Suma de los elementos.
  17.    }
  18.  }
  19. }
  20.  
  21. public void main()
  22. {
  23.  VarArreglos = new StArreglos(3);
  24.  SumaArreglos();
  25. }

Esta función podríamos decir que es directamente paralelizable porque basta con reescribir la función sumar arreglos eliminando el primer bucle y pasando un índice a la función indicando sobre cual arreglo ejecutaremos la suma de sus elementos. Después, en la función main invocamos un hilo a dicha función por cada arreglo:

Código
  1. [code=csharp]public struct StArreglos
  2. {
  3.  public int[] Elementos;
  4. }
  5.  
  6. StArreglos[] VarArreglos;
  7.  
  8. public void SumaArreglos(int Indice)
  9. {
  10.  int C;
  11.    for(D = 0; D < VarArreglos[Indice].Elementos.Lenght; D++)
  12.    {
  13. // Suma de los elementos.
  14.    }
  15.  }
  16. }
  17.  
  18. public void main()
  19. {
  20.  int A;
  21.  VarArreglos = new StArreglos(3);
  22.  for(A = 0; A < VarArreglos.Lenght; A++)
  23.  {
  24. // Lanzo un hilo a la función 'SumaArreglos' por cada arreglo.
  25.  }
  26. }
[/code]

Lo de desenrrollar en bucle te lo dejo aquí:

https://es.wikipedia.org/wiki/Desenroscado_de_bucles

Busca la parte que dice "desenroscado de bucles estático".


En línea

Sí hay un mejor lenguaje y es ese con el que puedes desarrollar tus objetivos. Desde luego, ya que estos tienden a ser subjetivos (personales), no es el mismo lenguaje para todos.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda (Parar bucle con dato boolean) [bucle while]
Java
Dem0ny 5 10,014 Último mensaje 17 Diciembre 2008, 17:43
por Dem0ny
duda con bucle for
Java
andaluz 1 1,399 Último mensaje 4 Mayo 2010, 22:35
por Chuidiang
Duda bucle do...while
PHP
elkiy 2 976 Último mensaje 22 Febrero 2013, 15:17
por elkiy
Duda bucle do while « 1 2 »
Programación C/C++
program_10 10 1,412 Último mensaje 11 Enero 2015, 17:11
por Yoel Alejandro
Duda C# Bucle While.
.NET
FKT 5 809 Último mensaje 18 Agosto 2015, 16:05
por FKT
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines