Курсовая работа: Використання функціонального підходу при програмуванні розподілених задач для кластеру на прикладі технології DryadLINQ
Для реалізації консольної програми обчислення інтегралу 1/х методом Монте-Карло на кластері WindowsHPC2008 з використанням DryadLINQ програма перед початком роботи генерує випадкові точки в певному діапазоні записує їх у декілька текстових файлів кожен з яких потім копіюється на відповідний вузол.
Розглянемо виконання роботи Dryad на прикладі запиту DryadLINQ
PartitionedTable<LineRecord> table = PartitionedTable. Get<LineRecord> (uri);
IQueryable<string> table1 = table
. Select (s => s. line)
. Where (s => (1/ (fun (s. Split (' ') [0]))) > fun (s. Split (' ') [1]));
double result = (1. 000000 * table1. Count () * (x2-x1) * (y2-y1)) /lenght;
Спочатку зчитується файл метаданих де вказується кількість та місце знаходження частин розподілених даних які попередньо були скопійовані на відповідні вузли. Далі представляється IQueryable<string> у вигляді PartitionedTable<string>. В запиті DryadLINQреалізується вибірка тих текстових рядків в яких функція 1/xвід першого числа більша за друге число. Тут використовується функція fun яка переводить stringу doubleта функція Split з простору System. Text що розділяє стрічку на частини між якими був знак пробілу. Це реалізується двома методами Select та Where. Перший серед всієї сукупності вхідних діних виділяє рядок, а другий аналізує чи цей рядок задовольняє нашим умовам. Після цього підраховується кількість обраних рядків за допомогою методу Count.
Під час виконання роботи Dryadна консолі провайдер Dryadвиводить наступне:
Рис. 2.2
Як видно з рисунка провайдер Dryadвиводить:
- шлях стандартної папки виводу
- місце знаходження файлу метаданих
- елементи кожного рівня виконавчого графа Dryad
- інформація про стан підключення до кластера та погодження роботи на ньому
- інформується чи робота виконується (running) чи вона поки що в черзі (queued)
Після завершення виконання роботи Dryadна кластері провайдер Dryadповертає оброблені дані до програми.
Дана програма обчислення інтегралу методом Монте-Карло була запущена на різній кількості вузлів: від одного до шести.
|
Рис. 2.3. Залежність часу виконання роботи Dryadвід кількості задіяних вузлів.
Висновки
В результаті зробленого аналізу підходів до розробки паралельних програм було обґрунтовано доцільність створення нового, який передбачає покладання фонової роботи по розпаралеленню на інструментальні засоби, а не на розробника. Серед існуючих парадигм програмування було обрано парадигму функціонального програмування як таку що відповідає висунутим критеріям.
Внаслідок аналізу інструментальних засобів для створення функціонально орієнтованих програм було обрано DryadLINQ.
Реалізована обчислювальна задача методом Монте-Карло дозволила сформувати концепцію використання функціонального підходу у програмуванні для реалізації паралельних обчислювальних задач.
Перелік посилань
1. Windows® HPC Server 2008 Resource Kit: // http://resourcekit. windowshpc.net/home.html
2. DryadLINQ - Microsoft Research Project Page // http://research. microsoft.com/en-us/projects/dryadlinq/
3. Microsoft® Connect – Dryad// http://connect. microsoft.com/Dryad
4. Dryad - Microsoft Research Project Page // http://research. microsoft.com/en-us/projects/dryad/
5. Dryad and DryadLINQ for Data Intensive Research // http://research. microsoft.com/en-us/collaboration/tools/dryad. aspx
6. Intel - HPC: архитектура суперкомпьютеров и разновидности // http://ru. intel.com/business/community/? automodule=blog&blogid=6276&showentry=888
7. Russian Software Developer Network// http://www.rsdn.ru/
8. Language-Integrated Query (LINQ) // http://msdn. microsoft.com/en-us/library/bb397926. aspx
9. LINQ:.net Language-Integrated Query // http://msdn. microsoft.com/en-us/library/bb308959. aspx
10. Dryad and DryadLINQ team blogs // http://blogs. msdn.com/b/dryad/
11. Meijer E., Barga R. Introduction to Dryad and DryadLINQ // http://channel9. msdn.com/posts/Charles/Expert-to-Expert-Erik-Roger-Barga-Introduction-to-Dryad-and-DryadLINQ/
12. Vert J. Data-Intensive Computing on Windows HPC Server with the DryadLINQ Framework // http://microsoftpdc.com/Sessions/SVR17
13. Podwysocki M. Dryad/DryadLINQ and Project Trident Released
14. // http://weblogs. asp.net/podwysocki/archive/2009/07/16/dryad-dryadlinq-and-project-trident-released. aspx
15. Campbell D. Dryad and DryadLINQ: Academic Accelerators for Parallel Data Analysis // http://blogs. msdn.com/b/msr_er/archive/2010/02. aspx
16. Colaci A. Dryad and DryadLINQ for Data Intensive Research // http://blogs. msdn.com/b/lchong/archive/2009/09/23/dryad-and-dryadlinq-for-data-intensive-research. aspx
17. Chong L. Scaling out PLINQ: DryadLINQ at PDC09 and Supercomputing09 // http://blogs. msdn.com/b/pfxteam/archive/2009/11/11/9921066. aspx
Додатки
Додаток А
Текст глобального файлу конфігурації
<DryadLinqConfig>
<ClusterName>hnode </ClusterName>
<Cluster name="hnode "