| |
Многие из подпрограмм MPI-2 берут аргумент info. info -
скрытый объект с указателем типа MPI_Info в Си, MPI::Info в
С++ и INTEGER в ФОРТРАН. Он состоит из (key, value)
пар (и key и value - строки). Ключ может иметь только одно
значение. MPI резервирует несколько ключей и требует, чтобы, если
реализация использовала зарезервированный ключ, она должна обеспечить
указанные функциональные возможности. Реализация не требует, чтобы
поддержать эти ключи и может поддерживать любые другие не
зарезервированные MPI.
Если функция не признает ключ, она игнорирует его, если не определено иначе. Если реализация признает ключ, но не признает формат соответствующего значения, результат неопределен.
Ключи имеют максимальную длину MPI_MAX_INFO_KEY, которая
определена реализацией, по крайней мере от 32 до 255 символов. Значения
имеют определенную реализацией максимальную длину
MPI_MAX_INFO_VAL. В языке ФОРТРАН начальный и конечный
пробелы удалены из обоих. Возвращенные значения никогда не будут больше
чем эти максимальные длины. И key и value являются
регистрочувствительными.
Объяснение:
Ключи имеют максимальную длину, потому что набор известных ключей будет
всегда конечен и известен реализации и потому, что нет никакой причины для
того, чтобы ключи были сложными. Маленький максимальный размер позволяет
приложениям объявлять ключи размера MPI_MAX_INFO_KEY.
Ограничение на размеры значения введено для того, чтобы реализация не имела
дела с произвольно длинными строками. []
Совет пользователям:
MPI_MAX_INFO_VAL могло бы быть очень большим, так что было бы
глупо объявить строку такого размера. []
Когда это - аргумент подпрограммы неблокирования, info анализируется
прежде, чем подпрограмма возвратит, так что он может быть изменен или
освобожден немедленно после возвращения.
Когда описания обращаются к ключу или значению, являющимся булевой
переменной, целым числом, или списком, они означают строковое представление
этих типов. Реализация может определять ее собственные правила для того, как
строки значения info преобразованы к другим типам, но чтобы
гарантировать мобильность, каждая реализация должна поддержать следующие
представления. Законные значения для булевой переменной должны включать
строки ``истина'' и ``ложь'' (все буквы строчные). Для целых чисел законные
значения должны включать строковые представления десятичных значений
целых чисел, которые существуют в пределах диапазона стандартного
целочисленного типа в программе. (Однако, возможно, что не каждое законное
целое число является законным значением для данного ключа.) На
положительных числах знаки + необязательные. Между знаком + или - и первой
цифрой числа не должно быть никаких пробелов. Для отделенных запятыми
списков строка должна содержать законные элементы, отделенные запятыми.
Начальные и конечные пробелы удаляются автоматически от типов значений
информации, описанных выше и для каждого элемента отделенного запятыми
списка. Эти правила относятся ко всем значениям информации этих типов.
Реализации свободны определить различную интерпретацию для значений других
ключей информации.
MPI_INFO_CREATE(info)
| OUT | info |
создает объект информации (указатель) |
int MPI_info_create (MPI_Info *info)
MPI_INFO_CREATE(INFO, IERROR)
INTEGER INFO, IERROR
static MPI::Info MPI::Info::Create()
MPI_INFO_CREATE создает новый объект информации. Недавно
созданный объект не содержит никаких пар ключ / значение.
MPI_INFO_SET(info, key, value)
| INOUT | info |
объект информации (указатель) | |
| IN | key |
ключ (строка) | |
| IN | value |
значение (строка) |
int MPI_info_set(MPI_Info info, char *key, char *value)
MPI_INFO_SET(INFO, KEY, VALUE, IERROR)
INTEGER INFO, IERROR
CHARACTER*(*) KEY, VALUE
void MPI::Info::Set(const char* key, const char* value)
MPI_INFO_SET добавляет пару (ключ, значение) к info, и отменяет
значение, если значение для того же самого ключа было предварительно
установлено. key и value - нуль-терминированные строки в Си. В
языке ФОРТРАН начальные и конечные пробелы в key и value
удалены. Если либо key, либо value больше, чем позволенные
максимумы, возникают ошибки MPI_ERR_INFO_KEY или
MPI_ERR_INFO_VALUE, соответственно.
MPI_INFO_DELETE(info, key)
| INOUT | info |
объект информации (указатель) | |
| IN | key |
ключ (строка) |
int MPI_Info_delete(MPI_Info info, char *key)
MPI_INFO_DELETE(INFO, KEY, IERROR)
INTEGER INFO, IERROR
CHARACTER*(*) KEY
void MPI::Info::Delete(const char* key)
MPI_INFO_DELETE удаляет пару (ключ, значение) из info. Если
key не определен в info, вызов вызывает ошибку класса
MPI_ERR_INFO_NOKEY.
MPI_INFO_GET(info, key, valuelen, value, flag)
| IN | info |
объект информации (указатель) | |
| IN | key |
ключ (строка) | |
| IN | valuelen |
длина параметра arg (целое
число) |
|
| OUT | value |
значение (строка) | |
| OUT | flag |
true, если ключ определен,
false, если нет (логический) |
int MPI_info_get(MPI_Info info, char *key, int valuelen, char *value,
int *flag)
MPI_INFO_GET(INFO, KEY, VALUELEN, VALUE, FLAG, IERROR)
INTEGER INFO, VALUELEN, IERROR
CHARACTER*(*) KEY, VALUE
LOGICAL FLAG
bool MPI::Info::Get(const char* key, int valuelen, char* value) const
Эта функция восстанавливает значение, связанное с key в предыдущем
вызове MPI_INFO_SET. Если такой ключ существует, она устанавливает
flag в true и возвращает значение в value, иначе
устанавливает flag в false и оставляет неизменным value.
valuelen - число символов, доступное в значении. Если оно меньше, чем
фактический размер значения, значение будет усечено. В Си valuelen
должно быть на 1 больше, чем количество распределенного пространства, чтобы
учесть нуль-терминатор.
Если размер key больше чем MPI_MAX_INFO_KEY, вызов является
ошибочным.
MPI_INFO_GET_VALUELEN(info, key, valuelen, flag)
| IN | info |
объект информации (указатель) | |
| IN | key |
ключ (строка) | |
| OUT | valuelen |
длина параметра arg (целое
число) |
|
| OUT | flag |
true, если ключ определен,
false, если нет (логический) |
int MPI_Info_get_valuelen (MPI_Info info, char *key, int *valuelen,
int *flag)
MPI_INFO_GET_VALUELEN (INFO, KEY, VALUELEN, FLAG, IERROR)
INTEGER INFO, VALUELEN, IERROR
LOGICAL FLAG
CHARACTER*(*) KEY
bool MPI::Info::Get_valuelen(const char* key, int& valuelen) const
Восстанавливает длину value, связанной с key. Если key
определена, в valuelen установлена длина его связанного значения, и
flag установлен в true. Если key не определена, valuelen
не касаются, и flag установлен в false. Длина, возвращенная в
Си или С++ не включает символ конца строки.
Если key длиннее чем MPI_MAX_INFO_KEY, вызов является
ошибочным.
MPI_INFO_GET_NKEYS(info, nkeys)
| IN | info |
объект информации (указатель) | |
| OUT | nkeys |
число определенных ключей (целое число) |
int MPI_Info_get_nkeys (MPI_Info info, int *nkeys)
MPI_INFO_GET_NKEYS(INFO, NKEYS, IERROR)
INTEGER INFO, NKEYS, IERROR
int MPI::Info::Get_nkeys() const
MPI_INFO_GET_NKEYS возвращает в info число ключей
определенных в настоящее время.
MPI_INFO_GET_NTHKEY(info, n, key)
| IN | info |
объект информации (указатель) | |
| IN | n |
номер ключа (целое число) | |
| OUT | key |
ключ (строка) |
int MPI_Info_get_nthkey (MPI_Info info, int n, char *key)
MPI_INFO_GET_NTHKEY(INFO, N, KEY, IERROR)
INTEGER INFO, N, IERROR
CHARACTER*(*) KEY
void MPI::Info::Get_nthkey(int n, char* key) const
Эта функция возвращает n-ый определенный ключ в info. Ключи
пронумерованы от 0 до N-1, где N - значение, возвращенное
MPI_INFO_GET_NKEYS. Все ключи между 0 и N-1 гарантированно
будут определены. Номер данного ключа не изменяется, пока info не
изменится функциями MPI_INFO_SET или MPI_INFO_DELETE.
MPI_INFO_DUP(info, newinfo)
| IN | info |
объект информации (указатель) | |
| OUT | newinfo |
объект информации (указатель) |
int MPI_Info_dup(MPI_Info info, MPI_Info *newinfo)
MPI_INFO_DUP(INFO, NEWINFO, IERROR)
INTEGER INFO, NEWINFO, IERROR
MPI::Info MPI::Info::Dup() const
MPI_INFO_DUP дублирует существующий объект информации, создавая
новый объект с той же самой парой (ключ, значение) и таким же расположением
ключей.
MPI_INFO_FREE(info)
| INOUT | info |
объект информации (указатель) |
int MPI_info_free(MPI_Info *info)
MPI_INFO_FREE(INFO, IERROR)
INTEGER INFO, IERROR
void MPI::Info::Free()
Эта функция освобождает info и устанавливает его в
MPI_INFO_NULL. Значение аргумента информации интерпретируется
всякий раз, когда информацию передают подпрограмме. Изменения в info
после возвращения из подпрограммы не затрагивают эту интерпретацию.
|
Закладки на сайте Проследить за страницей |
Created 1996-2025 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |