Compartiendo para dos mundos

Hablando de programación paralela.
Tutoriales en: https://www.youtube.com/user/jambrizgdl
Twitter: @dogoteacher

Buscar este blog

miércoles, 12 de marzo de 2014

estrategia de programación paralela: division de datos


El video 2 nos habla de:

Para programar de forma paralela tenemos que buscar "oportunidades"
La clave es tener a los cores trabajando simultáneamente. Hay tres estrategias sencillas
Que platica el expositor:
  • Descomposición de datos ( domain decomposition)
  • Descomposición de tareas ( task decomposition)
  • Generar una línea de producción (pipelining )

Todas ellas son muy sencillas:
Para la descomposición de datos hay que partir la información de forma que a cada core le toque procesar una parte de ella esto funciona cuando no hay dependencias entre el procesamiento de cada dato, es decir que el procesamiento del segundo dato dependa del resultado de procesar el primero. Por ejemplo, se tiene una lista de elementos y se aplicará una multiplicación a cada dato; entonces se parten el arreglo los cores y a cada uno le toda una parte, así que cada uno está procesando la parte que le corresponde.

Has implementado esta estrategia?
En que lenguaje?
Quieres compartir tu código con otros?
(no temas por la crítica, recuerda que hay que desechar el mito del genio programador! - link -)
Compartiendo todos podemos aprender y mejorar nuestros códigos.

éxito en tu programación!


jam

recursos para aprender programación paralela


En el link (minuto 8:48 ) habla que mas personas aprenden programación paralela 
(poco a poco, pero bueno algo es algo )

conoces recursos para aprender a programar de forma paralela usando los cores que tienes en tu compu?}

por favor, comparte si conoces algún otro mas.

introducción a la programación paralela -> https://www.udacity.com/course/cs344

Programacion paralela en .net framework ->  http://msdn.microsoft.com/es-es/library/dd460693(v=vs.110).aspx


Intel courseware sobre programación paralela -> http://software.intel.com/en-us/academic#pid-13124-91

exito en la semana!

jam


la enseñanza y la programación paralela

En el minuto 7 de la primara presentación el profesor hablaba sobre un problema que en lo personal creo que es el peor problema de la programación paralela:

"Most people do not learn parallel programming"   -- 
  la mayoría de las personas no aprende programación paralela


cuantos lenguajes les enseñan en la universidad?

cuando aprenderán programación paralela en esos lenguajes? ( si apenas hay tiempo de verlos en lo básico! )

existen lenguajes "pedagógicos" (es decir lenguajes que sirven para aprender ciertos conceptos de programación) , como Karel o Alice que enseñan programación estructurada u orientado a objetos, pero 

Hay algún lenguaje para enseñar conceptos de programación paralela?



éxito en la semana!

jam

lunes, 17 de febrero de 2014

Compiladores apoyando a la programación paralela

En el primer video del courseware de Intel, el expositor indica en una diapositiva lo siguiente:
"
Successful attempts require both
1. Understanding of where parallelism can be effective
2. Knowledge of how to design and implements good solutions.
"

Esto es correcto, pero también es cierto que actualmente hay vario compiladores que apoyan al dearrollador analizando su código y verificando los puntos donde se pueden genera hilos para aprovechar el paralelismo (con o sin la indicación explicita de parte del programador que convierta su código de "secuencial" a "paralelo" ).

Una de esas técnicas es muy sencilla, si ve que pueden partirse los datos que maneja el programa de forma que le toque una parte a un hilo distinto, el compilador generará el código necesario para que se generen los hilos que se requieren, por ejemplo:
for(i=0; i< 1000000; i++ )
{
 arreglo[ i ] = arreglo[ i ] * 50000;
}

El cálculo realizado en cada iteración solo afecta a un elemento y este valor calculado (por lo menos en el ciclo) no es dependiente de los otros valores en el ciclo, por lo tanto se podrán generar "n" cantidad de hilos que se repartan el trabajo de dicho ciclo.

éxito en la programación!

jam

Courseware de programación paralela en Intel

Recomendación para esta semana de auto-estudio:

Intel coloco hace tiempo este curso de programación paralela en base a videos.
El primer video habla de porque se requiere programar de forma paralela.

éxito en su programación

JAM