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


viernes, 26 de abril de 2013

programación paralela en .net

Estos son algunos de los principales recursos que puedes encontrar para iniciar en el mundo de la programación paralela para Microsoft .NET, están listados de menor a mayor complejidad:


http://channel9.msdn.com/Events/TechDays/TechDays-2011-Belgium/TD030
Parallel Programming in .NET 4.0 - Tasks and Threading

parallel computing on MSDN
http://msdn.microsoft.com/es-mx/vstudio/bb964701

Como depurar aplicaciones que tienen multiprocesos
http://msdn.microsoft.com/library/vstudio/ms164746(VS.110).aspx

Programando con subprocesos para ASP .net PERO! usando javascript!
http://msdn.microsoft.com/es-mx/library/windows/apps/hh700330.aspx

Patrones en el desarrollo de programación paralela usando .net
http://www.microsoft.com/en-us/download/details.aspx?id=19222

viernes, 5 de abril de 2013

Programación en tiempo real para JAVA

Encontré un artículo que recomiendo mucho en Dr Dobbs acerca de la programación en hilos para tiempo real de JAVA y posteriormente una Fe de Erratas sobre ese artículo escrito por el propio autor.

éxito el fin de semana!

jam