SlideShare una empresa de Scribd logo
1 de 22
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

Más contenido relacionado

Destacado

PG-Strom - A FDW module utilizing GPU device
PG-Strom - A FDW module utilizing GPU devicePG-Strom - A FDW module utilizing GPU device
PG-Strom - A FDW module utilizing GPU deviceKohei KaiGai
 
TPL Dataflow – зачем и для кого?
TPL Dataflow – зачем и для кого?TPL Dataflow – зачем и для кого?
TPL Dataflow – зачем и для кого?GoSharp
 
SQL+GPU+SSD=∞ (English)
SQL+GPU+SSD=∞ (English)SQL+GPU+SSD=∞ (English)
SQL+GPU+SSD=∞ (English)Kohei KaiGai
 
Module 3: Introduction to LINQ (PowerPoint Slides)
Module 3: Introduction to LINQ (PowerPoint Slides)Module 3: Introduction to LINQ (PowerPoint Slides)
Module 3: Introduction to LINQ (PowerPoint Slides)Mohamed Saleh
 
An Intelligent Storage?
An Intelligent Storage?An Intelligent Storage?
An Intelligent Storage?Kohei KaiGai
 
20170127 JAWS HPC-UG#8
20170127 JAWS HPC-UG#820170127 JAWS HPC-UG#8
20170127 JAWS HPC-UG#8Kohei KaiGai
 
GPGPU Accelerates PostgreSQL (English)
GPGPU Accelerates PostgreSQL (English)GPGPU Accelerates PostgreSQL (English)
GPGPU Accelerates PostgreSQL (English)Kohei KaiGai
 
PL/CUDA - Fusion of HPC Grade Power with In-Database Analytics
PL/CUDA - Fusion of HPC Grade Power with In-Database AnalyticsPL/CUDA - Fusion of HPC Grade Power with In-Database Analytics
PL/CUDA - Fusion of HPC Grade Power with In-Database AnalyticsKohei KaiGai
 
Convolutional Neural Network (CNN) presentation from theory to code in Theano
Convolutional Neural Network (CNN) presentation from theory to code in TheanoConvolutional Neural Network (CNN) presentation from theory to code in Theano
Convolutional Neural Network (CNN) presentation from theory to code in TheanoSeongwon Hwang
 
Convolutional Neural Networks (CNN)
Convolutional Neural Networks (CNN)Convolutional Neural Networks (CNN)
Convolutional Neural Networks (CNN)Gaurav Mittal
 
Introduccion a LINQ
Introduccion a LINQIntroduccion a LINQ
Introduccion a LINQTonymx
 

Destacado (15)

PG-Strom - A FDW module utilizing GPU device
PG-Strom - A FDW module utilizing GPU devicePG-Strom - A FDW module utilizing GPU device
PG-Strom - A FDW module utilizing GPU device
 
TPL Dataflow – зачем и для кого?
TPL Dataflow – зачем и для кого?TPL Dataflow – зачем и для кого?
TPL Dataflow – зачем и для кого?
 
SQL+GPU+SSD=∞ (English)
SQL+GPU+SSD=∞ (English)SQL+GPU+SSD=∞ (English)
SQL+GPU+SSD=∞ (English)
 
Module 3: Introduction to LINQ (PowerPoint Slides)
Module 3: Introduction to LINQ (PowerPoint Slides)Module 3: Introduction to LINQ (PowerPoint Slides)
Module 3: Introduction to LINQ (PowerPoint Slides)
 
An Intelligent Storage?
An Intelligent Storage?An Intelligent Storage?
An Intelligent Storage?
 
20170127 JAWS HPC-UG#8
20170127 JAWS HPC-UG#820170127 JAWS HPC-UG#8
20170127 JAWS HPC-UG#8
 
LINQ
LINQLINQ
LINQ
 
Linq
LinqLinq
Linq
 
Understanding linq
Understanding linqUnderstanding linq
Understanding linq
 
