⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ipmi.h

📁 fortran并行计算包
💻 H
字号:
/* -*- Mode: C; c-basic-offset:4 ; -*- *//* *  (C) 2001 by Argonne National Laboratory. *      See COPYRIGHT in top-level directory. */#ifndef IPMI_H#define IPMI_H#include "pmiconf.h" #include <stdio.h>#ifdef HAVE_UNISTD_H#include <unistd.h>#endif#ifdef HAVE_STDLIB_H#include <stdlib.h>#endif#ifdef HAVE_STRING_H#include <string.h>#endif#ifdef HAVE_STDARG_H#include <stdarg.h>#endif#ifdef HAVE_DLFCN_H#include <dlfcn.h>#endif#include "pmi.h"#include "mpidu_sock.h"#include "smpd.h"#include "mpi.h"#define PMI_SUCCESS     0#define PMI_FAIL       -1/* prototypes for the iPMI interface */#if defined(__cplusplus)extern "C" {#endif/* PMI Group functions */int iPMI_Init( int *spawned );           /* initialize PMI for this process group                                           The value of spawned indicates whether this process                                           was created by PMI_Spawn_multiple. */int iPMI_Initialized( PMI_BOOL *initialized );            /* Return true if PMI has been initialized */int iPMI_Finalize( void );               /* finalize PMI for this process group */int iPMI_Get_size( int *size );          /* get size of process group */int iPMI_Get_rank( int *rank );          /* get rank in process group */int iPMI_Get_universe_size( int *size ); /* get the maximum allowed spawnable resources */int iPMI_Get_appnum( int *appnum );      /* get the application number */int iPMI_Get_id( char id_str[], int length );         /* get a string to uniquely identify the process group */int iPMI_Get_kvs_domain_id( char id_str[], int length );     /* get a string to uniquely identify the kvs domain */int iPMI_Get_id_length_max( int *maxlen);      /* get the maximum length the id string can be. Must return >= 40 */int iPMI_Barrier( void );                /* barrier across processes in process group */int iPMI_Get_clique_size( int *size );   /* get the number of processes on my node */int iPMI_Get_clique_ranks( int ranks[], int length ); /* get the ranks on my node */int iPMI_Abort(int exit_code, const char error_msg[]); /* abort this process group *//* PMI Keymap functions */int iPMI_KVS_Get_my_name( char kvsname[], int length );       /* get name of keyval space */int iPMI_KVS_Get_name_length_max( int *maxlen );        /* needed to communicate keyval space */int iPMI_KVS_Get_key_length_max( int *maxlen );         /* contents to a foreign domain */int iPMI_KVS_Get_value_length_max( int *maxlen );int iPMI_KVS_Create( char kvsname[], int length );            /* make a new one, get name */int iPMI_KVS_Destroy( const char kvsname[] );     /* finish with one */int iPMI_KVS_Put( const char kvsname[], const char key[],                const char value[]);             /* put data */int iPMI_KVS_Commit( const char kvsname[] );      /* block until all pending put                                                   operations from this process                                                   are complete.  This is a process                                                   local operation. */int iPMI_KVS_Get( const char kvsname[],                 const char key[], char value[], int length); /* get value associated with key */int iPMI_KVS_Iter_first(const char kvsname[], char key[], int key_len, char val[], int val_len);  /* loop through the */int iPMI_KVS_Iter_next(const char kvsname[], char key[], int key_len, char val[], int val_len);   /* pairs in the kvs *//* PMI Process Creation functions */int iPMI_Spawn_multiple(int count,                       const char * cmds[],                       const char ** argvs[],                       const int maxprocs[],                       const int info_keyval_sizes[],                       const PMI_keyval_t * info_keyval_vectors[],                       int preput_keyval_size,                       const PMI_keyval_t preput_keyval_vector[],                       int errors[]);int iPMI_Parse_option(int num_args, char *args[], int *num_parsed, PMI_keyval_t **keyvalp, int *size);/* parse PMI implementation specific values into an info object that can then be passed to    PMI_Spawn_multiple.  Remove PMI implementation specific arguments from argc and argv */int iPMI_Args_to_keyval(int *argcp, char *((*argvp)[]), PMI_keyval_t **keyvalp, int *size);/* free the data returned by iPMI_Parse_option or iPMI_Args_to_keyval */int iPMI_Free_keyvals(PMI_keyval_t keyvalp[], int size);/* External Interface Functions */int iPMI_Publish_name( const char service_name[], const char port[] );int iPMI_Unpublish_name( const char service_name[] );int iPMI_Lookup_name( const char service_name[], char port[] );typedef struct ipmi_functions_t{    int (*PMI_Init)( int * );    int (*PMI_Initialized)( PMI_BOOL *);    int (*PMI_Finalize)( void );    int (*PMI_Get_size)( int * );    int (*PMI_Get_rank)( int * );    int (*PMI_Get_universe_size)( int * );    int (*PMI_Get_appnum)( int * );    int (*PMI_Get_id)( char[] , int );    int (*PMI_Get_kvs_domain_id)( char [], int );    int (*PMI_Get_id_length_max)( int *);    int (*PMI_Barrier)( void );    int (*PMI_Get_clique_size)( int * );    int (*PMI_Get_clique_ranks)( int [], int );    int (*PMI_Abort)( int, const char [] );    int (*PMI_KVS_Get_my_name)( char [], int );    int (*PMI_KVS_Get_name_length_max)( int * );    int (*PMI_KVS_Get_key_length_max)( int * );    int (*PMI_KVS_Get_value_length_max)( int * );    int (*PMI_KVS_Create)( char [], int );    int (*PMI_KVS_Destroy)( const char [] );    int (*PMI_KVS_Put)( const char [], const char [], const char [] );    int (*PMI_KVS_Commit)( const char [] );    int (*PMI_KVS_Get)( const char [], const char [], char [], int );    int (*PMI_KVS_Iter_first)( const char [], char [], int, char [], int );    int (*PMI_KVS_Iter_next)( const char [], char [], int , char [], int );    int (*PMI_Spawn_multiple)( int, const char *[], const char **[], const int [], const int [], const PMI_keyval_t *[], int, const PMI_keyval_t [], int [] );    int (*PMI_Parse_option)( int, char *[], int *, PMI_keyval_t **, int * );    int (*PMI_Args_to_keyval)( int *, char *((*)[]), PMI_keyval_t **, int * );    int (*PMI_Free_keyvals)( PMI_keyval_t [], int );    int (*PMI_Publish_name)( const char [], const char [] );    int (*PMI_Unpublish_name)( const char [] );    int (*PMI_Lookup_name)( const char [], char [] );} ipmi_functions_t;#if defined(__cplusplus)}#endif#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -