Skip to content

Commit

Permalink
Update LLVM Version to 16.0.0 (#9985)
Browse files Browse the repository at this point in the history
prepare for mlir codegen

---------

Co-authored-by: oneflow-ci-bot <ci-bot@oneflow.org>
  • Loading branch information
howin98 and oneflow-ci-bot authored Apr 7, 2023
1 parent 1559000 commit e619579
Show file tree
Hide file tree
Showing 55 changed files with 1,387 additions and 1,374 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ env:
ONEFLOW_FACE_SRC: oneflow_face
ONEFLOW_FACE_COMMIT: 110a97e8d5737a1f1856281a7df556a5ac8f06de
ONEFLOW_IREE_SRC: oneflow_iree
ONEFLOW_IREE_COMMIT: 30e7dec07ca11287d1317296e08b12d815a013fe
ONEFLOW_IREE_COMMIT: 65c3c249a6d8e39483ed1a7c08b1d624d3103ffa
ONE_FX_SRC: one-fx
ONE_FX_COMMIT: da4051c7f1ace7a20b3f54395b580cd102fc99da
TEST_WITH_TORCH_IMG_TAG: registry.cn-beijing.aliyuncs.com/oneflow/test-with-pytorch-1.10.0-cuda11.3-cudnn8-runtime:67505df94022a6b4b979f013e2cbd3e0cdac3828
Expand Down
10 changes: 8 additions & 2 deletions cmake/oneflow.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -255,20 +255,26 @@ if("${LLVM_MONO_REPO_URL}" STREQUAL
"https://github.com/llvm/llvm-project/archive/32805e60c9de1f82887cd2af30d247dcabd2e1d3.zip"
OR "${LLVM_MONO_REPO_URL}" STREQUAL
"https://github.com/llvm/llvm-project/archive/6d6268dcbf0f48e43f6f9fe46b3a28c29ba63c7d.zip"
OR "${LLVM_MONO_REPO_URL}" STREQUAL
"https://github.com/llvm/llvm-project/archive/refs/tags/llvmorg-16.0.0-rc4.zip"
OR "${LLVM_MONO_REPO_URL}" STREQUAL
"https://github.com/llvm/llvm-project/archive/refs/tags/llvmorg-15.0.6.zip"
OR "${LLVM_MONO_REPO_MD5}" STREQUAL "f2f17229cf21049663b8ef4f2b6b8062"
OR "${LLVM_MONO_REPO_MD5}" STREQUAL "6b7c6506d5922de9632c8ff012b2f945"
OR "${LLVM_MONO_REPO_MD5}" STREQUAL "e0ea669a9f0872d35bffda5ec6c5ac6f"
OR "${LLVM_MONO_REPO_MD5}" STREQUAL "241a333828bba1efa35aff4c4fc2ce87"
OR "${LLVM_MONO_REPO_MD5}" STREQUAL "075fbfdf06cb3f02373ea44971af7b03"
OR "${LLVM_MONO_REPO_MD5}" STREQUAL "e412dc61159b5e929b0c94e44b11feb2"
OR "${LLVM_MONO_REPO_MD5}" STREQUAL "1ccc00accc87a1a5d42a275d6e31cd8c"
OR "${LLVM_MONO_REPO_MD5}" STREQUAL "b64481eaca658a2ff4e3e193440d0f68"
OR "${LLVM_MONO_REPO_MD5}" STREQUAL "334997b4879aba15d9323a732356cf2a")
unset(LLVM_MONO_REPO_URL CACHE)
unset(LLVM_MONO_REPO_MD5 CACHE)
endif()
set(LLVM_MONO_REPO_URL "https://github.com/llvm/llvm-project/archive/refs/tags/llvmorg-15.0.6.zip"
set(LLVM_MONO_REPO_URL "https://github.com/llvm/llvm-project/archive/refs/tags/llvmorg-16.0.0.zip"
CACHE STRING "")
use_mirror(VARIABLE LLVM_MONO_REPO_URL URL ${LLVM_MONO_REPO_URL})
set(LLVM_MONO_REPO_MD5 "1ccc00accc87a1a5d42a275d6e31cd8c" CACHE STRING "")
set(LLVM_MONO_REPO_MD5 "78172b0f67282e28956cd310612091fd" CACHE STRING "")
set(ONEFLOW_BUILD_ROOT_DIR "${PROJECT_BINARY_DIR}")
add_subdirectory(${PROJECT_SOURCE_DIR}/oneflow/ir)
if(WITH_MLIR)
Expand Down
4 changes: 4 additions & 0 deletions cmake/util.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -223,6 +223,10 @@ function(target_treat_warnings_as_errors target)

# disable visibility warnings related to https://github.com/Oneflow-Inc/oneflow/pull/3676.
target_try_compile_options(${target} -Wno-error=attributes)

# disable error about XXX has no out-of-line virtual method definitions; its vtable will be emitted in every translation unit
target_try_compile_options(${target} -Wno-error=weak-vtables)

endif()
endfunction()

Expand Down
4 changes: 2 additions & 2 deletions oneflow/ir/include/OneFlow/OKL/Kernel/LauncherState.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ limitations under the License.
#include "OneFlow/OKL/Kernel/JITEngine.h"
#include "OneFlow/OKL/Kernel/LauncherContext.h"
#include "OneFlow/OKL/Conversion/Conversion.h"
#include "mlir/Dialect/Arithmetic/IR/Arithmetic.h"
#include "mlir/Dialect/Arith/IR/Arith.h"
#include "mlir/IR/DialectRegistry.h"
#include "mlir/Target/LLVMIR/Dialect/LLVMIR/LLVMToLLVMIRTranslation.h"

Expand All @@ -31,7 +31,7 @@ namespace okl {
inline mlir::DialectRegistry GetRegistry() {
mlir::DialectRegistry registry;
registry.insert<mlir::oneflow::OneFlowDialect, mlir::okl::OKLDialect, mlir::func::FuncDialect,
mlir::arith::ArithmeticDialect, mlir::LLVM::LLVMDialect>();
mlir::arith::ArithDialect, mlir::LLVM::LLVMDialect>();
mlir::registerLLVMDialectTranslation(registry);
return registry;
}
Expand Down
38 changes: 19 additions & 19 deletions oneflow/ir/include/OneFlow/OneFlowBase.td
Original file line number Diff line number Diff line change
Expand Up @@ -101,8 +101,8 @@ class OneFlow_Op<string mnemonic, list<Trait> traits = []> :
let ctrl_input = (ins Variadic<AnyType>:$ctrl_inputs);
let ctrl_output = (outs Optional<AnyType>:$ctrl_output);
let trait_attrs = (ins
I32ElementsAttr:$operand_segment_sizes,
I32ElementsAttr:$result_segment_sizes
DenseI32ArrayAttr:$operand_segment_sizes,
DenseI32ArrayAttr:$result_segment_sizes
);
}

Expand All @@ -126,14 +126,14 @@ class OneFlow_UserBaseWithCtrlOp<string mnemonic, list<Trait> traits = []> :
let ctrl_input = (ins Variadic<AnyType>:$ctrl_inputs);
let ctrl_output = (outs Optional<AnyType>:$ctrl_output);
let trait_attrs = (ins
I32ElementsAttr:$operand_segment_sizes,
I32ElementsAttr:$result_segment_sizes
DenseI32ArrayAttr:$operand_segment_sizes,
DenseI32ArrayAttr:$result_segment_sizes
);
}


class OneFlow_ConvolutionBaseOp<string mnemonic, list<Trait> traits = []> :
OneFlow_BaseOp<mnemonic, !listconcat(traits, [NoSideEffect, DeclareOpInterfaceMethods<UserOpCompatibleInterface>])> {
OneFlow_BaseOp<mnemonic, !listconcat(traits, [NoMemoryEffect, DeclareOpInterfaceMethods<UserOpCompatibleInterface>])> {
let summary = "OneFlow convolution operation";
let description = [{
"The convolution operator consumes an input tensor and a filter, and"
Expand All @@ -157,7 +157,7 @@ class OneFlow_ConvolutionBaseOp<string mnemonic, list<Trait> traits = []> :
DefaultValuedAttr<StrAttr, "\"\"">:$tuning_cache
);
let trait_attrs = (ins
I32ElementsAttr:$operand_segment_sizes
DenseI32ArrayAttr:$operand_segment_sizes
);
let has_check_fn = 1;
let has_logical_tensor_desc_infer_fn = 1;
Expand All @@ -168,7 +168,7 @@ class OneFlow_ConvolutionBaseOp<string mnemonic, list<Trait> traits = []> :
}

class OneFlow_TFPoolBaseOp<string mnemonic, list<Trait> traits = []> :
OneFlow_BaseOp<mnemonic, !listconcat(traits, [NoSideEffect, DeclareOpInterfaceMethods<UserOpCompatibleInterface>])> {
OneFlow_BaseOp<mnemonic, !listconcat(traits, [NoMemoryEffect, DeclareOpInterfaceMethods<UserOpCompatibleInterface>])> {
let summary = "OneFlow pooling operation, align with TensorFlow";
let input = (ins AnyType:$x);
let output = (outs AnyType:$y);
Expand All @@ -189,7 +189,7 @@ class OneFlow_TFPoolBaseOp<string mnemonic, list<Trait> traits = []> :
}

class OneFlow_TFPoolGradBaseOp<string mnemonic, list<Trait> traits = []> :
OneFlow_BaseOp<mnemonic, !listconcat(traits, [NoSideEffect, DeclareOpInterfaceMethods<UserOpCompatibleInterface>])> {
OneFlow_BaseOp<mnemonic, !listconcat(traits, [NoMemoryEffect, DeclareOpInterfaceMethods<UserOpCompatibleInterface>])> {
let summary = "OneFlow pooling grad operation, align with TensorFlow";
let input = (ins
AnyType:$x,
Expand All @@ -215,7 +215,7 @@ class OneFlow_TFPoolGradBaseOp<string mnemonic, list<Trait> traits = []> :


class OneFlow_MaxPoolBaseOp<string mnemonic, list<Trait> traits = []> :
OneFlow_BaseOp<mnemonic, !listconcat(traits, [NoSideEffect, DeclareOpInterfaceMethods<UserOpCompatibleInterface>])> {
OneFlow_BaseOp<mnemonic, !listconcat(traits, [NoMemoryEffect, DeclareOpInterfaceMethods<UserOpCompatibleInterface>])> {
let summary = "OneFlow Max Pooling operation";
let input = (ins
AnyType:$x
Expand All @@ -241,7 +241,7 @@ class OneFlow_MaxPoolBaseOp<string mnemonic, list<Trait> traits = []> :
}

class OneFlow_MaxUnpoolBaseOp<string mnemonic, list<Trait> traits = []> :
OneFlow_BaseOp<mnemonic, !listconcat(traits, [NoSideEffect, DeclareOpInterfaceMethods<UserOpCompatibleInterface>])> {
OneFlow_BaseOp<mnemonic, !listconcat(traits, [NoMemoryEffect, DeclareOpInterfaceMethods<UserOpCompatibleInterface>])> {
let summary = "OneFlow Max Unpooling operation";
let input = (ins
OneFlow_Tensor:$x,
Expand All @@ -264,7 +264,7 @@ class OneFlow_MaxUnpoolBaseOp<string mnemonic, list<Trait> traits = []> :
}

class OneFlow_AvgPoolBaseOp<string mnemonic, list<Trait> traits = []> :
OneFlow_BaseOp<mnemonic, !listconcat(traits, [NoSideEffect, DeclareOpInterfaceMethods<UserOpCompatibleInterface>])> {
OneFlow_BaseOp<mnemonic, !listconcat(traits, [NoMemoryEffect, DeclareOpInterfaceMethods<UserOpCompatibleInterface>])> {
let summary = "OneFlow Average Pooling operation";
let input = (ins
AnyType:$x
Expand All @@ -289,7 +289,7 @@ class OneFlow_AvgPoolBaseOp<string mnemonic, list<Trait> traits = []> :
}

class OneFlow_MaxPoolGradBaseOp<string mnemonic, list<Trait> traits = []> :
OneFlow_BaseOp<mnemonic, !listconcat(traits, [NoSideEffect, DeclareOpInterfaceMethods<UserOpCompatibleInterface>])> {
OneFlow_BaseOp<mnemonic, !listconcat(traits, [NoMemoryEffect, DeclareOpInterfaceMethods<UserOpCompatibleInterface>])> {
let summary = "OneFlow Max Pooling Grad operation";
let input = (ins
AnyType:$x,
Expand All @@ -316,7 +316,7 @@ class OneFlow_MaxPoolGradBaseOp<string mnemonic, list<Trait> traits = []> :
}

class OneFlow_AvgPoolGradBaseOp<string mnemonic, list<Trait> traits = []> :
OneFlow_BaseOp<mnemonic, !listconcat(traits, [NoSideEffect, DeclareOpInterfaceMethods<UserOpCompatibleInterface>])> {
OneFlow_BaseOp<mnemonic, !listconcat(traits, [NoMemoryEffect, DeclareOpInterfaceMethods<UserOpCompatibleInterface>])> {
let summary = "OneFlow Average Pooling Grad operation";
let input = (ins
AnyType:$x,
Expand All @@ -342,7 +342,7 @@ class OneFlow_AvgPoolGradBaseOp<string mnemonic, list<Trait> traits = []> :
}

class OneFlow_MaxUnpoolGradBaseOp<string mnemonic, list<Trait> traits = []> :
OneFlow_BaseOp<mnemonic, !listconcat(traits, [NoSideEffect, DeclareOpInterfaceMethods<UserOpCompatibleInterface>])> {
OneFlow_BaseOp<mnemonic, !listconcat(traits, [NoMemoryEffect, DeclareOpInterfaceMethods<UserOpCompatibleInterface>])> {
let summary = "OneFlow Max Unpooling Grad operation";
let input = (ins
OneFlow_Tensor:$x,
Expand All @@ -359,7 +359,7 @@ class OneFlow_MaxUnpoolGradBaseOp<string mnemonic, list<Trait> traits = []> :
}

class OneFlow_AdaptivePoolBaseOp<string mnemonic, list<Trait> traits = []> :
OneFlow_BaseOp<mnemonic, !listconcat(traits, [NoSideEffect, DeclareOpInterfaceMethods<UserOpCompatibleInterface>])> {
OneFlow_BaseOp<mnemonic, !listconcat(traits, [NoMemoryEffect, DeclareOpInterfaceMethods<UserOpCompatibleInterface>])> {
let summary = "OneFlow adaptive pool operation";
let input = (ins
AnyType:$x
Expand All @@ -375,7 +375,7 @@ class OneFlow_AdaptivePoolBaseOp<string mnemonic, list<Trait> traits = []> :
}

class OneFlow_AdaptivePoolGradBaseOp<string mnemonic, list<Trait> traits = []> :
OneFlow_BaseOp<mnemonic, !listconcat(traits, [NoSideEffect, DeclareOpInterfaceMethods<UserOpCompatibleInterface>])> {
OneFlow_BaseOp<mnemonic, !listconcat(traits, [NoMemoryEffect, DeclareOpInterfaceMethods<UserOpCompatibleInterface>])> {
let summary = "OneFlow adaptive pool operation";
let input = (ins
AnyType:$x,
Expand All @@ -392,7 +392,7 @@ class OneFlow_AdaptivePoolGradBaseOp<string mnemonic, list<Trait> traits = []> :
}

class OneFlow_UnaryBaseOp<string mnemonic, list<Trait> traits = []> :
OneFlow_BaseOp<mnemonic, !listconcat(traits, [SameOperandsAndResultType, NoSideEffect])> {
OneFlow_BaseOp<mnemonic, !listconcat(traits, [SameOperandsAndResultType, NoMemoryEffect])> {
let summary = "";
let input = (ins AnyType:$x);
let output = (outs AnyType:$y);
Expand All @@ -403,7 +403,7 @@ class OneFlow_UnaryBaseOp<string mnemonic, list<Trait> traits = []> :
}

class OneFlow_AdaptiveMaxPoolBaseOp<string mnemonic, list<Trait> traits = []> :
OneFlow_BaseOp<mnemonic, !listconcat(traits, [NoSideEffect, DeclareOpInterfaceMethods<UserOpCompatibleInterface>])> {
OneFlow_BaseOp<mnemonic, !listconcat(traits, [NoMemoryEffect, DeclareOpInterfaceMethods<UserOpCompatibleInterface>])> {
let summary = "OneFlow adaptive max pool operation";
let input = (ins
AnyType:$x
Expand All @@ -422,7 +422,7 @@ class OneFlow_AdaptiveMaxPoolBaseOp<string mnemonic, list<Trait> traits = []> :
}

class OneFlow_AdaptiveMaxPoolGradBaseOp<string mnemonic, list<Trait> traits = []> :
OneFlow_BaseOp<mnemonic, !listconcat(traits, [NoSideEffect, DeclareOpInterfaceMethods<UserOpCompatibleInterface>])> {
OneFlow_BaseOp<mnemonic, !listconcat(traits, [NoMemoryEffect, DeclareOpInterfaceMethods<UserOpCompatibleInterface>])> {
let summary = "OneFlow adaptive max pool grad operation";
let input = (ins
AnyType:$dy,
Expand Down
4 changes: 3 additions & 1 deletion oneflow/ir/include/OneFlow/OneFlowOps.h
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,9 @@ inline std::string GetOpTypeName(T op) {
if (auto alternative_name = dyn_cast<oneflow::HasAlternativeOpTypeName>(op)) {
op_type_name = alternative_name.getOriginalOpTypeName();
}
if (auto user_op = dyn_cast<oneflow::UserOp>(op)) { op_type_name = user_op.op_type_name().str(); }
if (auto user_op = dyn_cast<oneflow::UserOp>(op)) {
op_type_name = user_op.getOpTypeName().str();
}
return op_type_name;
}
ResultRange GetDataOutputResults(Operation* op);
Expand Down
29 changes: 14 additions & 15 deletions oneflow/ir/include/OneFlow/OneFlowOps.td
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ def OneFlow_SystemOp : OneFlow_Op<"system", [OneFlow_IsImportCompatible]> {

def F32ElementsAttr : FloatElementsAttr<32>;

def OneFlow_FrozenVariableOp : OneFlow_IROp<"variable_ir", [ConstantLike, NoSideEffect]> {
def OneFlow_FrozenVariableOp : OneFlow_IROp<"variable_ir", [ConstantLike, NoMemoryEffect]> {
let summary = "Auxiliary variable op for constant folding, only exists in IR.";
let arguments = (ins
F32ElementsAttr:$value,
Expand All @@ -66,7 +66,7 @@ def OneFlow_FrozenVariableOp : OneFlow_IROp<"variable_ir", [ConstantLike, NoSide
let hasFolder = 1;
}

def OneFlow_Add2Op : OneFlow_BaseOp<"add_n2", [NoSideEffect, DeclareOpInterfaceMethods<UserOpCompatibleInterface>, DeclareOpInterfaceMethods<AlternativeOpTypeNameInterface>, DeclareOpInterfaceMethods<NCHWCompatibleInterface>]> {
def OneFlow_Add2Op : OneFlow_BaseOp<"add_n2", [NoMemoryEffect, DeclareOpInterfaceMethods<UserOpCompatibleInterface>, DeclareOpInterfaceMethods<AlternativeOpTypeNameInterface>, DeclareOpInterfaceMethods<NCHWCompatibleInterface>]> {
let summary = "";
let input = (ins
AnyType:$in0,
Expand Down Expand Up @@ -100,10 +100,10 @@ def OneFlow_VariableOp : OneFlow_ConcreteSystemOp<"variable", [OneFlow_TensorSou
let custom_attrs = (ins
ShapeAttr:$shape,
OptionalAttr<OneFlow_DataType>:$data_type,
DefaultValuedAttr<StrAttr, "\"weight\"">:$model_name,
DefaultValuedAttr<F32Attr, "0.0f">:$l1_regularization,
DefaultValuedAttr<F32Attr, "0.0f">:$l2_regularization,
DefaultValuedAttr<BoolAttr, "true">:$trainable,
OptionalAttr<StrAttr>:$model_name,
OptionalAttr<F32Attr>:$l1_regularization,
OptionalAttr<F32Attr>:$l2_regularization,
OptionalAttr<BoolAttr>:$trainable,
OptionalAttr<F32Attr>:$float_initializer,
OptionalAttr<SI64Attr>:$integer_initializer,
OptionalAttr<SBP_ParallelSignatureAttr>:$parallel
Expand Down Expand Up @@ -147,28 +147,27 @@ def OneFlow_Job : Op<OneFlow_Dialect, "job", [FunctionOpInterface, IsolatedFromA
let arguments = (ins
SymbolNameAttr:$sym_name,
TypeAttrOf<FunctionType>:$function_type,
OptionalAttr<StrAttr>:$sym_visibility
OptionalAttr<StrAttr>:$sym_visibility,
OptionalAttr<DictArrayAttr>:$arg_attrs,
OptionalAttr<DictArrayAttr>:$res_attrs
);

let builders = [OpBuilder<(ins
"StringRef":$sym_name, "FunctionType":$function_type)
>];
"StringRef":$sym_name, "FunctionType":$function_type,
CArg<"ArrayRef<NamedAttribute>", "{}">:$attrs
)>];

let extraClassDeclaration = [{
bool isDeclaration() { return isExternal(); }

FunctionType getFunctionType() { return function_type(); }

TypeAttr getFunctionTypeAttr() { return function_typeAttr(); }

ArrayRef<Type> getArgumentTypes() { return getFunctionType().getInputs(); }

ArrayRef<Type> getResultTypes() { return getFunctionType().getResults(); }

LogicalResult verifyType() {
auto type = getFunctionTypeAttr().getValue();
if (!type.isa<FunctionType>())
return emitOpError("requires '" + getTypeAttrName() +
return emitOpError("requires '" + getFunctionTypeAttrName().str() +
"' attribute of function type");
return success();
}
Expand All @@ -178,7 +177,7 @@ def OneFlow_Job : Op<OneFlow_Dialect, "job", [FunctionOpInterface, IsolatedFromA
let hasVerifier = 1;
}

def OneFlow_ReturnOp : Op<OneFlow_Dialect, "return", [NoSideEffect, HasParent<"Job">,
def OneFlow_ReturnOp : Op<OneFlow_Dialect, "return", [NoMemoryEffect, HasParent<"Job">,
MemRefsNormalizable, ReturnLike, Terminator]> {
let summary = "return operation";
let description = [{
Expand Down
Loading

0 comments on commit e619579

Please sign in to comment.