You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
134 lines
5.1 KiB
134 lines
5.1 KiB
/**
|
|
* Copyright 2019-2020 Huawei Technologies Co., Ltd
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
/**
|
|
* @file hccl.h
|
|
* @brief HCCL API
|
|
*/
|
|
|
|
#ifndef HCCL_H_
|
|
#define HCCL_H_
|
|
|
|
#include <hccl/hccl_types.h>
|
|
#include <acl/acl.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif // __cplusplus
|
|
|
|
/**
|
|
* @brief Initialize HCCL.
|
|
*
|
|
* @param clusterInfo A string identifying the cluster info file path, include file name.
|
|
* @param rank A integer identifying the identify for the rank.
|
|
* @param comm A pointer identifying the initialized communication resource.
|
|
* @return HcclResult
|
|
* @see HcclCommDestroy()
|
|
*/
|
|
extern HcclResult HcclCommInitClusterInfo(const char *clusterInfo, uint32_t rank, HcclComm *comm);
|
|
|
|
/**
|
|
* @brief Get hccl root info.
|
|
*
|
|
* @param rootInfo A pointer identifying the hccl root info.
|
|
* @return HcclResult
|
|
*/
|
|
extern HcclResult HcclGetRootInfo(HcclRootInfo *rootInfo);
|
|
|
|
/**
|
|
* @brief Initialize HCCL with root info.
|
|
*
|
|
* @param nRanks A integer identifying the rank size of the cluster.
|
|
* @param rootInfo A struct identifying the hccl root info.
|
|
* @param rank A integer identifying the identify for the rank.
|
|
* @param comm A pointer identifying the initialized communication resource.
|
|
* @return HcclResult
|
|
* @see HcclCommDestroy()
|
|
*/
|
|
extern HcclResult HcclCommInitRootInfo(uint32_t nRanks, const HcclRootInfo *rootInfo, uint32_t rank, HcclComm *comm);
|
|
|
|
/**
|
|
* @brief AllReduce operator.
|
|
*
|
|
* @param sendBuf A pointer identifying the input data address of the operator.
|
|
* @param recvBuf A pointer identifying the output data address of the operator.
|
|
* @param count An integer(u64) identifying the number of the output data.
|
|
* @param dataType The data type of the operator, must be one of the following types: int8, int16, int32, float16, float32.
|
|
* @param op The reduction type of the operator, must be one of the following types: sum, min, max, prod.
|
|
* @param comm A pointer identifying the communication resource based on.
|
|
* @param stream A pointer identifying the stream information.
|
|
* @return HcclResult
|
|
*/
|
|
extern HcclResult HcclAllReduce(void *sendBuf, void *recvBuf, uint64_t count, HcclDataType dataType,
|
|
HcclReduceOp op, HcclComm comm, aclrtStream stream);
|
|
|
|
/**
|
|
* @brief Broadcast operator.
|
|
*
|
|
* @param buf A pointer identifying the data address of the operator.
|
|
* @param count An integer(u64) identifying the number of the data.
|
|
* @param dataType The data type of the operator, must be one of the following types: int8, int32, float16, float32.
|
|
* @param root An integer(u32) identifying the the root rank in the operator.
|
|
* @param comm A pointer identifying the communication resource based on
|
|
* @param stream A pointer identifying the stream information.
|
|
* @return HcclResult
|
|
*/
|
|
extern HcclResult HcclBroadcast(void *buf, uint64_t count, HcclDataType dataType, uint32_t root, HcclComm comm,
|
|
aclrtStream stream);
|
|
|
|
/**
|
|
* @brief ReduceScatter operator.
|
|
*
|
|
* @param sendBuf A pointer identifying the input data address of the operator.
|
|
* @param recvBuf A pointer identifying the output data address of the operator.
|
|
* @param recvCount An integer(u64) identifying the number of the output data.
|
|
* @param dataType The data type of the operator, must be one of the following types: int8, int32, float16, float32.
|
|
* @param op The reduction type of the operator, must be one of the following types: sum, min, max, prod.
|
|
* @param comm A pointer identifying the communication resource based on.
|
|
* @param stream A pointer identifying the stream information.
|
|
* @return HcclResult
|
|
*/
|
|
extern HcclResult HcclReduceScatter(void *sendBuf, void *recvBuf, uint64_t recvCount, HcclDataType dataType,
|
|
HcclReduceOp op, HcclComm comm, aclrtStream stream);
|
|
|
|
/**
|
|
* @brief AllGather operator.
|
|
*
|
|
* @param sendBuf A pointer identifying the input data address of the operator.
|
|
* @param recvBuf A pointer identifying the output data address of the operator.
|
|
* @param sendCount An integer(u64) identifying the number of the input data.
|
|
* @param dataType The data type of the operator, must be one of the following types: int8, int32, float16, float32.
|
|
* @param comm A pointer identifying the communication resource based on.
|
|
* @param stream A pointer identifying the stream information.
|
|
* @return HcclResult
|
|
*/
|
|
extern HcclResult HcclAllGather(void *sendBuf, void *recvBuf, uint64_t sendCount, HcclDataType dataType,
|
|
HcclComm comm, aclrtStream stream);
|
|
|
|
/**
|
|
* @brief Destroy HCCL comm
|
|
*
|
|
* @param comm A pointer identifying the communication resource targetting
|
|
* @return HcclResult
|
|
* @see HcclCommInitClusterInfo()
|
|
*/
|
|
extern HcclResult HcclCommDestroy(HcclComm comm);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif // __cplusplus
|
|
#endif // HCCL_H_
|