Browse Source

fix(tree): fix copybara

GitOrigin-RevId: 4047219962
release-1.3
Megvii Engine Team 4 years ago
parent
commit
f3f9acf112
6 changed files with 134 additions and 5 deletions
  1. +13
    -0
      imperative/python/test/unit/utils/test_network_node.py
  2. +2
    -5
      src/serialization/impl/extern_c_opr.cpp
  3. +8
    -0
      tools/mlir/mgb-file-check/CMakeLists.txt
  4. +3
    -0
      tools/mlir/mgb-file-check/mgb-file-check.sh
  5. +23
    -0
      tools/mlir/mgb-opt/CMakeLists.txt
  6. +85
    -0
      tools/mlir/mgb-opt/mgb-opt.cpp

+ 13
- 0
imperative/python/test/unit/utils/test_network_node.py View File

@@ -466,6 +466,19 @@ def test_topk():
check_pygraph_dump(fwd, [x], [top, indices])


def test_nvof():
if not is_cuda_available():
return
src_shape = (4, 5, 224, 224, 4)
src = np.random.randint(0, 255, src_shape).astype("uint8")
src = Tensor(src)

@trace(symbolic=True, capture_as_const=True)
def fwd(src):
return F.nn.nvof(src, precision=1)

result = fwd(src)
check_pygraph_dump(fwd, [src], [result])


def test_random():


+ 2
- 5
src/serialization/impl/extern_c_opr.cpp View File

@@ -290,11 +290,8 @@ ExternCOprRunner::ExternCOprRunner(std::string& name,
m_dump_name{name},
m_param{nullptr} {
mgb_assert(m_desc->size == sizeof(MGBOprDesc),
"invalid MGBOprDesc size: expect=%zu got=%u, may caused by "
"extern_c_opr.h mismatch, please confirm that the "
"extern_c_opr.h used when compiling the loader is consistent "
"with the runtime caller build used",
sizeof(MGBOprDesc), m_desc->size);
"invalid MGBOprDesc size: expect=%zu got=%u", sizeof(MGBOprDesc),
m_desc->size);
for (auto i : inputs) {
add_input({i});
}


+ 8
- 0
tools/mlir/mgb-file-check/CMakeLists.txt View File

@@ -0,0 +1,8 @@
add_custom_command(
OUTPUT link_sh
COMMAND ${CMAKE_COMMAND} -E create_symlink
${PROJECT_SOURCE_DIR}/tools/mlir/mgb-file-check/mgb-file-check.sh
${PROJECT_BINARY_DIR}/tools/mlir/mgb-file-check/mgb-file-check
)

add_custom_target(mgb-file-check DEPENDS link_sh)

+ 3
- 0
tools/mlir/mgb-file-check/mgb-file-check.sh View File

@@ -0,0 +1,3 @@
#!/bin/bash -e

FileCheck --enable-var-scope --dump-input=fail "$@"

+ 23
- 0
tools/mlir/mgb-opt/CMakeLists.txt View File

@@ -0,0 +1,23 @@
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
get_property(conversion_libs GLOBAL PROPERTY MLIR_CONVERSION_LIBS)
set(LIBS
${dialect_libs}
${conversion_libs}
LLVMSupport
MLIROptLib
MLIRIR
MLIRPass
MLIRSupport
)
add_executable(mgb-opt mgb-opt.cpp)

target_include_directories(
mgb-opt
PRIVATE ${MLIR_LLVM_INCLUDE_DIR} ${PROJECT_SOURCE_DIR}/src/jit/include
${PROJECT_BINARY_DIR}/src/jit/include)

add_dependencies(mgb-opt mgb_dialect)

target_link_libraries(mgb-opt PRIVATE ${LIBS} megbrain megdnn ${MGE_CUDA_LIBS})

llvm_update_compile_flags(mgb-opt)

+ 85
- 0
tools/mlir/mgb-opt/mgb-opt.cpp View File

@@ -0,0 +1,85 @@
/**
* \file tools/mlir/mgb-opt/mgb-opt.cpp
* MegEngine is Licensed under the Apache License, Version 2.0 (the "License")
*
* Copyright (c) 2014-2021 Megvii Inc. All rights reserved.
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT ARRANTIES OR CONDITIONS OF ANY KIND, either express or
* implied.
*/

#include "megbrain/jit/mlir/ir/dialect.h"
#include "megbrain/jit/mlir/ir/passes.h"

#include <llvm/Support/CommandLine.h>
#include <llvm/Support/InitLLVM.h>
#include <llvm/Support/PrettyStackTrace.h>
#include <llvm/Support/SourceMgr.h>
#include <llvm/Support/ToolOutputFile.h>

#include <mlir/Dialect/Affine/IR/AffineOps.h>
#include <mlir/Dialect/LLVMIR/LLVMDialect.h>
#include <mlir/IR/AsmState.h>
#include <mlir/InitAllDialects.h>
#include <mlir/InitAllPasses.h>
#include <mlir/Pass/Pass.h>
#include <mlir/Pass/PassManager.h>
#include <mlir/Support/FileUtilities.h>
#include <mlir/Support/MlirOptMain.h>

using namespace llvm;
using namespace mlir;

//! TODO: Implement a custom MlirOptMain that supports the following flags.
static cl::opt<bool> print_mlir{
"print-mlir",
cl::desc("Prints MLIR IR after translation"),
cl::init(false),
};

static cl::list<std::string> input_values{
"input-value",
cl::desc("Input shapes and optional values"),
cl::ZeroOrMore,
};

static cl::opt<std::string> input_values_file{
"input-value-file",
cl::desc("Provides a file for input shapes and optional values (see "
"ParseToVariantListFromFile in vm_util.h for details)"),
cl::init(""),
};

static cl::opt<bool> run{
"run",
cl::desc("Runs the module (vs. just compiling and verifing)"),
cl::init(true),
};

static cl::list<std::string> run_args{
"run-arg",
cl::desc("Argument passed to the execution flag parser"),
cl::ZeroOrMore,
};

namespace mgb {
namespace jit {
void register_test_mgb_to_affine_lowering_pass();
void register_test_affine_to_llvm_lowering_pass();
} // namespace jit
} // namespace mgb

int main(int argc, char** argv) {
mlir::registerAllPasses();

mlir::DialectRegistry registry;
mlir::registerAllDialects(registry);
registry.insert<mgb::jit::MgbDialect>();

mgb::jit::register_test_mgb_to_affine_lowering_pass();
mgb::jit::register_test_affine_to_llvm_lowering_pass();

return failed(MlirOptMain(argc, argv, "MLIR modular optimizer driver", registry));
}

Loading…
Cancel
Save