1 / 28

Computación paralela en plataforma Windows

Computación paralela en plataforma Windows. Luis Guerrero lguerrero@plainconcepts.com http://geeks.ms/blogs/luisguerrero/. http://bit.ly/ TPLCodeMotion. Agenda. El porqué de la computación paralela. Buscando paralelismo en nuestras aplicaciones.

sondra
Download Presentation

Computación paralela en plataforma Windows

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Computación paralela en plataforma Windows Luis Guerrero lguerrero@plainconcepts.com http://geeks.ms/blogs/luisguerrero/

  2. http://bit.ly/TPLCodeMotion

  3. Agenda • El porqué de la computación paralela. • Buscando paralelismo en nuestras aplicaciones. • Plataforma de computación paralela en Visual Studio 2010 y Windows 8. • Soporte de depuradores y profilers.

  4. Computación paralela ¿Por qué?

  5. Cada año hay procesadores más rápidos con más núcleos • Transitors • Clock Speed (MHz) • Power (W) • Perf/Clock (ILP)

  6. ¿Para cuantos cores se está programando?

  7. ¿Qué nivel de concurrencia necesita tu software para explotar sus capacidades? C/S S T/C A App Concurrency Cores / Socket Socket Hardware Threads / Core

  8. Computación paralela Buscando paralelismo en nuestras aplicaciones

  9. Buscando paralelismo • Buscando paralelismo en nuestras aplicaciones a través de: • Organización por tareas • Organización por datos • Organización por orden

  10. Organización por Tareas • ¿Linear o recursivo? • Tareas paralelas • Divide y vencerás • ¿Límite en las tareas? • ¿Demasiadas? – Sobrecarga del programador de tareas. • ¿Pocas? – Infrautilización. • Dependencias entre las tareas • Planificar trabajo como tareas.

  11. Organización por datos • ¿Linear o recursivo? • Descomposición geométrica • Datos recursivos • ¿Tamaño del bloque de datos? • Demasiado grande – infrautilización • Demasiado pequeño – Sobrecarga • Organización de los bloques • Tamaño de la caché de datos

  12. Patrones • Patrones de código • Fork / Join • LoopParallel • Divide y vencerás • Productor / Consumidor • Pipeline • AsynchronousAgents

  13. Pattern: Fork / Join

  14. Presentamos TaskParallel Library

  15. Task • Es la nueva unidad mínima de ejecución en TPL, ya no se utiliza Thread. • Las tareas (Task) envuelven la ejecución del código, para su ejecución concurrente.

  16. Creación de Task • Tasktask = newTask(() => { }); • Task<DataItem> taskWithResult = newTask<DataItem>(() => { returnnewDataItem(); }); • Esto sólo define el objeto Task, no ejecuta el código.

  17. Creación de Task II • Task.Factory.StartNew(() => { }); • Task<int>.Factory.StartNew(() => { return 42; }); • Este código define y pone a ejecutar el objeto Task.

  18. Trabajando con tareas • task.Start(); • task.RunSynchronously(); • task.Status== TaskStatus.Running; • task.IsCompleted; • task.IsFaulted;

  19. Enlazando tareas • Tasktask = newTask(() => { }); • task.ContinueWith((previousTask) => { });

  20. Soporte de cancelación de tareas • La cancelación ha sido uno de los problemas tradicionales de la programación concurrente. • No se puede interrumpir la ejecución en cualquier momento, puede ocasionar bloqueos inesperados. • Se utiliza la clase CancellationToken.

  21. Uso de bloqueos • ReaderWriterLockSlimrwls = newReaderWriterLockSlim(); • rwls.EnterReadLock(); • try • { • // tucódigoaquí • } • finally • { • rwls.ExitReadLock(); • }

  22. PLINQ Parallel LINQ

  23. PLINQ var q = from p in people         where p.Name == queryInfo.Name && p.State == queryInfo.State && p.Year >= yearStart && p.Year <= yearEnd orderbyp.Year ascending         select p; .AsParallel()

  24. Más opciones de PLINQ • list.AsParallel().WithCancellation(newCancellationToken(false)); • list.AsParallel().WithDegreeOfParallelism(Environment.ProcessorCount); • list.AsParallel().WithExecutionMode(ParallelExecutionMode.ForceParallelism); • list.AsParallel().WithMergeOptions(ParallelMergeOptions.AutoBuffered);

  25. Windows 8 Metro apps Async & await

  26. Async & await • Async permite especificar que un método es de ejecución asíncrona. Un método asíncrono siempre devolverá un Task o Task<TResult>. • Await especifica que el flujo de ejecución debe esperar a ese método asíncrono.

  27. Profiler & Debugger

  28. Gracias 

More Related