- Главная
- Информатика
- Упаковка-распаковка данных для передачи

Содержание
- 2. Упаковка-распаковка данных для передачи Для компактной пересылки разнородных данных можно использовать операции упаковки и распаковки данных.
- 3. Н.Новгород, 2005 г. Основы параллельных вычислений: Моделирование и анализ параллельных вычислений © Гергель В.П. из 51
- 4. Упаковка-распаковка данных для передачи Пересылка упакованных данных Буфер для упаковки – buf [buflen] - массив типа
- 5. int MPI_Unpack (void *buf, int buflen, int *bufpos, void *data, int count, MPI_Datatype type, MPI_Comm comm);
- 6. Н.Новгород, 2005 г. Основы параллельных вычислений: Моделирование и анализ параллельных вычислений © Гергель В.П. из 51
- 7. Н.Новгород, 2005 г. Основы параллельных вычислений: Моделирование и анализ параллельных вычислений © Гергель В.П. из 51
- 8. char buf[100]; int pos; float a; int n; int mas[6]; ... if (rank == 0){ printf("Enter
- 10. Скачать презентацию
Слайд 2Упаковка-распаковка данных для передачи
Для компактной пересылки разнородных данных можно использовать операции
Упаковка-распаковка данных для передачи
Для компактной пересылки разнородных данных можно использовать операции

Для операций упаковки и распаковки используются функции MPI_Pack и MPI_Unpack.
Слайд 3Н.Новгород, 2005 г.
Основы параллельных вычислений: Моделирование и анализ параллельных вычислений
© Гергель
Н.Новгород, 2005 г.
Основы параллельных вычислений: Моделирование и анализ параллельных вычислений © Гергель

из 51
Упаковка-распаковка данных для передачи
Функция упаковки
int MPI_Pack ( void *data, int count, MPI_Datatype type,
void *buf, int buflen, int *bufpos, MPI_Comm comm),
где
- data – буфер памяти с элементами для упаковки,
- count – количество элементов в буфере,
- type – тип данных для упаковываемых элементов,
- buf - буфер памяти для упаковки,
- buflen – размер буфера в байтах,
- bufpos – позиция для начала записи в буфер (в байтах от начала буфера),
- comm - коммуникатор для упакованного сообщения.
Функция выполняет упаковку count элементов типа type из массива data в массив buf со сдвигом bufpos. После выполнения функции параметр bufpos увеличивается на число байт, равное размеру помещенных в буфер данных.
Слайд 4Упаковка-распаковка данных для передачи
Пересылка упакованных данных
Буфер для упаковки – buf [buflen] -
Упаковка-распаковка данных для передачи
Пересылка упакованных данных
Буфер для упаковки – buf [buflen] -

Пересылка буфера с упакованными данными производится любой функцией передачи (индивидуальной или коллективной). Должен использоваться тип данных MPI_PACKED.
Слайд 5int MPI_Unpack (void *buf, int buflen, int *bufpos,
void *data, int
int MPI_Unpack (void *buf, int buflen, int *bufpos,
void *data, int

где
- data – буфер памяти с элементами для распаковки,
- count – количество элементов в этом буфере,
- type – тип данных для распаковываемых элементов,
- buf - буфер памяти для распаковки,
- buflen – размер буфера в байтах,
- bufpos – позиция для начала записи в буфер (в байтах от начала буфера),
- comm - коммуникатор для упакованного сообщения.
Упаковка-распаковка данных для передачи
Функция распаковки
Функция выполняет распаковку count элементов типа type из массива buf со сдвигом bufpos байт от начала массива в массив data. После выполнения функции параметр bufpos увеличивается на число байт, равное размеру считанных данных.
Слайд 6Н.Новгород, 2005 г.
Основы параллельных вычислений: Моделирование и анализ параллельных вычислений
© Гергель
Н.Новгород, 2005 г.
Основы параллельных вычислений: Моделирование и анализ параллельных вычислений © Гергель

из 51
Упаковка-распаковка данных для передачи.
Пояснение
Слайд 7Н.Новгород, 2005 г.
Основы параллельных вычислений: Моделирование и анализ параллельных вычислений
© Гергель
Н.Новгород, 2005 г.
Основы параллельных вычислений: Моделирование и анализ параллельных вычислений © Гергель

из 51
Упаковка-распаковка данных для передачи
Формирование сообщений при помощи упаковки и распаковки данных…
Вызов функции MPI_Pack осуществляется последовательно для упаковки всех необходимых данных. Если в сообщение должны входить данные a,b,c, то для их упаковки необходимо выполнить:
Для распаковки упакованных данных необходимо выполнить:
bufpos = 0;
MPI_Pack(a,1,MPI_DOUBLE,buf,buflen,&bufpos,comm);
MPI_Pack(b,1,MPI_DOUBLE,buf,buflen,&bufpos,comm);
MPI_Pack(n,1,MPI_INT,buf,buflen,&bufpos,comm);
bufpos = 0;
MPI_Unpack(buf,buflen,&bufpos,a,1,MPI_DOUBLE,comm);
MPI_Unpack(buf,buflen,&bufpos,b,1,MPI_DOUBLE,comm);
MPI_Unpack(buf,buflen,&bufpos,n,1,MPI_INT,comm);
Слайд 8 char buf[100]; int pos;
float a; int n; int mas[6];
...
if (rank == 0){
printf("Enter a,
char buf[100]; int pos;
float a; int n; int mas[6];
...
if (rank == 0){
printf("Enter a,
![char buf[100]; int pos; float a; int n; int mas[6]; ... if](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/913600/slide-7.jpg)
scanf("%f %i", &a, &n);
printf(“Enter 6 elements of array \n");
for(i=0;i<6;i++)
scanf("%i",&mas[i]);
/* упаковка a, n и массива mas из 6 элементов */
pos = 0;
MPI_Pack(&a, 1, MPI_FLOAT, &buf, 100, &pos, MPI_COMM_WORLD);
MPI_Pack(&n, 1, MPI_INT, &buf, 100, &pos, MPI_COMM_WORLD);
MPI_Pack(&mas, 6, MPI_INT, &buf, 100, &pos, MPI_COMM_WORLD);
MPI_Bcast(&buf, 100, MPI_PACKED, 0, MPI_COMM_WORLD);
} else {
MPI_Bcast(&buf, 100, MPI_PACKED, 0, MPI_COMM_WORLD);
pos = 0;
/* распаковка a, n и массива mas из 6 элементов */
MPI_Unpack(&buf, 100, &pos, &a, 1, MPI_FLOAT, MPI_COMM_WORLD);
MPI_Unpack(&buf, 100, &pos, &n, 1, MPI_INT, MPI_COMM_WORLD);
MPI_Unpack(&buf, 100, &pos, &mas, 6, MPI_INT, MPI_COMM_WORLD);
}
…
Пример формирования сообщений при помощи упаковки и распаковки данных
Выбор диапазона для построения круговых диаграмм и гистограмм, использование для построения Мастера диаграмм
Электронно-библиотечная система Банк ВКР (vkr.bmstu.ru). Итоги и перспективы
Алгоритмическая конструкция следование
Графика в Basic
Функциональная декомпозиция для АСУб и ЭВМб. Тема 3-1
Ядро ОС Linux. Модульная структура ядра, компиляция, сборка ядра
Графический редактор Paint
Интернет-технологии и распределённая обработка данных. Лекция 14
algebra_logiki (1)
Лаборатория компьютерных систем и сетей
Классы в объектно - ориентированном программировании
Разработка фирменного стиля для научной библиотеки
WiMAX. Область использования. Принцип работы. Технические характеристики
Операции над числами в языке Си++
Введение в объектно-ориентированное программирование. Занятие №1
Одирование информации. Метод координат
Создание портфолио
Обработка отраслевой информации. Отчет по практическим работам
Строки и записи. Программирование на языке Pascal. Лекция №10
Информация в памяти компьютера. Системы счисления
Презентация на тему Программная обработка данных на компьютере
Электронные таблицы или табличные процессоры
Оптимизация обновления информационной базы. Информация для технических специалистов
3CSetCursorPosition
Инфографика
Теоретические основы компьютерной безопасности. Лекция №9. Международный стандарт COBIT
Реферативные базы данных: выбор исследователя на основе Web of Science и Scopus
Презентация на тему: «Голосовая почта»