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

📄 maffinity_base_select.c

📁 MPI stands for the Message Passing Interface. Written by the MPI Forum (a large committee comprising
💻 C
字号:
/* * Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana *                         University Research and Technology *                         Corporation.  All rights reserved. * Copyright (c) 2004-2006 The University of Tennessee and The University *                         of Tennessee Research Foundation.  All rights *                         reserved. * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,  *                         University of Stuttgart.  All rights reserved. * Copyright (c) 2004-2005 The Regents of the University of California. *                         All rights reserved. * $COPYRIGHT$ *  * Additional copyrights may follow *  * $HEADER$ */#include "opal_config.h"#include "opal/constants.h"#include "opal/util/output.h"#include "opal/mca/mca.h"#include "opal/mca/base/base.h"#include "opal/mca/base/mca_base_param.h"#include "opal/mca/maffinity/maffinity.h"#include "opal/mca/maffinity/base/base.h"/* * Globals */bool opal_maffinity_base_selected = false;const opal_maffinity_base_component_1_0_0_t *opal_maffinity_base_component = NULL;const opal_maffinity_base_module_1_0_0_t *opal_maffinity_base_module = NULL;int opal_maffinity_base_select(void){    int priority = 0, best_priority = 0;    opal_list_item_t *item = NULL;    mca_base_component_list_item_t *cli = NULL;    opal_maffinity_base_component_1_0_0_t *component = NULL,        *best_component = NULL;    const opal_maffinity_base_module_1_0_0_t *module = NULL,         *best_module = NULL;    char *value;    /* Register the framework MCA param and look it up */    mca_base_param_reg_string_name("maffinity", NULL,                                   "Which maffinity component to use (empty = auto-select)",                                   false, false,                                   NULL, &value);    if (NULL == value || 0 == strlen(value)) {        opal_output_verbose(10, opal_maffinity_base_output,                            "maffinity:select: auto-selecting");    } else {        opal_output_verbose(10, opal_maffinity_base_output,                            "maffinity:select: looking for %s component",                             value);    }    /* Traverse the list of available components; call their init       functions. */    best_priority = -1;    best_component = NULL;    module = NULL;    for (item = opal_list_get_first(&opal_maffinity_base_components_opened);         opal_list_get_end(&opal_maffinity_base_components_opened) != item;         item = opal_list_get_next(item) ) {        cli = (mca_base_component_list_item_t *) item;        component = (opal_maffinity_base_component_1_0_0_t *) cli->cli_component;        /* if there is an include list - item must be in the list to           be included */        if (NULL != value && strlen(value) > 0 &&            0 != strcmp(component->maffinityc_version.mca_component_name,                         value)) {            opal_output_verbose(10, opal_maffinity_base_output,                                 "maffinity:select: skipping %s component",                                 component->maffinityc_version.mca_component_name);            continue;        }        if (NULL == component->maffinityc_query) {            opal_output_verbose(10, opal_maffinity_base_output,                                "pafinity:select: no init function; ignoring component %s",                                component->maffinityc_version.mca_component_name );            continue;        }        opal_output_verbose(10, opal_maffinity_base_output,                             "maffinity:select: initializing component %s",                            component->maffinityc_version.mca_component_name);        module = component->maffinityc_query(&priority);        if (NULL == module) {            opal_output_verbose(10, opal_maffinity_base_output,                                "maffinity:select: init returned failure for component %s",                                component->maffinityc_version.mca_component_name );            continue;        }        opal_output_verbose(10, opal_maffinity_base_output,                            "maffinity:select: init returned priority %d",                             priority );        if (priority > best_priority) {            best_priority = priority;            best_component = component;            best_module = module;        }    }    /* Finished querying all components.  Check for the bozo case. */    if (NULL == best_component ) {        return OPAL_ERR_NOT_FOUND;    }     /* Now go through the opened list and close all the non-selected       components */    mca_base_components_close(opal_maffinity_base_output,                               &opal_maffinity_base_components_opened,                               (mca_base_component_t *) best_component);        /* Save the winner */    opal_maffinity_base_component = best_component;    opal_maffinity_base_module = best_module;    opal_output_verbose(10, opal_maffinity_base_output,                         "maffinity:select: component %s selected",                        best_component->maffinityc_version.mca_component_name);    opal_maffinity_base_selected = true;    /* Initialize the winner */    if (NULL != opal_maffinity_base_module) {        if (OPAL_SUCCESS != opal_maffinity_base_module->maff_module_init()) {            return OPAL_ERROR;        }    }    return OPAL_SUCCESS;}

⌨️ 快捷键说明

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