示例#1
0
def main(args, root_dir=None):
    import confu
    options = confu.standard_parser("Google micro-Benchmark framework configuration script").parse_args(args)
    build = confu.Build.from_options(options, root_dir=root_dir)

    build.export_cpath("include", ["benchmark/*.h"])

    source_files = [
        "benchmark.cc",
        "benchmark_register.cc",
        "colorprint.cc",
        "commandlineflags.cc",
        "complexity.cc",
        "console_reporter.cc",
        "counter.cc",
        "csv_reporter.cc",
        "json_reporter.cc",
        "reporter.cc",
        "sleep.cc",
        "statistics.cc",
        "string_util.cc",
        "sysinfo.cc",
        "timers.cc",
    ]

    macros = [
        "HAVE_POSIX_REGEX",
        "NDEBUG",
    ]
    with build.options(source_dir="src", macros=macros, extra_include_dirs="src"):
        build.static_library("googlebenchmark",
            [build.cxx(source) for source in source_files])

    return build
示例#2
0
def main(args, root_dir=None):
    import confu
    options = confu.standard_parser("Google Test framework configuration script").parse_args(args)
    build = confu.Build.from_options(options, root_dir=root_dir)

    with build.options(source_dir="googletest/src", include_dirs=["googletest/include", "googletest"]):
        gtest_object = build.cxx("gtest-all.cc")

        with build.modules.default:
            build.export_cpath("googletest/include", ["gtest/**/*.h"])
            build.static_library("googletest",
                [gtest_object, build.cxx("gtest_main.cc")])

        with build.modules.core:
            build.export_cpath("googletest/include", ["gtest/**/*.h"])
            build.static_library("googletest-core", gtest_object)

    return build
示例#3
0
#!/usr/bin/env python

import confu
parser = confu.standard_parser("FXdiv configuration script")


def main(args):
    options = parser.parse_args(args)
    build = confu.Build.from_options(options)

    build.export_cpath("include", ["fxdiv.h"])

    with build.options(source_dir="test", deps=build.deps.googletest):
        build.unittest("multiply-high-test", build.cxx("multiply-high.cc"))
        build.unittest("quotient-test", build.cxx("quotient.cc"))

    with build.options(source_dir="bench", deps=build.deps.googlebenchmark):
        build.benchmark("init-bench", build.cxx("init.cc"))
        build.benchmark("multiply-bench", build.cxx("multiply.cc"))
        build.benchmark("divide-bench", build.cxx("divide.cc"))
        build.benchmark("quotient-bench", build.cxx("quotient.cc"))
        build.benchmark("round-down-bench", build.cxx("round-down.cc"))

    return build


if __name__ == "__main__":
    import sys
    main(sys.argv[1:]).generate()
示例#4
0
#!/usr/bin/env python
#
# Copyright (c) Facebook, Inc. and its affiliates.
# All rights reserved.
#
# This source code is licensed under the BSD-style license found in the
# LICENSE file in the root directory of this source tree.

import confu
from confu import arm, x86


parser = confu.standard_parser()