GPGPU Accelerates PostgreSQL (English)
GPGPU Accelerates PostgreSQL (English)GPGPU Accelerates PostgreSQL (English)
GPGPU Accelerates PostgreSQL (English)
 
PL/CUDA - Fusion of HPC Grade Power with In-Database Analytics
PL/CUDA - Fusion of HPC Grade Power with In-Database AnalyticsPL/CUDA - Fusion of HPC Grade Power with In-Database Analytics
PL/CUDA - Fusion of HPC Grade Power with In-Database Analytics
 
Convolutional Neural Network (CNN) presentation from theory to code in Theano
Convolutional Neural Network (CNN) presentation from theory to code in TheanoConvolutional Neural Network (CNN) presentation from theory to code in Theano
Convolutional Neural Network (CNN) presentation from theory to code in Theano
 
Linq
LinqLinq
Linq
 
Convolutional Neural Networks (CNN)
Convolutional Neural Networks (CNN)Convolutional Neural Networks (CNN)
Convolutional Neural Networks (CNN)
 
Introduccion a LINQ
Introduccion a LINQIntroduccion a LINQ
Introduccion a LINQ
 

Similar a Task Parallel Library 2014

News40 Parallel Computing
News40 Parallel ComputingNews40 Parallel Computing
News40 Parallel ComputingLluis Franco
 
Concurrencia y asincronía: Lenguajes, modelos y rendimiento: GDG Toledo Enero...
Concurrencia y asincronía: Lenguajes, modelos y rendimiento: GDG Toledo Enero...Concurrencia y asincronía: Lenguajes, modelos y rendimiento: GDG Toledo Enero...
Concurrencia y asincronía: Lenguajes, modelos y rendimiento: GDG Toledo Enero...Micael Gallego
 
Multithreading a la manera de Delphi
Multithreading a la manera de DelphiMultithreading a la manera de Delphi
Multithreading a la manera de DelphiMayra Mendieta
 
Conceptos básicos y aplicaciones prácticas de programación para SEO
Conceptos básicos y aplicaciones prácticas de programación para SEOConceptos básicos y aplicaciones prácticas de programación para SEO
Conceptos básicos y aplicaciones prácticas de programación para SEOnacho mascort
 
Como hacer que tus aplicaciones saquen mejor provecho a los procesadores disp...
Como hacer que tus aplicaciones saquen mejor provecho a los procesadores disp...Como hacer que tus aplicaciones saquen mejor provecho a los procesadores disp...
Como hacer que tus aplicaciones saquen mejor provecho a los procesadores disp...Andrés Iturralde
 
arquitectura del computador
arquitectura del computador arquitectura del computador
arquitectura del computador baryruiz
 
arquitectura del computador 1
arquitectura del computador 1arquitectura del computador 1
arquitectura del computador 1baryruiz
 
arquitectura del computador
arquitectura del computador arquitectura del computador
arquitectura del computador baryruiz
 
Equipo 2 - Exposición.pptx
Equipo 2 - Exposición.pptxEquipo 2 - Exposición.pptx
Equipo 2 - Exposición.pptxJuanVaggom
 
Aprenda ansi-c-como-si-estuviera-en-primero
Aprenda ansi-c-como-si-estuviera-en-primeroAprenda ansi-c-como-si-estuviera-en-primero
Aprenda ansi-c-como-si-estuviera-en-primeroDuban Garces
 
Aprenda-ANSI-C-Como-si-estuviera-en-primero.pdf
Aprenda-ANSI-C-Como-si-estuviera-en-primero.pdfAprenda-ANSI-C-Como-si-estuviera-en-primero.pdf
Aprenda-ANSI-C-Como-si-estuviera-en-primero.pdfPablo Narvaez
 
Software libre y modelos de programación en la investigación con supercomputa...
Software libre y modelos de programación en la investigación con supercomputa...Software libre y modelos de programación en la investigación con supercomputa...
Software libre y modelos de programación en la investigación con supercomputa...Andrés Gómez
 
