• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Task Parallel Library 2014
 

Task Parallel Library 2014

on

  • 198 views

Programación Paralela y mucho más con C# y Visual Studio 2013.

Programación Paralela y mucho más con C# y Visual Studio 2013.

Statistics

Views

Total Views
198
Views on SlideShare
198
Embed Views
0

Actions

Likes
1
Downloads
6
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Task Parallel Library 2014 Task Parallel Library 2014 Presentation Transcript

    • Lluís Franco Microsoft MVP C# Programación Paralela… ...y mucho más con Microsoft .NET Framework 4.5 @lluisfranco facebook/lluis.franco hello@lluisfranco.com
    • @lluisfranco Agenda – Programación Paralela 1. 2. 3. 4. 5. 6. 7. 8. Qué es y porque la necesito? Bucles con esteroides con la clase Parallel Extendiendo LINQ con PLINQ Tareas asíncronas con la clase Task Solucionar problemas de Concurrencia New C#5 Keywords: async & await Questions & Answers Beer time  2
    • @lluisfranco ¿Que es la programación paralela? ¿Esto? 3
    • @lluisfranco ¿Que es la programación paralela? ¿Esto? 4
    • @lluisfranco Wikipedia dixit: “La computación paralela es una técnica de programación en la que muchas instrucciones se ejecutan simultáneamente. Se basa en el principio de que los problemas grandes se pueden dividir en partes más pequeñas que pueden resolverse de forma concurrente”. “Existen varios tipos de computación paralela: paralelismo a nivel de bit, paralelismo a nivel de instrucción, paralelismo de datos y paralelismo de tareas”. “Durante muchos años, la computación paralela se ha aplicado en la computación de altas prestaciones, pero el interés en ella ha aumentado en los últimos años debido a las restricciones físicas que impiden el escalado en frecuencia”. 5
    • @lluisfranco Ley de Moore: Cada 2 años se duplica el número de componentes en un circuito integrado. Gordon E. Moore el 19/04/1965, Co-fundador de Intel 6
    • @lluisfranco Un par de problemas a la vista… Evolución del calor (vatios x cm 2): Evolución del escalado de frecuencia: Sun’s Surface 10 GHz 3 GHz 3.6 GHz 3.8 GHz 2 GHz 1GHz 1 GHz Power Density (W/cm2) 10,000 Rocket Nozzle 1,000 Nuclear Reactor 100 10 4004 8008 600 MHz ‘70 1990 1993 1997 2001 2005 286 Hot Plate Pentium® processors 386 486 8080 1 400 MHz 8086 8085 ‘80 ‘90 ‘00 ‘10 2010 1) Cada vez cuesta más esfuerzo hacer un procesador más rápido 2) El calor generado empieza a ser un verdadero problema Incrementar la frecuencia un 5% o un 10% cada año tiene un coste de casi doblar la temperatura. El aumento de temperatura disminuye la velocidad del transistor. El aumento de temperatura aumenta las fugas en los transistores. Batería!!!
    • @lluisfranco Conclusión: • La ley de Moore ha muerto: – Tecnología actual 14 nanómetros – Límite 7-5 nanómetros (físico!) – Se alcanzará entre 2016-2018 • Solución: – Más núcleos – Computación en paralelo – INTEL / AMD / NVIDIA (CUDA) «La materia presenta efectos cuánticos que harían necesaria una tecnología diferente para seguir realizando cálculos a ese nivel». Stephen Hawking 8
    • @lluisfranco Antes de empezar... Vamos a aclarar algunos conceptos: 9
    • @lluisfranco Sobre procesos e hilos… Procesos (processes) en un sistema operativo • Un proceso proporciona los recursos necesarios para ejecutar un programa. • Contiene un espacio de memoria virtual, código ejecutable, un contexto de seguridad, un identificador de proceso único, variables de entorno, y al menos un thread de ejecución. • Cada proceso se inicia con un único thread, a menudo llamado thread principal, pero puede crear threads adicionales. 10
    • @lluisfranco Sobre procesos e hilos… Hilos (threads) en un sistema operativo • Un thread es la entidad dentro de un proceso que realmente ejecuta el código. • Todos los threads de un proceso comparten los recursos y memoria virtual de proceso. • Además, cada thread mantiene controladores de excepciones, una prioridad de programación, almacenamiento local, y un identificador de thread único. • A más threads, más tiempo de CPU. 11
    • @lluisfranco ¿Multithreading vs. Parallelism? Multithreading: • Es crear varios threads en una aplicación (proceso) • Permite realizar tareas asíncronas al ‘mismo tiempo’ (aunque realmente no es así siempre). • No es trivial: – – – – Más complejidad del desarrollo Depuración caótica Acceso prohibido a la interfaz de usuario. Jamás en días de resaca! 12
    • @lluisfranco ¿Multithreading vs. Parallelism? Multithreading: 3 1 1 1 Una aplicación puede incrementar el número de threads para producir la sensación de que varias acciones se ejecutan al mismo tiempo. 13
    • @lluisfranco ¿Multithreading vs. Parallelism? Multithreading: 1 1 1 1 1 1 En términos absolutos, el primer proceso ha tenido mucho más tiempo de CPU que el resto de procesos. Pero si hay un solo core no hay paralelismo real. 14
    • @lluisfranco ¿Multithreading vs. Parallelism? Parallelism: 1 1 1 1 1 1 Es aplicar multithreading en un ordendor con varios cores, de forma que varios threads se pueden ejecutar al mismo tiempo. 15
    • @lluisfranco ¿Multithreading vs. Parallelism? • Conclusión: Se parece pero no es lo mismo • Podemos tener multithreading en una estación con un solo core, pero sólo podemos tener paralelismo real en una estación multi-core. • Error clásico: Como desarrolladores, utilizar paralelismo en una máquina virtual (con un solo core), y nos pensamos que estamos haciendo paralelismo ->NOR! 16
    • @lluisfranco ¿Multithreading vs. Parallelism? Esto SI es paralelismo  17
    • @lluisfranco ¿Multithreading vs. Parallelism? Y más vale que nos preparemos: 18
    • @lluisfranco Ok vale, soy tuyo  Las ventajas son claras. Peeeeeeero… • La programación paralela ha estado tradicionalmente asociada a desarrolladores de perfil técnico muy alto (cuatro zumbaos). • Las empresas de desarrollo prefieren centrarse en la lógica de su negocio, no en éstos detalles técnicos. Pues la buena noticia es que… • La versión 4.5 del .NET Framework proviene de ciertas herramientas para que la computación paralela no sea algo reservado a estos 4 frikazos. 19
    • @lluisfranco Las demos de hoy… Parallel • Optimizado para situaciones en las que se realiza la misma operación sobre los elementos de un origen de colección o matriz. LINQ - PLINQ • Proporciona extensiones del lenguaje para poder utilizar paralelismo en nuestras consultas LINQ. Sencillo y muy potente. TASKS - Task Concurrent Async/Await • Una tarea representa una operación asíncrona, se asemeja a la creación de un Thread o un ThreadPool, pero a un nivel más alto de abstracción. • Proporcionan mecanismos para compartir colecciones y elementos entre varios hilos de ejecución (Thread-safe). • Nuevas Keywords en C# para facilitar el uso de tareas asíncronas sin preocuparse de contextos ni de callbacks. • Syntax sugar  20
    • @lluisfranco Let’s rock! {Code Time} 21
    • @lluisfranco That’s all folks! Dubtes? Dudas? Doubts? Lluís Franco @lluisfranco facebook/lluis.franco hello@lluisfranco.com 22