def main(args):
    options = parser.parse_args(args)
    build = confu.Build.from_options(options)

    build.export_cpath("include", ["q8gemm.h"])

    with build.options(
        source_dir="src",
        deps=[
            build.deps.cpuinfo,
            build.deps.clog,
            build.deps.psimd,
            build.deps.fxdiv,
            build.deps.pthreadpool,
            build.deps.FP16,
        ],
示例#5
0
#!/usr/bin/env python

import confu
parser = confu.standard_parser("cpuinfo configuration script")
parser.add_argument("--log",
                    dest="log_level",
                    choices=("none", "error", "warning", "info", "debug"),
                    default="error")
parser.add_argument("--mock", dest="mock", action="store_true")


def main(args):
    options = parser.parse_args(args)
    build = confu.Build.from_options(options)

    macros = {
        "CPUINFO_LOG_LEVEL": {
            "none": 0,
            "error": 1,
            "warning": 2,
            "info": 3,
            "debug": 4
        }[options.log_level],
        "CPUINFO_LOG_TO_STDIO": int(not options.mock),
        "CPUINFO_MOCK": int(options.mock),
    }
    if build.target.is_linux or build.target.is_android:
        macros["_GNU_SOURCE"] = 1

    build.export_cpath("include", ["cpuinfo.h"])
示例#6
0
#!/usr/bin/env python


import confu
parser = confu.standard_parser()
parser.add_argument("--backend", dest="backend", default="auto",
                    choices=["auto", "psimd", "scalar"])
parser.add_argument("--inference-only", dest="inference_only", default=False,
                    action="store_true",
                    help="Build only inference/forward pass functions to reduce library size")
parser.add_argument("--convolution-only", dest="convolution_only", default=False,
                    action="store_true",
                    help="Build only convolution functions to reduce library size")


def main(args):
    options = parser.parse_args(args)

    backend = options.backend
    if backend == "auto":
        if options.target.is_x86_64:
            backend = "x86_64"
        elif options.target.is_arm or options.target.is_arm64:
            backend = "arm"
        elif options.target.is_emscripten:
            backend = "scalar"
        else:
            backend = "psimd"

    build = confu.Build.from_options(options)
示例#7
0
#!/usr/bin/env python

import confu

parser = confu.standard_parser("clog configuration script")


def main(args):
    options = parser.parse_args(args)
    build = confu.Build.from_options(options)

    build.export_cpath("include", ["clog.h"])

    with build.options(source_dir="src", extra_include_dirs="src"):
        build.static_library("clog", build.cc("clog.c"))

    with build.options(source_dir="test",
                       deps={
                           (build, build.deps.googletest): all,
                           "log": build.target.is_android
                       }):
        build.unittest("clog-test", build.cxx("clog.cc"))

    return build


if __name__ == "__main__":
    import sys
    main(sys.argv[1:]).generate()
#!/usr/bin/env python


import confu
parser = confu.standard_parser("pthreadpool configuration script")


def main(args):
    options = parser.parse_args(args)
    build = confu.Build.from_options(options)

    build.export_cpath("include", ["pthreadpool.h"])

    with build.options(source_dir="src", extra_include_dirs="src", deps=build.deps.fxdiv):
        sources = ["threadpool-legacy.c"]
        if build.target.is_emscripten:
            sources.append("threadpool-shim.c")
        else:
            sources.append("threadpool-pthreads.c")
        build.static_library("pthreadpool", [build.cc(src) for src in sources])

    with build.options(source_dir="test", deps=[build, build.deps.googletest]):
        build.unittest("pthreadpool-test", build.cxx("pthreadpool.cc"))

    with build.options(source_dir="bench", deps=[build, build.deps.googlebenchmark]):
        build.benchmark("latency-bench", build.cxx("latency.cc"))
        build.benchmark("throughput-bench", build.cxx("throughput.cc"))

    return build

示例#9
0
#!/usr/bin/env python

import confu
parser = confu.standard_parser("FP16 configuration script")
parser.add_argument(
    "--compare",
    dest="compare",
    action="store_true",
    help=
    "Enable performance comparison with other half-precision implementations")


def main(args):
    options = parser.parse_args(args)
    build = confu.Build.from_options(options)

    build.export_cpath("include", ["fp16.h"])

    with build.options(source_dir="test",
                       extra_include_dirs="test",
                       deps=[build.deps.googletest, build.deps.psimd]):
        fp16_tables = build.cxx("tables.cc")
        build.unittest("ieee-to-fp32-bits",
                       [build.cxx("ieee-to-fp32-bits.cc"), fp16_tables])
        build.unittest("ieee-to-fp32-value",
                       [build.cxx("ieee-to-fp32-value.cc"), fp16_tables])
        build.unittest("ieee-from-fp32-value",
                       [build.cxx("ieee-from-fp32-value.cc"), fp16_tables])

        build.unittest("alt-to-fp32-bits",
                       [build.cxx("alt-to-fp32-bits.cc"), fp16_tables])
示例#10
0
#!/usr/bin/env python


import confu
parser = confu.standard_parser("clog configuration script")


def main(args):
    options = parser.parse_args(args)
    build = confu.Build.from_options(options)

    build.export_cpath("include", ["clog.h"])

    with build.options(source_dir="src", extra_include_dirs="src"):
        build.static_library("clog", build.cc("clog.c"))

    with build.options(source_dir="test", deps={
            (build, build.deps.googletest): all,
            "log": build.target.is_android}):
        build.unittest("clog-test", build.cxx("clog.cc"))

    return build

if __name__ == "__main__":
    import sys
    main(sys.argv[1:]).generate()
示例#11
0
#!/usr/bin/env python


import confu
parser = confu.standard_parser("cpuinfo configuration script")
parser.add_argument("--log", dest="log_level",
    choices=("none", "fatal", "error", "warning", "info", "debug"), default="error")
parser.add_argument("--mock", dest="mock", action="store_true")


def main(args):
    options = parser.parse_args(args)
    build = confu.Build.from_options(options)

    macros = {
        "CPUINFO_LOG_LEVEL": {"none": 0, "fatal": 1, "error": 2, "warning": 3, "info": 4, "debug": 5}[options.log_level],
        "CLOG_LOG_TO_STDIO": int(not options.mock),
        "CPUINFO_MOCK": int(options.mock),
    }
    if build.target.is_linux or build.target.is_android:
        macros["_GNU_SOURCE"] = 1

    build.export_cpath("include", ["cpuinfo.h"])

    with build.options(source_dir="src", macros=macros, extra_include_dirs="src", deps=build.deps.clog):
        sources = ["init.c", "api.c"]
        if build.target.is_x86 or build.target.is_x86_64:
            sources += [
                "x86/init.c", "x86/info.c", "x86/vendor.c", "x86/uarch.c", "x86/name.c",
                "x86/topology.c",
                "x86/cache/init.c", "x86/cache/descriptor.c", "x86/cache/deterministic.c",
示例#12
0
#!/usr/bin/env python


import confu
parser = confu.standard_parser("FXdiv configuration script")


def main(args):
    options = parser.parse_args(args)
    build = confu.Build.from_options(options)

    build.export_cpath("include", ["fxdiv.h"])

    with build.options(source_dir="test", deps=build.deps.googletest):
        build.unittest("multiply-high-test", build.cxx("multiply-high.cc"))
        build.unittest("quotient-test", build.cxx("quotient.cc"))

    with build.options(source_dir="bench", deps=build.deps.googlebenchmark):
        build.benchmark("init-bench", build.cxx("init.cc"))
        build.benchmark("multiply-bench", build.cxx("multiply.cc"))
        build.benchmark("divide-bench", build.cxx("divide.cc"))
        build.benchmark("quotient-bench", build.cxx("quotient.cc"))
        build.benchmark("round-down-bench", build.cxx("round-down.cc"))

    return build


if __name__ == "__main__":
    import sys
    main(sys.argv[1:]).generate()