Exemple #1
0
def test_group_broadcast():
    row_procs = []
    for i in range(0,8,2):
        row_procs.append(list(range(i,i+2)))

    col_procs = []
    for i in range(2):
        col_procs.append(list(range(i,8,2)))

    row_groups = []
    for i in range(len(row_procs)):
        row_groups.append(ad.new_group_comm(row_procs[i]))

    col_groups = []
    for i in range(len(col_procs)):
        col_groups.append(ad.new_group_comm(col_procs[i]))

    rank_row = rank//2
    rank_col = rank%2
    group_row = row_procs[rank_row]
    group_col = col_procs[rank_col]
    comm_row = row_groups[rank_row]
    comm_col = col_groups[rank_col]
    
    a = ndarray.array(np.array([rank,rank,rank,rank,rank]),ctx=ctx)
    comm_row.dlarrayBroadcast(a, a, ncclDataType_t.ncclFloat32, root = group_row[1])
    print("Broadcast device=%d, a:"%device_id,a.asnumpy()) 
    
    b = ndarray.array(np.array([rank,rank,rank,rank,rank]),ctx=ctx)  
    comm_col.dlarrayBroadcast(b, b, ncclDataType_t.ncclFloat32, root = group_col[1])
    print("Broadcast device=%d, b:"%device_id,b.asnumpy())   
Exemple #2
0
def test_allgather(group):
    comm1 = ad.new_group_comm(group)
    a = ndarray.array(np.array([rank,rank]),ctx=ctx)
    b = ndarray.array(np.zeros(2*len(group)),ctx=ctx)
    if rank in group:
        comm1.dlarrayAllGather(a, b, ncclDataType_t.ncclFloat32)
    print("Allgather device=%d"%comm1.device_id.value,b.asnumpy())
Exemple #3
0
def test_broadcast(group, root):
    comm1 = ad.new_group_comm(group)
    a = ndarray.array(np.array([-1,-1,-1,-1,-1]),ctx=ctx)
    if rank == root:
        a = ndarray.array(np.array([2,3,4,5,6]),ctx=ctx)
    if rank in group:
        comm1.dlarrayBroadcast(a, a, ncclDataType_t.ncclFloat32, root = root)
    print("Broadcast device=%d"%comm1.device_id.value,a.asnumpy())  
Exemple #4
0
def get_proc_groups(size, replication):
    if replication == 1:
        return None, None, None, None

    row_procs = []
    for i in range(0, size, replication):
        row_procs.append(list(range(i, i + replication)))

    col_procs = []
    for i in range(replication):
        col_procs.append(list(range(i, size, replication)))

    row_groups = []
    for i in range(len(row_procs)):
        row_groups.append(ad.new_group_comm(row_procs[i]))

    col_groups = []
    for i in range(len(col_procs)):
        col_groups.append(ad.new_group_comm(col_procs[i]))

    return row_procs, col_procs, row_groups, col_groups
Exemple #5
0
def test_default():
    comm1 = ad.new_group_comm()
    a = ndarray.array(np.array([1,2,3,4,5]),ctx=ctx)
    comm1.dlarrayNcclAllReduce(a, a, ncclDataType_t.ncclFloat32, reduceop=ncclRedOp_t.ncclSum)
    print("Default Allreduce device=%d"%comm1.device_id.value,a.asnumpy())