Язык Charm ++. Идеология Charm++ Charm++ - объектно-ориентированный язык программирования (расширение Си++), ориентированный на вычисления, управляемые.

Презентация:



Advertisements
Похожие презентации
Язык Charm ++. Идеология Charm++ Charm++ - объектно-ориентированный язык программирования (расширение Си++), ориентированный на вычисления, управляемые.
Advertisements

Основы информатики Классы Заикин Олег Сергеевич zaikin.all24.org
©Павловская Т.А. (СПбГУ ИТМО) Курс «С#. Программирование на языке высокого уровня» Павловская Т.А.
Основы объектно-ориентированного программирования (ООП)
ОБЪЕКТНО- ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ (ООП) 1.
Лекция 4. Введение в С++ Наследование, множественное наследование. Конструкторы, деструкторы. Виртуальные функции.
ООП Классы Данные отдельно, методы отдельно struct Node { Node* next; void* data; }; struct List { Node* first; int size; }; void* allocate() { … } void.
Лекция 13. Введение в ООП. Часть 4 Красс Александр СПбГУ ИТМО, 2008.
Прикладное программирование кафедра прикладной и компьютерной оптики Наследование.
Преобразования типов В языке C/C++ имеется несколько операций преобразования типов. Они используются в случае, если переменная одного типа должна рассматриваться.
Общие процедуры. Модульный принцип построения проекта Visual Basic Автор: Сергиенко Е.В. Учитель информатики МОУ СОШ 5.
Тема 5. Введение в среду визуального программирования Borland Delphi 7.0.
Параллельное программирование с использованием технологии OpenMP Аксёнов Сергей Владимирович к.т.н., доцент каф.ОСУ ТПУ Томский политехнический университет.
Полиморфизм. Полиморфизм – это свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.
1 Java 6. ИНТЕРФЕЙСЫ И ВНУТРЕННИЕ КЛАССЫ. 2 Интерфейсы Не являются классами Ни один из объявленных методов не может быть реализован внутри интерфейса.
ДонНУ, кафедра КТ, проф.В.К.Толстых Web-службы (Web-сервисы) введение введение Разработка в среде Delphi Из цикла лекций «Internet-технологии разработки.
Объектно-ориентированное программирование С++. Лекция 6 Карпов В.Э.
Прикладное программирование кафедра прикладной и компьютерной оптики Абстрактные типы данных.
ФИЛОСОФИЯ.NET Любому современному программисту, который желает идти в ногу с последними веяниями, каждые несколько лет приходится переучиваться.
1 © Luxoft Training 2012 Java: расширенные вопросы Модуль #8.
Транксрипт:

Язык Charm ++

Идеология Charm++ Charm++ - объектно-ориентированный язык программирования (расширение Си++), ориентированный на вычисления, управляемые потоком данных (data-driven computations).

Историческая справка Начало работ – конец 80-х годов в лаборатории параллельного программирования университета Illionois Urbana-Campaighn Первая открытая реализация – 1993 В годах добавлены возможности динамической балансировки и перемещаемые объекты

Сущности Charm++ «Последовательные» объекты «Распределяемые» объекты (chare) Сообщения Группы объектов Массивы объектов

Составляющие Charm++ приложения Файлы с описанием интерфейса ко всем объектам, кроме последовательных. Файлы с реализацией интерфейсов на Си ++. Компилятор Charm++ транслирует модули описания интерфейсов в код на Си++.

Модель выполнения Charm ++ приложения узел процессор

Создание объектов Charm ++ RTS mainchare chare

Распределяемые объекты Charm ++ Помимо обычных методов присутствует один или более входных (entry) методов, используемых для удаленного вызова.

«Главные» объекты (mainchare) Один или несколько типов объектов должны наследовать mainchare. Они создаются системой поддержки времени выполнения в начале выполнения программы на процессоре с номером 0.

Описание в интерфейсном модуле Один или несколько типов объектов должны наследовать mainchare. В интерфейсном модуле описание выглядит так: mainchare HelloMain { entry HelloMain(); entry void printDone(); };

Реализация Конструктор главного объекта имеет параметр по- умолчанию типа CkArgMsg*, через который передаются параметры командной строки: HelloMain(CkArgMsg* m){ delete m; mCount = atoi(m->argv[1]); }

Взаимодействие объектов Взаимодействие с объектом происходит через удаленный вызов методов. При этом параметры запаковываются и пересылаются на процессор, содержащий удаленный объект. Вызов асинхронный и без ожидания результата. прокси объект

hello.ci mainmodule Hello { readonly CProxy_HelloMain mainproxy; mainchare HelloMain { entry HelloMain(); entry void printDone(); }; chare Slave { entry Slave(); entry void hello(int); } };

hello.C #include #include "Hello.decl.h CProxy_HelloMain mainproxy; class HelloMain : public Chare{ public: HelloMain(CkArgMsg* m) { delete m; mCount = atoi(m->argv[1]); ckout << "Running " << CkNumPes() << " processors on " << CkNumNodes() << " nodes " << endl; mainproxy = thishandle; for(int i = 0; i < mCount; i ++) { CProxy_Slave proxy = CProxy_Slave::ckNew(); proxy.hello(i); } }

void printDone() { mCount --; if(mCount == 0) CkExit(); } private: int mCount; }; class Slave : public Chare { public: Slave() {} void hello(int i) { ckout << "Hello from " << i << " on " << CkMyPe() << " processor " <<endl; mainproxy.printDone(); } }; #include "Hello.def.h"

Компиляция в Charm++ CHARM=/home/posypkin/UTILS/charm-5.8/bin/charmc hello: hello.o $(CHARM) -o hello hello.o -language charm++ hello.o: hello.C $(CHARM) -c hello.C hello.C: Hello.decl.h Hello.def.h touch hello.C Hello.decl.h Hello.def.h: hello.ci $(CHARM) hello.ci