/************************************************************************* * SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 * * See LICENSE.txt for more license information *************************************************************************/ #include #include #include #include "nccl/env.h" /** * Initialize the environment plugin * * This function is called by NCCL during initialization to set up the plugin. * It receives NCCL version information and a logging function for debug output. */ static ncclResult_t ncclEnvInit(uint8_t ncclMajor, uint8_t ncclMinor, uint8_t ncclPatch, const char* suffix) { return ncclSuccess; } /** * Finalize the environment plugin * * This function is called by NCCL during finalization to clean up plugin resources. */ static ncclResult_t ncclEnvFinalize(void) { return ncclSuccess; } /** * Get environment variable value * * This function is called by NCCL whenever it needs to retrieve an environment variable. * It delegates to the system getenv function and provides optional logging. * * @param name The name of the environment variable to retrieve * @return Pointer to the environment variable value string, or NULL if not found */ static const char* ncclEnvGetEnv(const char* name) { return getenv(name); } /** * Export the plugin structure * * This structure must be exported with the correct symbol name for NCCL to find it. * The symbol name should match NCCL_ENV_PLUGIN_SYMBOL defined in nccl_env.h. */ const ncclEnv_v1_t ncclEnvPlugin_v1 = { .name = "ncclEnvExample", .init = ncclEnvInit, .finalize = ncclEnvFinalize, .getEnv = ncclEnvGetEnv, };