[RefBackend] Move runtime related code under npcomp/RefBackend/

Other than the dialect definitions (which will live in standard Dialect/
subdirectory), the goal here is to keep RefBackend-related code nested
in {include/npcomp,lib,test}/RefBackend.
pull/73/head
Sean Silva 2020-10-07 16:11:41 -07:00
parent 51d51241b4
commit 83ad70ef54
21 changed files with 34 additions and 35 deletions

View File

@ -11,7 +11,7 @@
#include "mlir/ExecutionEngine/ExecutionEngine.h" #include "mlir/ExecutionEngine/ExecutionEngine.h"
#include "mlir/IR/Module.h" #include "mlir/IR/Module.h"
#include "npcomp/runtime/UserAPI.h" #include "npcomp/RefBackend/Runtime/UserAPI.h"
#include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/SmallVector.h" #include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/StringRef.h" #include "llvm/ADT/StringRef.h"

View File

@ -0,0 +1,14 @@
RefBackendRt (namespace `refbackrt`) is the runtime support library for the
RefBackend backend. It is best practice to keep compiler and runtime code
totally firewalled.
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
As such, this directory should have NO DEPENDENCIES ON COMPILER CODE (no
LLVM libSupport, etc.).
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
This will cause some duplication, but history has shown that this
firewalling pays big dividends. In particular, compiler code very
frequently has binary sizes that are simply unacceptable in runtime
scenarios, such as MByte-sized dependencies like LLVM libSupport.
Runtime code should fit in kBytes.

View File

@ -13,15 +13,15 @@
// even if things superficially look similar, remember that there are no // even if things superficially look similar, remember that there are no
// LLVM utilities here, memory allocation should be kept to a minimum, etc. // LLVM utilities here, memory allocation should be kept to a minimum, etc.
// //
// npcomp/runtime/Support.h provides some minimal LLVM-like support code to keep // npcomp/RefBackend/Runtime/Support.h provides some minimal LLVM-like support
// the API familiar. // code to keep the API familiar.
// //
//===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===//
#ifndef NPCOMP_RUNTIME_USERAPI_H #ifndef NPCOMP_RUNTIME_USERAPI_H
#define NPCOMP_RUNTIME_USERAPI_H #define NPCOMP_RUNTIME_USERAPI_H
#include "npcomp/runtime/Support.h" #include "npcomp/RefBackend/Runtime/Support.h"
#include <atomic> #include <atomic>
#include <cstdlib> #include <cstdlib>

View File

@ -1,13 +0,0 @@
This directory is named `runtime` instead of `Runtime` in order to be a
slight reminder that it is a totally separate codebase from the compiler
code. (There is no difference in naming conventions other than this one
directory though)
It is best practice to keep compiler and runtime code totally firewalled.
Right now, we don't have a good place to put the runtime code that fits in
nicely with #include paths and stuff (we would like users to use something
like `npcomp/runtime/UserAPI.h` to be the include path).
We could have a top-level `runtime` directory with
`runtime/include/npcomp/runtime/UserAPI.h` but that just felt too
heavyweight right now.

View File

@ -16,7 +16,7 @@ target_link_libraries(NPCOMPBackendRefJITPythonModule
MLIRTargetLLVMIR MLIRTargetLLVMIR
NPCOMPPythonCommon NPCOMPPythonCommon
NPCOMPJITRuntime NPCOMPRefBackendJITHelpers
) )
npcomp_python_target_compile_options(NPCOMPBackendRefJITPythonModule) npcomp_python_target_compile_options(NPCOMPBackendRefJITPythonModule)

View File

@ -10,9 +10,9 @@
#include "pybind11/numpy.h" #include "pybind11/numpy.h"
#include "npcomp/JITRuntime/JITModule.h"
#include "npcomp/Python/MlirIr.h" #include "npcomp/Python/MlirIr.h"
#include "npcomp/Python/MlirPass.h" #include "npcomp/Python/MlirPass.h"
#include "npcomp/RefBackend/JITHelpers/JITModule.h"
using llvm::SmallVector; using llvm::SmallVector;
using llvm::StringRef; using llvm::StringRef;

View File

@ -2,10 +2,8 @@ add_subdirectory(CAPI)
add_subdirectory(Conversion) add_subdirectory(Conversion)
add_subdirectory(Dialect) add_subdirectory(Dialect)
add_subdirectory(RefBackend) add_subdirectory(RefBackend)
add_subdirectory(JITRuntime)
add_subdirectory(Python) add_subdirectory(Python)
add_subdirectory(Typing) add_subdirectory(Typing)
add_subdirectory(runtime)
if(NPCOMP_ENABLE_REFJIT) if(NPCOMP_ENABLE_REFJIT)
add_subdirectory(Backend/RefJIT) add_subdirectory(Backend/RefJIT)

