Содержание
- 2. История создания Проект PVM был начат в 1989 году в Oak Ridge National Laboratory Первый релиз
- 3. Парадигма PVM pvmd pvmd pvmd
- 4. «Демон» pvmd «Отвечает» за работу на вычислительном узле. Используется для запуска, контроля и завершения заданий.
- 5. Работа пользователя в PVM Запуск PVM. Создание виртуальной машины. Запуск процесса приложения, который порождает другие процессы.
- 6. Запуск приложения pvmd3 pvmd3 pvmd3 app app
- 7. Консоль PVM Консоль PVM предоставляет возможность контроля всех процессов виртуальной машины. Она используется для конфигурирования параллельной
- 8. Управление виртуальной машиной с консоли pvm> add hostname добавление узла в виртуальную машину pvm> delete hostname
- 9. Работа с процессами pvm> spawn task запуск процесса с именем task pvm> kill tid прерывание выполнения
- 10. Другие команды консоли pvm> spawn task запуск процесса с именем task pvm> kill tid прерывание выполнения
- 11. Способы запуска приложения Из командной строки. Из консоли pvm на локальной или удаленной машине. Из приложения
- 12. Управление виртуальной машиной из консоли На машине должна быть установлена библиотека PVM. Должны существовать права для
- 13. Управление виртуальной машиной из программы int pvm_add_hosts(char** hosts, int nhosts, int* infos); hosts – список имен
- 14. Запуск процесса из консоли Предварительно скопировать в стандартный (или указанный для данной машины) каталог на нужной
- 15. int numt = pvm_spawn( char *task, char **argv, int flag, char *where, int ntask, int *tids
- 16. Различные примеры запуска процессов
- 17. Завершение задания Выход из параллельной машины: int pvm_exit(); стандартная последовательность вызова: pvm_exit(); exit(); Принудительное завершение процесса
- 18. Пример (hello.c) main() { int cc, tid, msgtag; char buf[100]; printf("i'm t%x\n", pvm_mytid()); cc = pvm_spawn("hello_other",
- 19. if (cc == 1) { msgtag = 1; pvm_recv(tid, msgtag); pvm_upkstr(buf); printf("from t%x: %s\n", tid, buf);
- 20. Пример (hello_other.c) #include "pvm3.h" main() { int ptid, msgtag; char buf[100]; ptid = pvm_parent();
- 21. strcpy(buf, "hello, world from "); gethostname(buf + strlen(buf), 64); msgtag = 1; pvm_initsend(PvmDataDefault); pvm_pkstr(buf); pvm_send(ptid, msgtag);
- 22. int tid = pvm_mytid( void ) Возвращает номер задания. Если процесс не включен в PVM, то
- 23. Обмен сообщениями Посылка: Инициализация буфера. Упаковка в буфер данных. Посылка данных. Прием: Прием данных в буфер.
- 24. Посылка сообщений. int bufid = pvm_initsend( int encoding ) Очищает буфер посылки сообщений и инициализирует кодировку.
- 25. Управление несколькими буферами PVM допускает существование нескольких буферов, из которых в данный момент может быть активен
- 26. Функции для управления несколькими буферами int pvm_mkbuf(int encoding) – создает буфер возвращает идентификатор созданного буфера int
- 27. Возможное применение нескольких буферов За счет переключения между буферами удается передавать сообщения без перекодировки: bufid =
- 28. Упаковка сообщений int info = pvm_pkbyte( char *cp, int nitem, int stride ) int info =
- 29. Посылка сообщений int info = pvm_send( int tid, int msgtag ) tid – идентификатор процесса приемника
- 30. Посылка сообщений int info = pvm_psend( int tid, void* p, int msgtag, int cnt, int typ)
- 31. Типы PVM_STR PVM_BYTE PVM_SHORT PVM_INT PVM_LONG PVM_ULONG PVM_FLOAT PVM_CPLX PVM_DOUBLE PVM_DCPLX PVM_UINT PVM_USHORT
- 32. Прием сообщений int bufid = pvm_recv( int tid, int msgtag ) tid – идентификатор процесса отправителя
- 33. Прием сообщений int bufid = pvm_trecv( int tid, int msgtag, struct timeval* timeout ) Прием по
- 34. Распаковка int info = pvm_upkbyte( char *cp, int nitem, int stride ) int info = pvm_upkcplx(
- 35. Прием + распаковка int pvm_precv( int tid, int msgtag, void *p, int cnt, int typ, int
- 36. Нотификация о событии int pvm_notify(int what, int msgtag, int cnt, int* tids) what – тип события
- 37. Нотификация о событии При возникновении запрашиваемого события процессу, вызывавшему pvm_notify, посылается сообщение с указанным тэгом. Сообщение
- 42. Скачать презентацию