test_2p5d.py 1.12 KB
Newer Older
zbian's avatar
zbian committed
1
import pytest
Frank Lee's avatar
Frank Lee committed
2
3
import torch
import torch.multiprocessing as mp
zbian's avatar
zbian committed
4
5

from colossalai.core import global_context as gpc
Frank Lee's avatar
Frank Lee committed
6
from colossalai.initialize import launch
アマデウス's avatar
アマデウス committed
7
from checks_2p5d.check_layer_2p5d import check_linear, check_layernorm, check_classifier
Frank Lee's avatar
Frank Lee committed
8
9
10
from checks_2p5d.check_operation_2p5d import check_AB, check_ABT, check_ATB
from functools import partial

zbian's avatar
zbian committed
11
12
13
14

CONFIG = dict(
    parallel=dict(
        pipeline=dict(size=1),
アマデウス's avatar
アマデウス committed
15
        tensor=dict(size=4, mode='2.5d', depth=1),
zbian's avatar
zbian committed
16
17
18
19
20
21
22
23
24
25
26
27
28
    ),
)


def check_operations():
    check_AB()
    check_ABT()
    check_ATB()


def check_layer():
    check_linear()
    check_layernorm()
アマデウス's avatar
アマデウス committed
29
    check_classifier()
zbian's avatar
zbian committed
30
31


Frank Lee's avatar
Frank Lee committed
32
def check_layer_and_operation(rank, world_size):
Frank Lee's avatar
Frank Lee committed
33
    launch(config=CONFIG,
Frank Lee's avatar
Frank Lee committed
34
35
36
37
38
39
           rank=rank,
           world_size=world_size,
           host='localhost',
           port=29922,
           backend='nccl')

zbian's avatar
zbian committed
40
    check_operations()
Frank Lee's avatar
Frank Lee committed
41
    check_layer()
zbian's avatar
zbian committed
42
    gpc.destroy()
Frank Lee's avatar
Frank Lee committed
43
44
45
46
47
    torch.cuda.empty_cache()


@pytest.mark.dist
def test_2p5d():
アマデウス's avatar
アマデウス committed
48
    world_size = 4
Frank Lee's avatar
Frank Lee committed
49
50
    run_func = partial(check_layer_and_operation, world_size=world_size)
    mp.spawn(run_func, nprocs=world_size)
zbian's avatar
zbian committed
51
52
53
54


if __name__ == '__main__':
    test_2p5d()