kpccl_shm_comm_size
获取kpccl comm通信域大小。
接口定义
int kpccl_shm_comm_size(kpccl_shm_comm_h comm, int *size);
参数
参数名  | 
类型  | 
描述  | 
输入/输出  | 
|---|---|---|---|
comm  | 
kpccl_shm_comm_h  | 
kpccl通信域  | 
输入  | 
size  | 
int *  | 
需要获取的kpccl通信域大小  | 
输出  | 
返回值
- 成功:返回KPCCL_OK
 - 失败:返回KPCCL_ERROR
 
示例
#include <stdio.h> 
#include <mpi.h>
#include "kpccl.h" 
 
int oob_allgather_callback(const void *sendbuf, void *recvbuf, int size, void *group,kpccl_shm_datatype_t datatype)
{
switch (datatype) {
        case KPCCL_SHM_DATATYPE_CHAR:
            return MPI_Allgather(sendbuf, size, MPI_CHAR, recvbuf, size, MPI_CHAR, (MPI_Comm)group);
        case KPCCL_SHM_DATATYPE_INT:
            return MPI_Allgather(sendbuf, size, MPI_INT, recvbuf, size, MPI_INT, (MPI_Comm)group);
        case KPCCL_SHM_DATATYPE_LONG:
            return MPI_Allgather(sendbuf, size, MPI_LONG, recvbuf, size, MPI_LONG, (MPI_Comm)group);
        case KPCCL_SHM_DATATYPE_FLOAT:
            return MPI_Allgather(sendbuf, size, MPI_FLOAT, recvbuf, size, MPI_FLOAT, (MPI_Comm)group);
        case KPCCL_SHM_DATATYPE_DOUBLE:
            return MPI_Allgather(sendbuf, size, MPI_DOUBLE, recvbuf, size, MPI_DOUBLE, (MPI_Comm)group);
        default:
            kpccl_error("not support datatype");
            return KPCCL_ERROR;
    }
}
int oob_barrier_callback(void *group) 
{
    return MPI_Barrier((MPI_Comm)group);
}
 
int main()
{
    int myid, numprocs;
    MPI_Comm comm = MPI_COMM_WORLD;
    MPI_Comm_size(comm, &numprocs);
    MPI_Comm_rank(comm, &myid);
    
    kpccl_shm_oob_cb_t oob_cbs;
    kpccl_shm_oob_cb_h oob_cbs_h = &oob_cbs;
    oob_cbs_h->oob_allgather = oob_allgather_callback;
    oob_cbs_h->oob_barrier = oob_barrier_callback;
 
    kpccl_shm_comm_h kpccl_comm;
    kpccl_shm_comm_create(numprocs, myid, myid, oob_cbs_h , (void *)comm, &kpccl_comm);
    int kpccl_rank, kpccl_size;
    kpccl_shm_comm_rank(kpccl_comm, &kpccl_rank);
    kpccl_shm_comm_size(kpccl_comm, &kpccl_size);
    kpccl_shm_comm_destroy(kpccl_comm);
}
 上述示例演示了创建、清理一个kpccl comm的流程。kpccl_shm_comm_size函数获取kpccl comm的size。
父主题: 共享内存通信函数