investigación de los Avances tecnológicos del siglo XXI
Como hacer que tus aplicaciones saquen mejor provecho a los procesadores disponibles hoy y a los que vendrán
1.
2. Como hacer que tus aplicaciones saquen mejor provecho a los procesadores disponibles hoy y a los que vendrán Andrés Iturralde Consultor Senior aiturralde@ikom.cl http://aiturralde.com
3. ¿Porqué debería importarme el paralelismo? Los computadores están cambiando La ley de Moore está tomando un giro importante Tecnologías SMP y MultiCore Los usuarios están cambiando Esperan aplicaciones rápidas y responsivas CPU CPU CPU Core Core Memoria Memoria
4. ¿A qué se refería Moore? Dual-Core Itanium 2 Tendencias de CPU’s Intel (Fuentes: Intel, Wikipedia, K. Olukotun) Pentium 4 Pentium 386
5. ¿Qué debo hacer para esto? Paralelizar! Thread B Thread A Thread C QuantumExpirado Acceso a Memoria Operación I/O “Estado Wait”
9. Estoy convencido… ¿ahora qué? Programación en multiples hiloses “dificil” hoy Realizable porciertossubgrupos de especialistas senior Patronesparalelos no son frecuentes, bienconocidos, nifáciles de implementar Muchosproblemaspotenciales Las empresastienenpocosdeseos de ir “hacia la médula” del asunto Los mejoresdesarrolladoresdebenenfocarse en valor de negocio, no en concurrencia Se necesitan simples maneras de permitir a todos los desarrolladoresescribircódigoconcurrente
10. Soporte de paralelismo en .NET 4 y VS2010 Herramientas Runtime ConcurrenciaManejada y Modelos de Programación Visual Studio IDE .NET Framework 4 Parallel LINQ Parallel Debugger Task Parallel Library Concurrent Collections Task Scheduler Concurrency Visualizer Sync Primitives Thread Pool CLR
11. Extensiones Paralelas Nuevas API’s de paralelismos en .NET 4 Loops Paralelos Parallel LINQ Paralelismo fino (basado en Tareas) Nuevos primitivos de sincronización y colecciones concurrentes Mejoras en el ThreadPool
12. Metas del TPL Hacer el paralelismo Simple Implementando escenarios comunes Pasando data de entrada y de salida de las operaciones paralelas Manejando errores en operaciones paralelas Interrumpiendo trabajos en progreso Haciendo el paralelismo Eficiente Robando trabajos y tamaño variable de pedazos de trabajos Auto ajustando el tamaño del ThreadPool para soportar cargas variables Reduciendo gastos generales para el trabajo paralelo Dando a los desarrolladores Control, si así lo desean Opciones de creación y continuidad Agendamiento de tareas fuera del ThreadPool
13. ¿Qué es una Tarea? Representación de una operación asíncrona Bloque ligero de paralelismo Una forma de obtener un valor (o error) que existirá en el futuro Un consistente set de abstracciones sobre el cual programar Una manera sencilla de utilizar el ThreadPool para paralelismo Eficiente para paralelismo «rápido» También eficiente para actividades de larga duración