Многие из подпрограмм 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
после возвращения из подпрограммы не затрагивают эту интерпретацию.