1+ # Copyright (c) 2025 Samsung Electronics Co., Ltd. All Rights Reserved
2+ #
3+ # Licensed under the Apache License, Version 2.0 (the "License");
4+ # you may not use this file except in compliance with the License.
5+ # You may obtain a copy of the License at
6+ #
7+ # http://www.apache.org/licenses/LICENSE-2.0
8+ #
9+ # Unless required by applicable law or agreed to in writing, software
10+ # distributed under the License is distributed on an "AS IS" BASIS,
11+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+ # See the License for the specific language governing permissions and
13+ # limitations under the License.
14+
115FROM ubuntu:22.04 AS build
216
317ENV DEBIAN_FRONTEND=noninteractive
@@ -11,14 +25,6 @@ RUN apt-get update \
1125 && apt-get -qqy install build-essential cmake git fakeroot autoconf automake libtool unzip wget \
1226 devscripts debmake debhelper lcov
1327
14- # Install clang-format
15- RUN apt-get update \
16- && apt-get install -qqy gnupg2 \
17- && wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add - \
18- && add-apt-repository "deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-16 main" \
19- && apt-get update \
20- && apt-get install -qqy clang-format-16
21-
2228# additonal tools
2329RUN apt-get update \
2430 && apt-get -qqy install tree tmux
@@ -27,16 +33,14 @@ RUN apt-get update \
2733RUN apt-get update \
2834 && apt-get -qqy install python3 python3-pip python3-venv python3-dev python3-all dh-python
2935RUN python3 -m pip install --upgrade pip setuptools
30- RUN python3 -m pip install yapf==0.43.0 numpy==1.24 .4 h5py==3.8.0 einops
36+ RUN python3 -m pip install yapf==0.43.0 numpy==2.2 .4 h5py==3.8.0 einops
3137
3238# TODO upgrade
33- ARG VER_TORCH=2.1 .0
34- ARG VER_ONNX=1.16 .0
35- ARG VER_ONNXRUNTIME=1.18 .0
39+ ARG VER_TORCH=2.6 .0
40+ ARG VER_ONNX=1.17 .0
41+ ARG VER_ONNXRUNTIME=1.21 .0
3642
37- RUN python3 -m pip install torch==${VER_TORCH}
38- RUN python3 -m pip install onnx==${VER_ONNX}
39- RUN python3 -m pip install onnxruntime==${VER_ONNXRUNTIME}
43+ RUN python3 -m pip install torch==${VER_TORCH} onnx==${VER_ONNX} onnxruntime==${VER_ONNXRUNTIME}
4044
4145# Clean archives (to reduce image size)
4246RUN apt-get clean -y
@@ -48,47 +52,15 @@ ARG NPROC=4
4852ARG WORK_DIR=/workdir
4953ARG FLATBUFFERS_HASH=a078130c
5054ARG ABSEIL_CPP_HASH=21510581
51- ARG LLVM_PROJECT_HASH=91088978d712cd7b33610c59f69d87d5a39e3113
52- ARG ONNX_MLIR_HASH=40615b362fe474d6cce4fd9c31a7ec51acd8f88a
55+ ARG LLVM_PROJECT_HASH=b270525f730be6e7196667925f5a9bfa153262e9
56+ ARG ONNX_MLIR_HASH=660bd8efa664bd2d05801a7a793fe29925313b4b
5357
5458WORKDIR ${WORK_DIR}
5559
56- # Generate experimental patch file for onnx-mlir
57-
58- RUN set -x \
59- && { \
60- echo 'diff --git a/src/Dialect/ONNX/ONNXOps.td.inc b/src/Dialect/ONNX/ONNXOps.td.inc' ; \
61- echo 'index d75ee6b6..f63a2910 100644' ; \
62- echo '--- a/src/Dialect/ONNX/ONNXOps.td.inc' ; \
63- echo '+++ b/src/Dialect/ONNX/ONNXOps.td.inc' ; \
64- echo '@@ -1779,9 +1779,9 @@ def ONNXDequantizeLinearOp:ONNX_Op<"DequantizeLinear",' ; \
65- echo ' `zero-point` is usually not used in the case of float8e4m3fn, float8e4m3fnuz, float8e5m2, float8e5m2fnuz quantization,' ; \
66- echo " but the dequantization formula remains the same for consistency and 'x_scale' still determines the output type." ; \
67- echo ' }];' ; \
68- echo '- let arguments = (ins AnyTypeOf<[TensorOf<[I8]>, TensorOf<[UI8]>, TensorOf<[I32]>, TensorOf<[F8E4M3FN]>, TensorOf<[F8E4M3FNUZ]>, TensorOf<[F8E5M2]>, TensorOf<[F8E5M2FNUZ]>]>:$x,' ; \
69- echo '+ let arguments = (ins AnyTypeOf<[TensorOf<[I8]>, TensorOf<[UI8]>, TensorOf<[I16]>, TensorOf<[I32]>, TensorOf<[F8E4M3FN]>, TensorOf<[F8E4M3FNUZ]>, TensorOf<[F8E5M2]>, TensorOf<[F8E5M2FNUZ]>]>:$x,' ; \
70- echo ' AnyTypeOf<[TensorOf<[F32]>, TensorOf<[F16]>, TensorOf<[BF16]>]>:$x_scale,' ; \
71- echo '- AnyTypeOf<[TensorOf<[I8]>, TensorOf<[UI8]>, TensorOf<[I32]>, TensorOf<[F8E4M3FN]>, TensorOf<[F8E4M3FNUZ]>, TensorOf<[F8E5M2]>, TensorOf<[F8E5M2FNUZ]>, NoneType]>:$x_zero_point,' ; \
72- echo '+ AnyTypeOf<[TensorOf<[I8]>, TensorOf<[UI8]>, TensorOf<[I16]>, TensorOf<[I32]>, TensorOf<[F8E4M3FN]>, TensorOf<[F8E4M3FNUZ]>, TensorOf<[F8E5M2]>, TensorOf<[F8E5M2FNUZ]>, NoneType]>:$x_zero_point,' ; \
73- echo ' DefaultValuedAttr<SI64Attr, "1">:$axis);' ; \
74- echo ' let results = (outs AnyTypeOf<[TensorOf<[F32]>, TensorOf<[F16]>, TensorOf<[BF16]>]>:$y);' ; \
75- echo ' let extraClassDeclaration = [{' ; \
76- echo '@@ -5721,10 +5721,10 @@ def ONNXQuantizeLinearOp:ONNX_Op<"QuantizeLinear",' ; \
77- echo ' }];' ; \
78- echo ' let arguments = (ins AnyTypeOf<[TensorOf<[F32]>, TensorOf<[F16]>, TensorOf<[BF16]>, TensorOf<[I32]>]>:$x,' ; \
79- echo ' AnyTypeOf<[TensorOf<[F32]>, TensorOf<[F16]>, TensorOf<[BF16]>, TensorOf<[I32]>]>:$y_scale,' ; \
80- echo '- AnyTypeOf<[TensorOf<[I8]>, TensorOf<[UI8]>, TensorOf<[F8E4M3FN]>, TensorOf<[F8E4M3FNUZ]>, TensorOf<[F8E5M2]>, TensorOf<[F8E5M2FNUZ]>, NoneType]>:$y_zero_point,' ; \
81- echo '+ AnyTypeOf<[TensorOf<[I8]>, TensorOf<[UI8]>, TensorOf<[I16]>, TensorOf<[F8E4M3FN]>, TensorOf<[F8E4M3FNUZ]>, TensorOf<[F8E5M2]>, TensorOf<[F8E5M2FNUZ]>, NoneType]>:$y_zero_point,' ; \
82- echo ' DefaultValuedAttr<SI64Attr, "1">:$axis,' ; \
83- echo ' DefaultValuedAttr<SI64Attr, "1">:$saturate);' ; \
84- echo '- let results = (outs AnyTypeOf<[TensorOf<[I8]>, TensorOf<[UI8]>, TensorOf<[F8E4M3FN]>, TensorOf<[F8E4M3FNUZ]>, TensorOf<[F8E5M2]>, TensorOf<[F8E5M2FNUZ]>]>:$y);' ; \
85- echo '+ let results = (outs AnyTypeOf<[TensorOf<[I8]>, TensorOf<[UI8]>, TensorOf<[I16]>, TensorOf<[F8E4M3FN]>, TensorOf<[F8E4M3FNUZ]>, TensorOf<[F8E5M2]>, TensorOf<[F8E5M2FNUZ]>]>:$y);' ; \
86- echo ' let extraClassDeclaration = [{' ; \
87- echo ' static int getNumberOfOperands() {' ; \
88- echo ' return 3;' ; \
89- echo '' ; \
90- } > ${WORK_DIR}/onnx_quantdequant_i16.patch \
91- && cat ${WORK_DIR}/onnx_quantdequant_i16.patch
60+ # Download experimental patch file for onnx-mlir
61+
62+ RUN wget https://raw.githubusercontent.com/Samsung/ONE/refs/heads/master/circle-mlir/externals/onnx_mlir_0_5_0_0.diff \
63+ -O ${WORK_DIR}/onnx_mlir_0_5_0_0.diff
9264
9365# FLATBUFFERS build from source
9466RUN git clone --recursive https://github.com/google/flatbuffers.git \
@@ -165,9 +137,9 @@ RUN mkdir llvm-project-build && cd llvm-project-build \
165137RUN cd llvm-project-build && cmake --build . && cmake --install .
166138
167139# ONNX-MLIR build from source
168- # Patch to accept INT16 for QuantizeLinear/DequantizeLinear
140+ # Patch to accept INT16 for QuantizeLinear/DequantizeLinear and fix ONNX passes
169141RUN cd onnx-mlir \
170- && patch -p1 < ${WORK_DIR}/onnx_quantdequant_i16.patch
142+ && patch -p1 < ${WORK_DIR}/onnx_mlir_0_5_0_0.diff
171143
172144RUN mkdir onnx-mlir-build && cd onnx-mlir-build \
173145 && cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=${WORK_DIR} \
@@ -176,7 +148,6 @@ RUN mkdir onnx-mlir-build && cd onnx-mlir-build \
176148 -DCMAKE_JOB_POOL_COMPILE:STRING=compile -DCMAKE_JOB_POOL_LINK:STRING=link \
177149 -DCMAKE_JOB_POOLS:STRING='compile=4;link=1' \
178150 -DONNX_MLIR_BUILD_TESTS=OFF -DONNX_MLIR_ENABLE_MHLO=OFF -DLLVM_ENABLE_ASSERTIONS=ON \
179- -DONNX_MLIR_DECOMP_ONNX_CONVTRANSPOSE=OFF \
180151 ../onnx-mlir
181152
182153RUN cd onnx-mlir-build && cmake --build . && cmake --install .
0 commit comments