Your SlideShare is downloading. ×
инструменты параллельного программирования
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

инструменты параллельного программирования

1,102
views

Published on

Published in: Education, Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,102
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • Transcript

    • 1. Инструменты параллельного программирования для .NET : ParallelFx, OpenMP и MPI.NET Александр Петров 445 группа Математико-механический факультет СПбГУ
    • 2. План
      • ParallelFx
      • OpenMP
      • MPI.NET
    • 3. ParallelFx : описание
      • Библиотека параллельных вычислений для управляемого кода
      • Текущее название: Parallel Extensions
        • Parallel LINQ (PLINQ)
        • Task Parallel Library (TPL)
        • Coordination Data Structures (CDS)
    • 4. ParallelFx : история
      • Microsoft Research и CLR team
      • CTP
        • 29 ноября 2007
      • Обновления CTP
        • декабрь 2007
        • июнь 2008
          • CDS
      • Официальный выход с .NET 4.0
    • 5. ParallelFx : PLINQ
      • Движок для параллельного выполнения запросов LINQ
        • Параллелизм запросов
          • LINQ - объекты
          • LINQ-X ML
      • Поддерживает все операторы LINQ
      • Требуется
        • Ссылки на сборку System.Concurrency.dll в ходе компиляции.
        • Обертывания источника данных в IParallelEnumerable<T> с вызовом метода расширения System.Linq.ParallelEnumerable.AsParallel.
    • 6. ParallelFx : PLINQ пример
      • IEnumerable<T> data = ...;
      • var q = data.Where(x => p(x)).Orderby(x => k(x)).Select(x => f(x));
      • foreach (var e in q) a(e);
      • IEnumerable<T> data = ...;
      • var q = data.AsParallel().Where(x => p(x)).Orderby(x => k(x)).Select(x => f(x));
      • foreach (var e in q) a(e);
    • 7. ParallelFx: TPL
      • Параллелизм на основе заданий ( task parallelism )
      • Task and Future
        • Task – это действие, которое может быть выполнено независимо от остальной программы
        • Future – это Task , который возвращает результат
      • Требуются механизмы синхронизации на общую память
    • 8. ParallelFx: TPL пример
      • for (int i = 0; i < 100; i++)
      • {
      • a[i] = a[i]*a[i];
      • }
      • Parallel.For(0, 100, delegate(int i)
      • { a[i] = a[i]*a[i]; });
    • 9. ParallelFx : CDS
      • Структуры данных
        • Легковесные
        • Масштабируемые
        • Безопасные
          • ConcurrentStack
      • Синхронизационные примитивы
        • Высокоуровневые
        • Легковесные
          • SemaphoreSlim
            • Оптимизирован для короткого времени ожидания
    • 10. План
      • ParallelFx
      • OpenMP
      • MPI.NET
    • 11. OpenMP
      • Интерфейс для программирования на SMP- системах в модели общей памяти (shared memory model).
      • Спецификации стандарта OpenMP
        • набор директив компилятора
        • набор процедур
        • набор переменных среды
      • Компилятор с поддержкой OpenMP
      • .NET
        • Visual C++.NET 2005
        • OpenMP 2.0
    • 12. OpenMP пример
      • i nt j;
      • #pragma omp parallel for
      • for ( j = 0; j < ARRAY_SIZE; j++);
      • array[j] +=j;
    • 13. Visual C++ OpenMP пример
      • // omp_in_parallel.cpp
      • // compile with: /openmp
      • #include <stdio.h>
      • #include <omp.h>
      • int main( )
      • {
      • omp_set_num_threads(4);
      • printf_s(&quot;%d &quot;, omp_in_parallel( ));
      • #pragma omp parallel
      • #pragma omp master
      • {
      • printf_s(&quot;%d &quot;, omp_in_parallel( ));
      • }
      • }
    • 14. План
      • ParallelFx
      • OpenMP
      • MPI.NET
    • 15. MPI
      • MPI ( Message Passing Interface )
        • Параллелизм на основе передачи сообщений
        • SPMD
        • Системы с распределенной памятью
          • Кластерные вычисления
          • Грид вычисления
        • С/С++, Fortran
        • MPICH, MPICH2
    • 16. MPI.NET
      • Реализация MPI для .NET
        • MS-MPI
        • Microsoft HPC Server 2008
        • Windows Compute Cluster Server 2003 (CCS)
        • MPI.NET SDK
          • Microsoft Compute Cluster Pack SDK
    • 17. MPI.NET : пример 1
      • using System;
      • using MPI;
      • class MPIHello {
      • static void Main(string[] args)
      • {
      • using (new MPI.Environment(ref args)) {
      • Console.WriteLine(&quot;Hello, World! from rank &quot; + Communicator.world.Rank +
      • &quot;(running on &quot; + MPI.Environment.ProcessorName + &quot;)&quot;);
      • }
      • }
      • }
    • 18. MPI.NET : пример 2
      • using System;
      • using MPI;
      • class Ring {
      • static void Main(string[] args)
      • {
        • using (new MPI.Environment(ref args))
        • {
        • Intracommunicator comm = Communicator.world;
        • if (comm.Rank == 0)
        • {
        • // program for rank 0
        • }
        • else // not rank 0
        • {
        • // program for all other ranks
        • }
        • }}
    • 19. Спасибо за внимание Презентация на Slideshare : http://www.slideshare.net/alex_petrov
    • 20. Ссылки Parallel Extensions
      • http :// blogs.msdn.com / pfxteam /
      • http ://blogs.msdn.com/somasegar/archive/2008/06/02/june-2008-ctp-parallel-extensions-to-the-net-fx.aspx
    • 21. Ссылки PLINQ
      • http://msdn.microsoft.com/ru-ru/magazine/cc163329.aspx
    • 22. Ссылки TPL
      • http://blogs.msdn.com/pfxteam/
    • 23. Ссылки CDS
      • http://blogs.msdn.com/pfxteam/archive/2008/06/18/8620615.aspx
      • http://blogs.msdn.com/pfxteam/archive/2008/06/18/8614596.aspx
    • 24. Ссылки OpenMP
      • http://www.parallel.ru/tech/tech_dev/openmp.html
      • http://software.intel.com/ru-ru/articles/choosing-between-openmp-and-explicit-threading-methods/
      • http://blogs.msdn.com/vijay/archive/2007/04/04/using-openmp-in-visual-c-net-2005.aspx
      • http://blogs.msdn.com/vijay/archive/2007/04/04/using-openmp-in-visual-c-net-2005.aspx
    • 25. Ссылки MPI.NET
      • http://www.osl.iu.edu/research/mpi.net/
      • http://www.codeplex.com/mpinet
      • MPI: http://www.parallel.ru/tech/tech_dev/mpi.html
      • MPICH2: http://www.mcs.anl.gov/research/projects/mpich2/

    ×