View File

@ -1,3 +1,6 @@
add_subdirectory(Runtime)
add_subdirectory(JITHelpers)
add_mlir_library(NPCOMPRefBackend add_mlir_library(NPCOMPRefBackend
BypassShapes.cpp BypassShapes.cpp
RefBackend.cpp RefBackend.cpp

View File

@ -1,8 +1,8 @@
add_mlir_library(NPCOMPJITRuntime add_mlir_library(NPCOMPRefBackendJITHelpers
JITModule.cpp JITModule.cpp
ADDITIONAL_HEADER_DIRS ADDITIONAL_HEADER_DIRS
${PROJECT_SRC_DIR}/include/npcomp/JITRuntime ${PROJECT_SRC_DIR}/include/npcomp/RefBackend/JITHelpers
LINK_COMPONENTS LINK_COMPONENTS
Core Core

View File

@ -6,7 +6,7 @@
// //
//===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===//
#include "npcomp/JITRuntime/JITModule.h" #include "npcomp/RefBackend/JITHelpers/JITModule.h"
#include "mlir/ExecutionEngine/CRunnerUtils.h" #include "mlir/ExecutionEngine/CRunnerUtils.h"
#include "mlir/ExecutionEngine/OptUtils.h" #include "mlir/ExecutionEngine/OptUtils.h"
#include "npcomp/RefBackend/RefBackend.h" #include "npcomp/RefBackend/RefBackend.h"

View File

@ -11,9 +11,6 @@ set(LLVM_OPTIONAL_SOURCES
add_mlir_library(NPCOMPRuntime add_mlir_library(NPCOMPRuntime
Runtime.cpp Runtime.cpp
LINK_LIBS
MLIRExecutionEngine
EXCLUDE_FROM_LIBMLIR EXCLUDE_FROM_LIBMLIR
) )

View File

@ -16,7 +16,7 @@
#include <iostream> #include <iostream>
#include "CompilerDataStructures.h" #include "CompilerDataStructures.h"
#include "npcomp/runtime/UserAPI.h" #include "npcomp/RefBackend/Runtime/UserAPI.h"
using namespace npcomprt; using namespace npcomprt;

View File

@ -6,7 +6,7 @@
// //
//===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===//
#include "npcomp/runtime/UserAPI.h" #include "npcomp/RefBackend/Runtime/UserAPI.h"
#include <array> #include <array>
#include <cassert> #include <cassert>

View File

@ -34,7 +34,7 @@ target_link_libraries(mnist-playground PRIVATE
MLIRTargetLLVMIR MLIRTargetLLVMIR
MLIRSupport MLIRSupport
NPCOMPInitAll NPCOMPInitAll
NPCOMPJITRuntime NPCOMPRefBackendJITHelpers
${conversion_libs} ${conversion_libs}
${dialect_libs} ${dialect_libs}
${TORCH_LIBRARIES} ${TORCH_LIBRARIES}

View File

@ -14,7 +14,7 @@
#include "mlir/Parser.h" #include "mlir/Parser.h"
#include "mlir/Pass/PassManager.h" #include "mlir/Pass/PassManager.h"
#include "npcomp/InitAll.h" #include "npcomp/InitAll.h"
#include "npcomp/JITRuntime/JITModule.h" #include "npcomp/RefBackend/JITHelpers/JITModule.h"
#include "llvm/Support/InitLLVM.h" #include "llvm/Support/InitLLVM.h"
#include "llvm/Support/TargetSelect.h" #include "llvm/Support/TargetSelect.h"

View File

@ -21,7 +21,7 @@ target_link_libraries(npcomp-run-mlir PRIVATE
MLIRTargetLLVMIR MLIRTargetLLVMIR
MLIRSupport MLIRSupport
NPCOMPInitAll NPCOMPInitAll
NPCOMPJITRuntime NPCOMPRefBackendJITHelpers
${conversion_libs} ${conversion_libs}
${dialect_libs} ${dialect_libs}
) )

View File

@ -19,7 +19,7 @@
#include "mlir/Parser.h" #include "mlir/Parser.h"
#include "mlir/Pass/PassManager.h" #include "mlir/Pass/PassManager.h"
#include "npcomp/InitAll.h" #include "npcomp/InitAll.h"
#include "npcomp/JITRuntime/JITModule.h" #include "npcomp/RefBackend/JITHelpers/JITModule.h"
#include "llvm/Support/InitLLVM.h" #include "llvm/Support/InitLLVM.h"
#include "llvm/Support/TargetSelect.h" #include "llvm/Support/TargetSelect.h"