/* Размер буфера для коллективного ввода/вывода */
MPI_Info_set(info, "cb_buffer_size", "8388608");
/* Количество процессов, которые действительно выполняют ввод/вывод в коллективной операции ввода/вывода */
sprintf(value, "%d", nprocs/2);
MPI_Info_set(info, "cb_nodes", value); /* Размер буфера в
индивидуальных операциях чтения */
MPI_Info_set(info, "ind_rd_buffer_size", "2097152");
/* Размер буфера в индивидуальных операциях записи */
MPI_Info_set(info, "ind_wr_buffer_size", "1048576");
/* Следующие три подсказки относятся к расщеплению файла и имеют значение только для файловых систем Intel PFS и IBM PIOFS, а в остальных случаях игнорируются. Они могут быть заданы только в момент создания файла */
sprintf(value, "%d", default_striping_factor-l);
MPI_Info_set(info, "striping_factor", value);
/* Размер блока в байтах */
MPI_Info_set(info, "striping_unit", "131072");
/* Номер устройства ввода/вывода, с которого начинается расщепление файла. Принимается, только если 0 < value < default_striping_factor, в противном случае игнорируется */
MPI_Info_set(info, "start_iodevice", value);
/* Следующая подсказка имеет значение только для файловой системы Intel PFS и сервера PFS. Она может быть задана в любой момент времени */
MPI_Info_set(info, "pfs_svr_buf", "true");
/* Открыть файл и задать новый информационный параметр */
MPI_File_open(MPI_COMM_WORLD, filename,
MPI_MODE_CREATE | MPI_MODE_RDWR, info, &fh);
/* Проверить значения */
MPI_File_get_info(fh, &info_used);
MPI_Info_get_nkeys(info_used, &nkeys);
if (!mynod)
fprintf(stderr, "\n New values\n\n");
for (i=0; i<nkeys; i++)
{
MPI_Info_get_nthkey(info_used, i, key);
MPI_Info_get(info_used, key,
MPI_MAX_INFO_VAL-1, value, &flag);
if (!mynod)
fprintf(stderr, "Process %d, key = %s,
value = %s\n", mynod, key, value);
}
MPI_File_close(&fh);
free(filename);
MPI_Info_free(&info_used);
MPI_Info_free(&info);
MPI_Finalize();
return 0;
}
Командная строка запуска этой программы в NT-MPICH может выглядеть следующим образом:
mpiexec –host -machinefile -n 2 -- myprogr
1. Какие операции коллективного обмена включены в спецификацию MPI-2?
2. Как осуществляется операция широковещательной рассылки данных и в каких процессах помещается обращение к подпрограмме рассылки?
3. Как объявляется подпрограмма распределения данных и каков смысл входящих в нее параметров?
4. Как объявляется подпрограмма сбора данных и каков смысл входящих в нее параметров?
5. Как выполняются подпрограммы приведения? Из каких процессов и в какие процессы данные могут быть редуцированы?
6. Какие операции проведения предопределены в MPI?
7. С помощью какой подпрограммы можно определить собственную глобальную операцию приведения?
8. Как описывается тип пользовательской функции, которую надо включить в подпрограммы приведения?
9. Чем отличается подпрограмма сканирования от подпрограмм приведения?
10. Что такое топологии, какие виды топологий определены спецификацией MPI-2 и как информация о них связывается с коммуникотором?
11. Как создается новый коммуникатор, который виртуально наделяется декартовой многомерной (прямоугольной) топологией?
12. С помощью каких подпрограмм осуществляется пересчет ранга процесса в его декартовы координаты и наоборот?
13. Как создается новый коммуникатор, который виртуально наделяется топологией графа?
14. Какие параметры графа должны быть указаны в подпрограмме, создающей коммуникатор с топологией графа?
15. Как получить сведения о рангах вершинных процессов графа, которые являются соседями вершинного процесса с заданным рангом?
16. Как получить сведения о количестве соседних вершин и вообще информацию о топологии графа, связанного с заданным коммуникатором?
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.