Cap i sistemas operativos (1)
Cap i sistemas operativos (1)Cap i sistemas operativos (1)
Cap i sistemas operativos (1)informatico tic
 
Inf 324 01 01 Historia y Evolución de los Sistemas Operativos
Inf 324 01 01 Historia y Evolución de los Sistemas OperativosInf 324 01 01 Historia y Evolución de los Sistemas Operativos
Inf 324 01 01 Historia y Evolución de los Sistemas Operativoseladiareyes
 
Introduccion a la computación paralela
Introduccion a la computación paralelaIntroduccion a la computación paralela
Introduccion a la computación paralelaRene Guaman-Quinche
 
The Original Hacker número 6.
The Original Hacker número 6.The Original Hacker número 6.
The Original Hacker número 6.Huehue 1
 

Similar a Task Parallel Library 2014 (20)

News40 Parallel Computing
News40 Parallel ComputingNews40 Parallel Computing
News40 Parallel Computing
 
Introducción a la Computacion paralela
Introducción a la Computacion paralelaIntroducción a la Computacion paralela
Introducción a la Computacion paralela
 
Concurrencia y asincronía: Lenguajes, modelos y rendimiento: GDG Toledo Enero...
Concurrencia y asincronía: Lenguajes, modelos y rendimiento: GDG Toledo Enero...Concurrencia y asincronía: Lenguajes, modelos y rendimiento: GDG Toledo Enero...
Concurrencia y asincronía: Lenguajes, modelos y rendimiento: GDG Toledo Enero...
 
Multithreading a la manera de Delphi
Multithreading a la manera de DelphiMultithreading a la manera de Delphi
Multithreading a la manera de Delphi
 
Conceptos básicos y aplicaciones prácticas de programación para SEO
Conceptos básicos y aplicaciones prácticas de programación para SEOConceptos básicos y aplicaciones prácticas de programación para SEO
Conceptos básicos y aplicaciones prácticas de programación para SEO
 
Como hacer que tus aplicaciones saquen mejor provecho a los procesadores disp...
Como hacer que tus aplicaciones saquen mejor provecho a los procesadores disp...Como hacer que tus aplicaciones saquen mejor provecho a los procesadores disp...
Como hacer que tus aplicaciones saquen mejor provecho a los procesadores disp...
 
arquitectura del computador
arquitectura del computador arquitectura del computador
arquitectura del computador
 
arquitectura del computador 1
arquitectura del computador 1arquitectura del computador 1
arquitectura del computador 1
 
arquitectura del computador
arquitectura del computador arquitectura del computador
arquitectura del computador
 
Equipo 2 - Exposición.pptx
Equipo 2 - Exposición.pptxEquipo 2 - Exposición.pptx
Equipo 2 - Exposición.pptx
 
Aprenda ansi-c-como-si-estuviera-en-primero
Aprenda ansi-c-como-si-estuviera-en-primeroAprenda ansi-c-como-si-estuviera-en-primero
Aprenda ansi-c-como-si-estuviera-en-primero
 
Aprenda-ANSI-C-Como-si-estuviera-en-primero.pdf
Aprenda-ANSI-C-Como-si-estuviera-en-primero.pdfAprenda-ANSI-C-Como-si-estuviera-en-primero.pdf
Aprenda-ANSI-C-Como-si-estuviera-en-primero.pdf
 
Computo Distribuído
Computo DistribuídoComputo Distribuído
Computo Distribuído
 
Software libre y modelos de programación en la investigación con supercomputa...
Software libre y modelos de programación en la investigación con supercomputa...Software libre y modelos de programación en la investigación con supercomputa...
Software libre y modelos de programación en la investigación con supercomputa...
 
Cap i sistemas operativos (1)
Cap i sistemas operativos (1)Cap i sistemas operativos (1)
Cap i sistemas operativos (1)
 
computación paralela
computación paralelacomputación paralela
computación paralela
 
