本文整理汇总了C++中opal_argv_split函数的典型用法代码示例。如果您正苦于以下问题:C++ opal_argv_split函数的具体用法?C++ opal_argv_split怎么用?C++ opal_argv_split使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了opal_argv_split函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: opal_paffinity_base_slot_list_set
int opal_paffinity_base_slot_list_set(long rank, char *slot_str)
{
char **item;
char **socket_core;
int item_cnt, socket_core_cnt, rc;
bool logical_map;
if (NULL == slot_str){
return OPAL_ERR_BAD_PARAM;
}
/* if the slot string is empty, that is an error */
if (0 == strlen(slot_str)) {
return OPAL_ERR_BAD_PARAM;
}
/* check for diag request to avoid repeatedly doing so */
if (4 < opal_output_get_verbosity(opal_paffinity_base_output)) {
diag_requested = true;
} else {
diag_requested = false;
}
opal_output_verbose(5, opal_paffinity_base_output, "paffinity slot assignment: slot_list == %s", slot_str);
if ('P' == slot_str[0] || 'p' == slot_str[0]) {
/* user has specified physical mapping */
logical_map = false;
item = opal_argv_split (&slot_str[1], ',');
} else {
logical_map = true; /* default to logical mapping */
item = opal_argv_split (slot_str, ',');
}
item_cnt = opal_argv_count (item);
socket_core = opal_argv_split (item[0], ':');
socket_core_cnt = opal_argv_count(socket_core);
opal_argv_free(socket_core);
switch (socket_core_cnt) {
case 1: /* binding to cpu's */
if (OPAL_SUCCESS != (rc = opal_paffinity_base_socket_to_cpu_set(item, item_cnt, rank, logical_map))) {
opal_argv_free(item);
return rc;
}
break;
case 2: /* binding to socket/core specification */
if (OPAL_SUCCESS != (rc = opal_paffinity_base_socket_core_to_cpu_set(item, item_cnt, rank, logical_map))) {
opal_argv_free(item);
return rc;
}
break;
default:
opal_argv_free(item);
return OPAL_ERROR;
}
opal_argv_free(item);
return OPAL_SUCCESS;
}
开发者ID:315234,项目名称:OpenFOAM-2.2.x-OSX,代码行数:58,代码来源:paffinity_base_service.c
示例2: open_conduit
static orte_rml_base_module_t* open_conduit(opal_list_t *attributes)
{
char *comp_attrib = NULL;
char **comps;
int i;
orte_attribute_t *attr;
opal_output_verbose(20,orte_rml_base_framework.framework_output,
"%s - Entering rml_oob_open_conduit()",
ORTE_NAME_PRINT(ORTE_PROC_MY_NAME));
/* someone may require this specific component, so look for "oob" */
if (orte_get_attribute(attributes, ORTE_RML_INCLUDE_COMP_ATTRIB, (void**)&comp_attrib, OPAL_STRING) &&
NULL != comp_attrib) {
/* they specified specific components - could be multiple */
comps = opal_argv_split(comp_attrib, ',');
for (i=0; NULL != comps[i]; i++) {
if (0 == strcmp(comps[i], "oob")) {
/* we are a candidate */
opal_argv_free(comps);
return make_module();
}
}
/* we are not a candidate */
opal_argv_free(comps);
return NULL;
} else if (orte_get_attribute(attributes, ORTE_RML_EXCLUDE_COMP_ATTRIB, (void**)&comp_attrib, OPAL_STRING) &&
NULL != comp_attrib) {
/* see if we are on the list */
comps = opal_argv_split(comp_attrib, ',');
for (i=0; NULL != comps[i]; i++) {
if (0 == strcmp(comps[i], "oob")) {
/* we cannot be a candidate */
opal_argv_free(comps);
return NULL;
}
}
}
/* Alternatively, check the attributes to see if we qualify - we only handle
* "routed", "Ethernet", and "TCP" */
OPAL_LIST_FOREACH(attr, attributes, orte_attribute_t) {
}
/* if we get here, we cannot handle it */
return NULL;
}
开发者ID:abouteiller,项目名称:ompi-aurelien,代码行数:48,代码来源:rml_oob_component.c
示例3: rte_init
static int rte_init(void)
{
int ret;
char *error = NULL;
char **hosts = NULL;
char *nodelist;
/* run the prolog */
if (ORTE_SUCCESS != (ret = orte_ess_base_std_prolog())) {
error = "orte_ess_base_std_prolog";
goto error;
}
/* Start by getting a unique name */
tm_set_name();
/* if I am a daemon, complete my setup using the
* default procedure
*/
if (ORTE_PROC_IS_DAEMON) {
/* get the list of nodes used for this job */
nodelist = getenv("OMPI_MCA_orte_nodelist");
if (NULL != nodelist) {
/* split the node list into an argv array */
hosts = opal_argv_split(nodelist, ',');
}
if (ORTE_SUCCESS != (ret = orte_ess_base_orted_setup(hosts))) {
ORTE_ERROR_LOG(ret);
error = "orte_ess_base_orted_setup";
goto error;
}
opal_argv_free(hosts);
return ORTE_SUCCESS;
}
if (ORTE_PROC_IS_TOOL) {
/* otherwise, if I am a tool proc, use that procedure */
if (ORTE_SUCCESS != (ret = orte_ess_base_tool_setup())) {
ORTE_ERROR_LOG(ret);
error = "orte_ess_base_tool_setup";
goto error;
}
return ORTE_SUCCESS;
}
/* no other options are supported! */
error = "ess_error";
ret = ORTE_ERROR;
error:
if (ORTE_ERR_SILENT != ret && !orte_report_silent_errors) {
orte_show_help("help-orte-runtime.txt",
"orte_init:startup:internal-failure",
true, error, ORTE_ERROR_NAME(ret), ret);
}
return ret;
}
开发者ID:Greatrandom,项目名称:ompi,代码行数:60,代码来源:ess_tm_module.c
示例4: ompi_debugger_setup_dlls
extern void
ompi_debugger_setup_dlls(void)
{
int i;
char **dirs, **tmp1 = NULL, **tmp2 = NULL;
ompi_debugger_dll_path = opal_install_dirs.opallibdir;
(void) mca_base_var_register("ompi", "ompi", "debugger", "dll_path",
"List of directories where MPI_INIT should search for debugger plugins",
MCA_BASE_VAR_TYPE_STRING, NULL, 0, 0,
OPAL_INFO_LVL_9,
MCA_BASE_VAR_SCOPE_READONLY,
&ompi_debugger_dll_path);
/* Search the directory for MPI debugger DLLs */
if (NULL != ompi_debugger_dll_path) {
dirs = opal_argv_split(ompi_debugger_dll_path, ':');
for (i = 0; dirs[i] != NULL; ++i) {
check(dirs[i], OMPI_MPIHANDLES_DLL_PREFIX, tmp1);
check(dirs[i], OMPI_MSGQ_DLL_PREFIX, tmp2);
}
opal_argv_free(dirs);
}
/* Now that we have a full list of directories, assign the argv
arrays to the global variables (since the debugger may read the
global variables at any time, we want to ensure that they have
non-NULL values only when the entire array is ready). */
mpimsgq_dll_locations = tmp1;
mpidbg_dll_locations = tmp2;
}
开发者ID:jsquyres,项目名称:ompi-netloc-prototype,代码行数:31,代码来源:ompi_debuggers.c
示例5: get_slurm_nodename
static char *
get_slurm_nodename(int nodeid)
{
char **names = NULL;
char *slurm_nodelist;
char *ret;
mca_base_param_reg_string_name("orte", "nodelist", "List of nodes in job",
true, false, NULL, &slurm_nodelist);
if (NULL == slurm_nodelist) {
return NULL;
}
/* split the node list into an argv array */
names = opal_argv_split(slurm_nodelist, ',');
if (NULL == names) { /* got an error */
return NULL;
}
/* check to see if there are enough entries */
if (nodeid > opal_argv_count(names)) {
return NULL;
}
ret = strdup(names[nodeid]);
opal_argv_free(names);
/* All done */
return ret;
}
开发者ID:315234,项目名称:OpenFOAM-2.2.x-OSX,代码行数:31,代码来源:ess_slurm_module.c
示例6: orte_rml_base_parse_uris
int
orte_rml_base_parse_uris(const char* uri,
orte_process_name_t* peer,
char*** uris)
{
int rc;
/* parse the process name */
char* cinfo = strdup(uri);
char* ptr = strchr(cinfo, ';');
if(NULL == ptr) {
ORTE_ERROR_LOG(ORTE_ERR_BAD_PARAM);
free(cinfo);
return ORTE_ERR_BAD_PARAM;
}
*ptr = '\0';
ptr++;
if (ORTE_SUCCESS != (rc = orte_util_convert_string_to_process_name(peer, cinfo))) {
ORTE_ERROR_LOG(rc);
free(cinfo);
return rc;
}
if (NULL != uris) {
/* parse the remainder of the string into an array of uris */
*uris = opal_argv_split(ptr, ';');
}
free(cinfo);
return ORTE_SUCCESS;
}
开发者ID:00datman,项目名称:ompi,代码行数:30,代码来源:rml_base_contact.c
示例7: dlopen_component_register
static int dlopen_component_register(void)
{
int ret;
mca_dl_dlopen_component.filename_suffixes_mca_storage = ".so,.dylib,.dll,.sl";
ret =
mca_base_component_var_register(&mca_dl_dlopen_component.base.base_version,
"filename_suffixes",
"Comma-delimited list of filename suffixes that the dlopen component will try",
MCA_BASE_VAR_TYPE_STRING,
NULL,
0,
MCA_BASE_VAR_FLAG_SETTABLE,
OPAL_INFO_LVL_5,
MCA_BASE_VAR_SCOPE_LOCAL,
&mca_dl_dlopen_component.filename_suffixes_mca_storage);
if (ret < 0) {
return ret;
}
mca_dl_dlopen_component.filename_suffixes =
opal_argv_split(mca_dl_dlopen_component.filename_suffixes_mca_storage,
',');
return OPAL_SUCCESS;
}
开发者ID:00datman,项目名称:ompi,代码行数:25,代码来源:dl_dlopen_component.c
示例8: opal_compress_bzip_compress_nb
int opal_compress_bzip_compress_nb(char * fname, char **cname, char **postfix, pid_t *child_pid)
{
char **argv = NULL;
char * base_fname = NULL;
char * dir_fname = NULL;
int status;
bool is_dir;
is_dir = is_directory(fname);
*child_pid = fork();
if( *child_pid == 0 ) { /* Child */
char * cmd;
dir_fname = opal_dirname(fname);
base_fname = opal_basename(fname);
chdir(dir_fname);
if( is_dir ) {
#if 0
opal_compress_base_tar_create(&base_fname);
asprintf(cname, "%s.bz2", base_fname);
asprintf(&cmd, "bzip2 %s", base_fname);
#else
asprintf(cname, "%s.tar.bz2", base_fname);
asprintf(&cmd, "tar -jcf %s %s", *cname, base_fname);
#endif
} else {
asprintf(cname, "%s.bz2", base_fname);
asprintf(&cmd, "bzip2 %s", base_fname);
}
opal_output_verbose(10, mca_compress_bzip_component.super.output_handle,
"compress:bzip: compress_nb(%s -> [%s])",
fname, *cname);
opal_output_verbose(10, mca_compress_bzip_component.super.output_handle,
"compress:bzip: compress_nb() command [%s]",
cmd);
argv = opal_argv_split(cmd, ' ');
status = execvp(argv[0], argv);
opal_output(0, "compress:bzip: compress_nb: Failed to exec child [%s] status = %d\n", cmd, status);
exit(OPAL_ERROR);
}
else if( *child_pid > 0 ) {
if( is_dir ) {
*postfix = strdup(".tar.bz2");
} else {
*postfix = strdup(".bz2");
}
asprintf(cname, "%s%s", fname, *postfix);
}
else {
return OPAL_ERROR;
}
return OPAL_SUCCESS;
}
开发者ID:00datman,项目名称:ompi,代码行数:60,代码来源:compress_bzip_module.c
示例9: get_slurm_nodename
static char *
get_slurm_nodename(int nodeid)
{
char **names = NULL;
char *slurm_nodelist;
char *ret;
slurm_nodelist = getenv("OMPI_MCA_orte_slurm_nodelist");
if (NULL == slurm_nodelist) {
return NULL;
}
/* split the node list into an argv array */
names = opal_argv_split(slurm_nodelist, ',');
if (NULL == names) { /* got an error */
return NULL;
}
/* check to see if there are enough entries */
if (nodeid > opal_argv_count(names)) {
return NULL;
}
ret = strdup(names[nodeid]);
opal_argv_free(names);
/* All done */
return ret;
}
开发者ID:aosm,项目名称:openmpi,代码行数:31,代码来源:sds_slurm_module.c
示例10: select_ofi_provider
static struct fi_info*
select_ofi_provider(struct fi_info *providers)
{
char **include_list = NULL;
char **exclude_list = NULL;
struct fi_info *prov = providers;
opal_output_verbose(1, ompi_mtl_base_framework.framework_output,
"%s:%d: mtl:ofi:provider_include = \"%s\"\n",
__FILE__, __LINE__, prov_include);
opal_output_verbose(1, ompi_mtl_base_framework.framework_output,
"%s:%d: mtl:ofi:provider_exclude = \"%s\"\n",
__FILE__, __LINE__, prov_exclude);
if (NULL != prov_include) {
include_list = opal_argv_split(prov_include, ',');
while ((NULL != prov) &&
(!is_in_list(include_list, prov->fabric_attr->prov_name))) {
opal_output_verbose(1, ompi_mtl_base_framework.framework_output,
"%s:%d: mtl:ofi: \"%s\" not in include list\n",
__FILE__, __LINE__,
prov->fabric_attr->prov_name);
prov = prov->next;
}
} else if (NULL != prov_exclude) {
exclude_list = opal_argv_split(prov_exclude, ',');
while ((NULL != prov) &&
(is_in_list(exclude_list, prov->fabric_attr->prov_name))) {
opal_output_verbose(1, ompi_mtl_base_framework.framework_output,
"%s:%d: mtl:ofi: \"%s\" in exclude list\n",
__FILE__, __LINE__,
prov->fabric_attr->prov_name);
prov = prov->next;
}
}
opal_argv_free(include_list);
opal_argv_free(exclude_list);
opal_output_verbose(1, ompi_mtl_base_framework.framework_output,
"%s:%d: mtl:ofi:prov: %s\n",
__FILE__, __LINE__,
(prov ? prov->fabric_attr->prov_name : "none"));
return prov;
}
开发者ID:abouteiller,项目名称:ompi-aurelien,代码行数:46,代码来源:mtl_ofi_component.c
示例11: enum_value_from_string_flag
static int enum_value_from_string_flag (mca_base_var_enum_t *self, const char *string_value, int *value_out) {
mca_base_var_enum_flag_t *flag_enum = (mca_base_var_enum_flag_t *) self;
int value, count, ret, flag;
char **flags;
bool is_int;
char *tmp;
ret = self->get_count(self, &count);
if (OPAL_SUCCESS != ret) {
return ret;
}
flags = opal_argv_split (string_value, ',');
if (NULL == flags) {
return OPAL_ERR_BAD_PARAM;
}
flag = 0;
for (int i = 0 ; flags[i] ; ++i) {
value = strtol (flags[i], &tmp, 0);
is_int = tmp[0] == '\0';
bool found = false, conflict = false;
for (int j = 0 ; j < count ; ++j) {
if ((is_int && (value & flag_enum->enum_flags[j].flag)) ||
0 == strcasecmp (flags[i], flag_enum->enum_flags[j].string)) {
found = true;
if (flag & flag_enum->enum_flags[j].conflicting_flag) {
conflict = true;
} else {
flag |= flag_enum->enum_flags[j].flag;
}
if (is_int) {
value &= ~flag_enum->enum_flags[j].flag;
if (0 == value) {
break;
}
} else {
break;
}
}
}
if (!found || conflict || (is_int && value)) {
opal_argv_free (flags);
return !found ? OPAL_ERR_VALUE_OUT_OF_BOUNDS : OPAL_ERR_BAD_PARAM;
}
}
opal_argv_free (flags);
*value_out = flag;
return OPAL_SUCCESS;
}
开发者ID:00datman,项目名称:ompi,代码行数:58,代码来源:mca_base_var_enum.c
示例12: check_modifiers
static int check_modifiers(char *ck, orte_mapping_policy_t *tmp)
{
char **ck2, *ptr;
int i;
bool found = false;
opal_output_verbose(5, orte_rmaps_base_framework.framework_output,
"%s rmaps:base check modifiers with %s",
ORTE_NAME_PRINT(ORTE_PROC_MY_NAME),
(NULL == ck) ? "NULL" : ck);
if (NULL == ck) {
return ORTE_SUCCESS;
}
ck2 = opal_argv_split(ck, ',');
for (i=0; NULL != ck2[i]; i++) {
if (0 == strncasecmp(ck2[i], "span", strlen(ck2[i]))) {
ORTE_SET_MAPPING_DIRECTIVE(*tmp, ORTE_MAPPING_SPAN);
found = true;
} else if (0 == strncasecmp(ck2[i], "pe", strlen("pe"))) {
/* break this at the = sign to get the number */
if (NULL == (ptr = strchr(ck2[i], '='))) {
/* missing the value */
orte_show_help("help-orte-rmaps-base.txt", "missing-value", true, "pe", ck2[i]);
opal_argv_free(ck2);
return ORTE_ERR_SILENT;
}
ptr++;
orte_rmaps_base.cpus_per_rank = strtol(ptr, NULL, 10);
opal_output_verbose(5, orte_rmaps_base_framework.framework_output,
"%s rmaps:base setting pe/rank to %d",
ORTE_NAME_PRINT(ORTE_PROC_MY_NAME),
orte_rmaps_base.cpus_per_rank);
found = true;
} else if (0 == strncasecmp(ck2[i], "oversubscribe", strlen(ck2[i]))) {
ORTE_UNSET_MAPPING_DIRECTIVE(*tmp, ORTE_MAPPING_NO_OVERSUBSCRIBE);
ORTE_SET_MAPPING_DIRECTIVE(*tmp, ORTE_MAPPING_SUBSCRIBE_GIVEN);
found = true;
} else if (0 == strncasecmp(ck2[i], "nooversubscribe", strlen(ck2[i]))) {
ORTE_SET_MAPPING_DIRECTIVE(*tmp, ORTE_MAPPING_NO_OVERSUBSCRIBE);
ORTE_SET_MAPPING_DIRECTIVE(*tmp, ORTE_MAPPING_SUBSCRIBE_GIVEN);
found = true;
} else {
/* unrecognized modifier */
opal_argv_free(ck2);
return ORTE_ERR_BAD_PARAM;
}
}
opal_argv_free(ck2);
if (found) {
return ORTE_SUCCESS;
}
return ORTE_ERR_TAKE_NEXT_OPTION;
}
开发者ID:00datman,项目名称:ompi,代码行数:55,代码来源:rmaps_base_frame.c
示例13: rte_init
static int rte_init(void)
{
int rc;
orte_vpid_t vpid;
char *vpid_string;
char *nidmap_string;
vpid_string = getenv("PTL_MY_RID");
nidmap_string = getenv("PTL_NIDMAP");
if (NULL == vpid_string || NULL == nidmap_string ||
NULL == getenv("PTL_PIDMAP") || NULL == getenv("PTL_IFACE")) {
return ORTE_ERR_NOT_FOUND;
}
/* Get our process information */
/* Procs in this environment are directly launched. Hence, there
* was no mpirun to create a jobid for us, and each app proc is
* going to have to fend for itself. For now, we assume that the
* jobid is some arbitrary number (say, 1).
*/
ORTE_PROC_MY_NAME->jobid = 1; /* not 0, since it has special meaning */
/* find our vpid assuming range starts at 0 */
if (ORTE_SUCCESS != (rc = orte_util_convert_string_to_vpid(&vpid, vpid_string))) {
ORTE_ERROR_LOG(rc);
return(rc);
}
ORTE_PROC_MY_NAME->vpid = vpid;
/*
* Get the number of procs in the job. We assume vpids start at 0. We
* assume that there are <num : + 1> procs, since the nidmap is a
* : seperated list of nids, and the utcp reference implementation
* assumes all will be present
*/
/* split the nidmap string */
nidmap = opal_argv_split(nidmap_string, ':');
orte_process_info.num_procs = (orte_std_cntr_t) opal_argv_count(nidmap);
/* MPI_Init needs the grpcomm framework, so we have to init it */
if (ORTE_SUCCESS != (rc = orte_grpcomm_base_open())) {
ORTE_ERROR_LOG(rc);
return rc;
}
if (ORTE_SUCCESS != (rc = orte_grpcomm_base_select())) {
ORTE_ERROR_LOG(rc);
return rc;
}
/* that's all we need here */
return ORTE_SUCCESS;
}
开发者ID:315234,项目名称:OpenFOAM-2.2.x-OSX,代码行数:53,代码来源:ess_portals_utcp_module.c
示例14: orte_run_debugger
/**
* Run a user-level debugger
*/
void orte_run_debugger(char *basename, opal_cmd_line_t *cmd_line,
int argc, char *argv[])
{
int i, id;
char **new_argv = NULL;
char *value, **lines;
/* Get the orte_base_debug MCA parameter and search for a debugger
that can run */
id = mca_base_param_find("orte", NULL, "base_user_debugger");
if (id < 0) {
opal_show_help("help-orterun.txt", "debugger-mca-param-not-found",
true);
exit(1);
}
value = NULL;
mca_base_param_lookup_string(id, &value);
if (NULL == value) {
opal_show_help("help-orterun.txt", "debugger-orte_base_user_debugger-empty",
true);
exit(1);
}
/* Look through all the values in the MCA param */
lines = opal_argv_split(value, ':');
free(value);
for (i = 0; NULL != lines[i]; ++i) {
if (ORTE_SUCCESS == process(lines[i], basename, cmd_line, argc, argv,
&new_argv)) {
break;
}
}
/* If we didn't find one, abort */
if (NULL == lines[i]) {
opal_show_help("help-orterun.txt", "debugger-not-found", true);
exit(1);
}
opal_argv_free(lines);
/* We found one */
execvp(new_argv[0], new_argv);
value = opal_argv_join(new_argv, ' ');
opal_show_help("help-orterun.txt", "debugger-exec-failed",
true, basename, value, new_argv[0]);
free(value);
opal_argv_free(new_argv);
exit(1);
}
开发者ID:aosm,项目名称:openmpi,代码行数:56,代码来源:totalview.c
示例15: parse_requested
static int parse_requested(int mca_param, bool *include_mode,
char ***requested_component_names)
{
int i;
char *requested, *requested_orig;
*requested_component_names = NULL;
*include_mode = true;
/* See if the user requested anything */
if (OPAL_ERROR == mca_base_param_lookup_string(mca_param, &requested)) {
return OPAL_ERROR;
}
if (NULL == requested || 0 == strlen(requested)) {
return OPAL_SUCCESS;
}
requested_orig = requested;
/* Are we including or excluding? We only allow the negate
character to be the *first* character of the value (but be nice
and allow any number of negate characters in the beginning). */
while (negate == requested[0] && '\0' != requested[0]) {
*include_mode = false;
++requested;
}
/* Double check to ensure that the user did not specify the negate
character anywhere else in the value. */
i = 0;
while ('\0' != requested[i]) {
if (negate == requested[i]) {
opal_show_help("help-mca-base.txt",
"framework-param:too-many-negates",
true, requested_orig);
free(requested_orig);
return OPAL_ERROR;
}
++i;
}
/* Split up the value into individual component names */
*requested_component_names = opal_argv_split(requested, ',');
/* All done */
free(requested_orig);
return OPAL_SUCCESS;
}
开发者ID:Niharikareddy,项目名称:cce-mpi-openmpi-1.6.4,代码行数:52,代码来源:mca_base_components_open.c
示例16: orte_plm_poe_component_open
/**
orte_plm_poe_component_open - open component and register all parameters
@return error number
*/
int orte_plm_poe_component_open(void)
{
char *param;
mca_base_component_t *c = &mca_plm_poe_component.super.base_version;
mca_base_param_reg_int(c, "mp_retry",
"specifies the interval (in seconds) to wait before repeating the node request",
true, false, 0, &mca_plm_poe_component.mp_retry);
mca_base_param_reg_int(c, "mp_retrycount",
"specifies the number of times the Partition Manager should make the request before returning",
true, false, 0, &mca_plm_poe_component.mp_retrycount);
mca_base_param_reg_int(c, "mp_infolevel",
"specify the level of messages you want from POE (0-6)",
true, false, 0, &mca_plm_poe_component.mp_infolevel);
mca_base_param_reg_string(c, "mp_labelio",
"Whether or not to label message output with task identifiers (yes or no)",
true, false, "no", &mca_plm_poe_component.mp_labelio);
mca_base_param_reg_string(c, "mp_stdoutmode",
"standard output mode (ordered, unordered or taskID)",
true, false, "unordered", &mca_plm_poe_component.mp_stdoutmode);
mca_base_param_reg_int(c, "debug",
"Whether or not to enable debugging output for the poe plm component (0 or 1)",
false, false, 0, &mca_plm_poe_component.debug);
mca_base_param_reg_int(c, "priority",
"Priority of the poe plm component",
false , false, 0, &mca_plm_poe_component.priority);
mca_base_param_reg_string(c, "class",
"class (interactive or batch)",
true, false, "interactive", &mca_plm_poe_component.class);
mca_base_param_reg_string(c, "resource_allocation",
"resource_allocation mode (hostfile or automatic)",
false, false, "hostfile", &mca_plm_poe_component.resource_allocation);
mca_base_param_reg_string(c, "progenv",
"The command name that setup environment",
false, false, "env", &mca_plm_poe_component.env);
mca_base_param_reg_string(c, "progpoe",
"The POE command",
false, false, "poe", ¶m);
mca_plm_poe_component.argv = opal_argv_split(param, ' ');
mca_plm_poe_component.argc = opal_argv_count(mca_plm_poe_component.argv);
if (mca_plm_poe_component.argc > 0) {
mca_plm_poe_component.path = strdup(mca_plm_poe_component.argv[0]);
return ORTE_SUCCESS;
} else {
mca_plm_poe_component.path = NULL;
return ORTE_ERR_BAD_PARAM;
}
return ORTE_SUCCESS;
}
开发者ID:bringhurst,项目名称:ompi,代码行数:56,代码来源:plm_poe_component.c
示例17: test4
static bool test4(void)
{
size_t i, count;
char *a = strdup("the quick brown fox jumped over the lazy dog a_really_long_argument_to_force_a_long_copy_zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz");
char **b;
char *start;
/* split a string into an argv, and compare it against the original
string. Add double spaces into the string; opal_argv_split()
should skip them. */
b = opal_argv_split(a, ' ');
for (count = i = 1; i < strlen(a); ++i) {
if (a[i] != ' ' && a[i - 1] == ' ') {
++count;
}
}
for (i = 0; b[i] != NULL; ++i) {
continue;
}
if (i != count) {
return false;
}
/* now do the same thing and compare each token in b */
for (start = a, count = i = 0; i < strlen(a); ++i) {
if (a[i] == ' ' && a[i - 1] != ' ') {
a[i] = '\0';
if (strcmp(start, b[count]) != 0) {
return false;
}
++count;
a[i] = ' ';
}
if (a[i] == ' ' && a[i + 1] != ' ') {
start = a + i + 1;
}
}
if (strcmp(start, b[count]) != 0) {
return false;
}
/* all done */
opal_argv_free(b);
free(a);
return true;
}
开发者ID:00datman,项目名称:ompi,代码行数:50,代码来源:opal_argv.c
示例18: orte_ras_bjs_node_slots
static size_t orte_ras_bjs_node_slots(char* node_name)
{
static char** nodelist = NULL;
char** ptr;
size_t count = 0;
if(nodelist == NULL)
nodelist = opal_argv_split(getenv("NODELIST"), ',');
ptr = nodelist;
while(ptr && *ptr) {
if(strcmp(*ptr, node_name) == 0)
count++;
ptr++;
}
return count;
}
开发者ID:aosm,项目名称:openmpi,代码行数:15,代码来源:ras_bjs.c
示例19: opal_net_init
int
opal_net_init(void)
{
char **args, *arg;
uint32_t a, b, c, d, bits, addr;
int i, count, found_bad = 0;
args = opal_argv_split( opal_net_private_ipv4, ';' );
if( NULL != args ) {
count = opal_argv_count(args);
private_ipv4 = (private_ipv4_t*)malloc( (count + 1) * sizeof(private_ipv4_t));
if( NULL == private_ipv4 ) {
opal_output(0, "Unable to allocate memory for the private addresses array" );
opal_argv_free(args);
goto do_local_init;
}
for( i = 0; i < count; i++ ) {
arg = args[i];
(void)sscanf( arg, "%u.%u.%u.%u/%u", &a, &b, &c, &d, &bits );
if( (a > 255) || (b > 255) || (c > 255) ||
(d > 255) || (bits > 32) ) {
if (0 == found_bad) {
opal_show_help("help-opal-util.txt",
"malformed net_private_ipv4",
true, args[i]);
found_bad = 1;
}
continue;
}
addr = (a << 24) | (b << 16) | (c << 8) | d;
private_ipv4[i].addr = htonl(addr);
private_ipv4[i].netmask_bits = bits;
}
private_ipv4[i].addr = 0;
private_ipv4[i].netmask_bits = 0;
opal_argv_free(args);
}
do_local_init:
#if OPAL_ENABLE_IPV6
return opal_tsd_key_create(&hostname_tsd_key, hostname_cleanup);
#else
return OPAL_SUCCESS;
#endif
}
开发者ID:anandhis,项目名称:ompi,代码行数:47,代码来源:net.c
示例20: orte_session_setup_base
int orte_session_setup_base(orte_process_name_t *proc)
{
int rc;
/* Ensure that system info is set */
orte_proc_info();
/* setup job and proc session directories */
if( ORTE_SUCCESS != (rc = _setup_job_session_dir(proc)) ){
return rc;
}
if( ORTE_SUCCESS != (rc = _setup_proc_session_dir(proc)) ){
return rc;
}
/* BEFORE doing anything else, check to see if this prefix is
* allowed by the system
*/
if (NULL != orte_prohibited_session_dirs ||
NULL != orte_process_info.tmpdir_base ) {
char **list;
int i, len;
/* break the string into tokens - it should be
* separated by ','
*/
list = opal_argv_split(orte_prohibited_session_dirs, ',');
len = opal_argv_count(list);
/* cycle through the list */
for (i=0; i < len; i++) {
/* check if prefix matches */
if (0 == strncmp(orte_process_info.tmpdir_base, list[i], strlen(list[i]))) {
/* this is a prohibited location */
orte_show_help("help-orte-runtime.txt",
"orte:session:dir:prohibited",
true, orte_process_info.tmpdir_base,
orte_prohibited_session_dirs);
opal_argv_free(list);
return ORTE_ERR_FATAL;
}
}
opal_argv_free(list); /* done with this */
}
return ORTE_SUCCESS;
}
开发者ID:abouteiller,项目名称:ompi-aurelien,代码行数:45,代码来源:session_dir.c
注:本文中的opal_argv_split函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论