bang.lua 3 KB
Newer Older
PanZezhong's avatar
PanZezhong committed
1
2

local NEUWARE_HOME = os.getenv("NEUWARE_HOME") or "/usr/local/neuware"
3
add_includedirs(path.join(NEUWARE_HOME, "include"), {public = true})
PanZezhong's avatar
PanZezhong committed
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
add_linkdirs(path.join(NEUWARE_HOME, "lib64"))
add_linkdirs(path.join(NEUWARE_HOME, "lib"))
add_links("libcnrt.so")
add_links("libcnnl.so")
add_links("libcnnl_extra.so")
add_links("libcnpapi.so")

rule("mlu")
    set_extensions(".mlu")

    on_load(function (target)
        target:add("includedirs", path.join(os.projectdir(), "include"))
    end)

    on_build_file(function (target, sourcefile)
        local objectfile = target:objectfile(sourcefile)
        os.mkdir(path.directory(objectfile))

        local cc = "cncc"

        local includedirs = table.concat(target:get("includedirs"), " ")
        local args = {"-c", sourcefile, "-o", objectfile, "--bang-mlu-arch=mtp_592", "-O3", "-fPIC", "-Wall", "-Werror", "-std=c++17", "-pthread"}

        for _, includedir in ipairs(target:get("includedirs")) do
            table.insert(args, "-I" .. includedir)
        end

        os.execv(cc, args)
        table.insert(target:objectfiles(), objectfile)
    end)
rule_end()

local src_dir = path.join(os.projectdir(), "src", "infiniop")

target("infiniop-cambricon")
    set_kind("static")
PanZezhong's avatar
PanZezhong committed
40
    add_deps("infini-utils")
PanZezhong's avatar
PanZezhong committed
41
    on_install(function (target) end)
42
43

    add_cxflags("-lstdc++ -fPIC")
44
    add_cxxflags("-lstdc++ -fPIC")
45
46
    set_warnings("all", "error")

PanZezhong's avatar
PanZezhong committed
47
48
49
50
51
52
53
    set_languages("cxx17")
    add_files(src_dir.."/devices/bang/*.cc", src_dir.."/ops/*/bang/*.cc")
    local mlu_files = os.files(src_dir .. "/ops/*/bang/*.mlu")
    if #mlu_files > 0 then
        add_files(mlu_files, {rule = "mlu"})
    end
target_end()
54
55
56
57
58
59
60
61
62

target("infinirt-cambricon")
    set_kind("static")
    add_deps("infini-utils")
    set_languages("cxx17")
    on_install(function (target) end)
    -- Add include dirs
    add_files("../src/infinirt/bang/*.cc")
    add_cxflags("-lstdc++ -Wall -Werror -fPIC")
63
    add_cxxflags("-lstdc++ -Wall -Werror -fPIC")
64
target_end()
wooway777's avatar
wooway777 committed
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93

target("infiniccl-cambricon")
    set_kind("static")
    add_deps("infinirt")
    add_deps("infini-utils")
    set_warnings("all", "error")
    set_languages("cxx17")
    on_install(function (target) end)
    
    if has_config("ccl") then
        if is_plat("linux") then
            add_includedirs(NEUWARE_HOME .. "/include")
            add_linkdirs(NEUWARE_HOME .. "/lib64")
            add_links("cncl", "cnrt")

            if has_package("libibverbs") then
                add_links("ibverbs")
                add_defines("CNCL_RDMA_ENABLED=1")
            end

            if is_arch("arm64") then
                add_defines("CNCL_ARM64_COMPAT_MODE=1")
            end

            add_rpathdirs(NEUWARE_HOME .. "/lib64")
            add_runenvs("LD_LIBRARY_PATH", NEUWARE_HOME .. "/lib64")

            add_files("../src/infiniccl/cambricon/*.cc")
            add_cxflags("-fPIC")
94
            add_cxxflags("-fPIC")
wooway777's avatar
wooway777 committed
95
96
97
98
99
100
            add_ldflags("-fPIC")
        else
            print("[Warning] CNCL is currently only supported on Linux")
        end
    end
target_end()