Intro (1)
Intro (1)Intro (1)
Intro (1)
 
Inf 324 01 01 Historia y Evolución de los Sistemas Operativos
Inf 324 01 01 Historia y Evolución de los Sistemas OperativosInf 324 01 01 Historia y Evolución de los Sistemas Operativos
Inf 324 01 01 Historia y Evolución de los Sistemas Operativos
 
Introduccion a la computación paralela
Introduccion a la computación paralelaIntroduccion a la computación paralela
Introduccion a la computación paralela
 
The Original Hacker número 6.
The Original Hacker número 6.The Original Hacker número 6.
The Original Hacker número 6.
 

Más de Lluis Franco

Bienvenida al GAPAND 2016
Bienvenida al GAPAND 2016Bienvenida al GAPAND 2016
Bienvenida al GAPAND 2016Lluis Franco
 
Async best practices DotNet Conference 2016
Async best practices DotNet Conference 2016 Async best practices DotNet Conference 2016
Async best practices DotNet Conference 2016 Lluis Franco
 
Async Best Practices
Async Best PracticesAsync Best Practices
Async Best PracticesLluis Franco
 
Novetats Visual Studio 2010
Novetats Visual Studio 2010Novetats Visual Studio 2010
Novetats Visual Studio 2010Lluis Franco
 
Codecamp 2009 Qué Hay De Nuevo Viejo
Codecamp 2009   Qué Hay De Nuevo ViejoCodecamp 2009   Qué Hay De Nuevo Viejo
Codecamp 2009 Qué Hay De Nuevo ViejoLluis Franco
 
Andorra Dot Net Event4 Assentant Bases
Andorra Dot Net  Event4  Assentant BasesAndorra Dot Net  Event4  Assentant Bases
Andorra Dot Net Event4 Assentant BasesLluis Franco
 

Más de Lluis Franco (7)

Bienvenida al GAPAND 2016
Bienvenida al GAPAND 2016Bienvenida al GAPAND 2016
Bienvenida al GAPAND 2016
 
Async best practices DotNet Conference 2016
Async best practices DotNet Conference 2016 Async best practices DotNet Conference 2016
Async best practices DotNet Conference 2016
 
Async Best Practices
Async Best PracticesAsync Best Practices
Async Best Practices
 
Infoxication
InfoxicationInfoxication
Infoxication
 
Novetats Visual Studio 2010
Novetats Visual Studio 2010Novetats Visual Studio 2010
Novetats Visual Studio 2010
 
Codecamp 2009 Qué Hay De Nuevo Viejo
Codecamp 2009   Qué Hay De Nuevo ViejoCodecamp 2009   Qué Hay De Nuevo Viejo
Codecamp 2009 Qué Hay De Nuevo Viejo
 
Andorra Dot Net Event4 Assentant Bases
Andorra Dot Net  Event4  Assentant BasesAndorra Dot Net  Event4  Assentant Bases
Andorra Dot Net Event4 Assentant Bases
 

Último

Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 

Último (10)

Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 

Task Parallel Library 2014

  • 1. 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
  • 2. @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
  • 3. @lluisfranco ¿Que es la programación paralela? ¿Esto? 3
  • 4. @lluisfranco ¿Que es la programación paralela? ¿Esto? 4
  • 5. @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
  • 6. @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
  • 7. @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!!!
  • 8. @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
  • 9. @lluisfranco Antes de empezar... Vamos a aclarar algunos conceptos: 9
  • 10. @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
  • 11. @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
  • 12. @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
  • 13. @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
  • 14. @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
  • 15. @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
  • 16. @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
  • 18. @lluisfranco ¿Multithreading vs. Parallelism? Y más vale que nos preparemos: 18
  • 19. @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
  • 20. @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
  • 22. @lluisfranco That’s all folks! Dubtes? Dudas? Doubts? Lluís Franco @lluisfranco facebook/lluis.franco hello@lluisfranco.com 22