Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

onnxruntime: 1.13.1 -> 1.15.1 and build on Darwin #226734

Merged
merged 3 commits into from
Aug 3, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions maintainers/maintainer-list.nix
Original file line number Diff line number Diff line change
Expand Up @@ -2778,6 +2778,12 @@
githubId = 3471749;
name = "Claudio Bley";
};
cbourjau = {
email = "christianb@posteo.de";
github = "cbourjau";
githubId = 3288058;
name = "Christian Bourjau";
};
cbrewster = {
email = "cbrewster@hey.com";
github = "cbrewster";
Expand Down
144 changes: 101 additions & 43 deletions pkgs/development/libraries/onnxruntime/default.nix
Original file line number Diff line number Diff line change
@@ -1,59 +1,98 @@
{ stdenv
, lib
, fetchFromGitHub
, fetchFromGitLab
, fetchpatch
, fetchurl
, pkg-config
, Foundation
, abseil-cpp
, cmake
, python3Packages
, libpng
, zlib
, eigen
, protobuf
, howard-hinnant-date
, nlohmann_json
, boost
, oneDNN_2
, abseil-cpp
, gtest
, pythonSupport ? false
, nsync
, flatbuffers
, pkg-config
, python3Packages
, re2
, zlib
, microsoft-gsl
, iconv
, gtest
, protobuf3_21
, pythonSupport ? true
}:

# Python Support
#
# When enabling Python support a wheel is made and stored in a `dist` output.
# This wheel is then installed in a separate derivation.

assert pythonSupport -> lib.versionOlder protobuf.version "3.20";
let
howard-hinnant-date = fetchFromGitHub {
owner = "HowardHinnant";
repo = "date";
rev = "v2.4.1";
sha256 = "sha256-BYL7wxsYRI45l8C3VwxYIIocn5TzJnBtU0UZ9pHwwZw=";
};

eigen = fetchFromGitLab {
owner = "libeigen";
repo = "eigen";
rev = "d10b27fe37736d2944630ecd7557cefa95cf87c9";
sha256 = "sha256-Lmco0s9gIm9sIw7lCr5Iewye3RmrHEE4HLfyzRkQCm0=";
};

mp11 = fetchFromGitHub {
owner = "boostorg";
repo = "mp11";
rev = "boost-1.79.0";
sha256 = "sha256-ZxgPDLvpISrjpEHKpLGBowRKGfSwTf6TBfJD18yw+LM=";
};

safeint = fetchFromGitHub {
owner = "dcleblanc";
repo = "safeint";
rev = "ff15c6ada150a5018c5ef2172401cb4529eac9c0";
sha256 = "sha256-PK1ce4C0uCR4TzLFg+elZdSk5DdPCRhhwT3LvEwWnPU=";
};

pytorch_cpuinfo = fetchFromGitHub {
owner = "pytorch";
repo = "cpuinfo";
# There are no tags in the repository
rev = "5916273f79a21551890fd3d56fc5375a78d1598d";
sha256 = "sha256-nXBnloVTuB+AVX59VDU/Wc+Dsx94o92YQuHp3jowx2A=";
};

flatbuffers = fetchFromGitHub {
mweinelt marked this conversation as resolved.
Show resolved Hide resolved
owner = "google";
repo = "flatbuffers";
rev = "v1.12.0";
sha256 = "sha256-L1B5Y/c897Jg9fGwT2J3+vaXsZ+lfXnskp8Gto1p/Tg=";
};

gtest' = gtest.overrideAttrs (oldAttrs: rec {
version = "1.13.0";
src = fetchFromGitHub {
owner = "google";
repo = "googletest";
rev = "v${version}";
hash = "sha256-LVLEn+e7c8013pwiLzJiiIObyrlbBHYaioO/SWbItPQ=";
};
});
in
stdenv.mkDerivation rec {
pname = "onnxruntime";
version = "1.13.1";
version = "1.15.1";

src = fetchFromGitHub {
owner = "microsoft";
repo = "onnxruntime";
rev = "v${version}";
sha256 = "sha256-paaeq6QeiOzwiibbz0GkYZxEI/V80lvYNYTm6AuyAXQ=";
sha256 = "sha256-SnHo2sVACc++fog7Tg6f2LK/Sv/EskFzN7RZS7D113s=";
fetchSubmodules = true;
};

patches = [
# Use dnnl from nixpkgs instead of submodules
(fetchpatch {
name = "system-dnnl.patch";
url = "https://aur.archlinux.org/cgit/aur.git/plain/system-dnnl.diff?h=python-onnxruntime&id=9c392fb542979981fe0026e0fe3cc361a5f00a36";
sha256 = "sha256-+kedzJHLFU1vMbKO9cn8fr+9A5+IxIuiqzOfR2AfJ0k=";
})
];

nativeBuildInputs = [
cmake
pkg-config
python3Packages.python
gtest
protobuf3_21
] ++ lib.optionals pythonSupport (with python3Packages; [
setuptools
wheel
Expand All @@ -64,18 +103,26 @@ stdenv.mkDerivation rec {
buildInputs = [
libpng
zlib
howard-hinnant-date
nlohmann_json
boost
oneDNN_2
protobuf
] ++ lib.optionals pythonSupport [
nsync
re2
microsoft-gsl
] ++ lib.optionals pythonSupport [
python3Packages.numpy
python3Packages.pybind11
python3Packages.packaging
] ++ lib.optionals stdenv.isDarwin [
Foundation
iconv
];

nativeCheckInputs = lib.optionals pythonSupport (with python3Packages; [
gtest'
pytest
sympy
onnx
]);

# TODO: build server, and move .so's to lib output
# Python's wheel is stored in a separate dist output
outputs = [ "out" "dev" ] ++ lib.optionals pythonSupport [ "dist" ];
Expand All @@ -85,15 +132,23 @@ stdenv.mkDerivation rec {
cmakeDir = "../cmake";

cmakeFlags = [
"-Donnxruntime_PREFER_SYSTEM_LIB=ON"
"-DCMAKE_BUILD_TYPE=RELEASE"
"-DFETCHCONTENT_FULLY_DISCONNECTED=ON"
"-DFETCHCONTENT_QUIET=OFF"
"-DFETCHCONTENT_SOURCE_DIR_ABSEIL_CPP=${abseil-cpp.src}"
"-DFETCHCONTENT_SOURCE_DIR_DATE=${howard-hinnant-date}"
"-DFETCHCONTENT_SOURCE_DIR_EIGEN=${eigen}"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It also builds fine for me with the nixpkgs version with eigen.src.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fails for me on MacOS with the following error. The eigen version is 3.4.0.

In file included from /tmp/nix-build-onnxruntime-1.14.1.drv-0/source/onnxruntime/contrib_ops/cpu/inverse.cc:8:
In file included from /tmp/nix-build-onnxruntime-1.14.1.drv-0/source/onnxruntime/core/util/math_cpuonly.h:68:
In file included from /nix/store/aq0wbcxh58drkasgfr0rkidmmi0liwk0-source/Eigen/Core:358:
/nix/store/aq0wbcxh58drkasgfr0rkidmmi0liwk0-source/Eigen/src/Core/PartialReduxEvaluator.h:57:64: error: no matching function for call to 'pset1'
PacketType packetwise_redux_empty_value(const Func& ) { return pset1<PacketType>(0); }

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have seen this error before. ONNX Runtime 1.15.0 will be released in next week. It will use eigen 3.4.0. But I don't see this build error anymore. I am also curious what gets changed.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It seems that that this change did not make it into 1.15.0 after all, did it, @snnn?

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You are right.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there one or two patches we can fetch to fix this? We don't want to vendor.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, updating the dependencies is a major undertaking by the looks of it.

"-DFETCHCONTENT_SOURCE_DIR_FLATBUFFERS=${flatbuffers}"
"-DFETCHCONTENT_SOURCE_DIR_GOOGLE_NSYNC=${nsync.src}"
"-DFETCHCONTENT_SOURCE_DIR_MP11=${mp11}"
"-DFETCHCONTENT_SOURCE_DIR_ONNX=${python3Packages.onnx.src}"
"-DFETCHCONTENT_SOURCE_DIR_PYTORCH_CPUINFO=${pytorch_cpuinfo}"
"-DFETCHCONTENT_SOURCE_DIR_SAFEINT=${safeint}"
"-DFETCHCONTENT_TRY_FIND_PACKAGE_MODE=ALWAYS"
"-Donnxruntime_BUILD_SHARED_LIB=ON"
"-Donnxruntime_ENABLE_LTO=ON"
"-Donnxruntime_BUILD_UNIT_TESTS=ON"
"-Donnxruntime_USE_PREINSTALLED_EIGEN=ON"
"-Donnxruntime_USE_MPI=ON"
"-Deigen_SOURCE_PATH=${eigen.src}"
"-DFETCHCONTENT_SOURCE_DIR_ABSEIL_CPP=${abseil-cpp.src}"
"-Donnxruntime_USE_DNNL=YES"
"-Donnxruntime_ENABLE_LTO=ON"
"-Donnxruntime_USE_FULL_PROTOBUF=OFF"
] ++ lib.optionals pythonSupport [
"-Donnxruntime_ENABLE_PYTHON=ON"
];
Expand All @@ -103,6 +158,9 @@ stdenv.mkDerivation rec {
postPatch = ''
substituteInPlace cmake/libonnxruntime.pc.cmake.in \
--replace '$'{prefix}/@CMAKE_INSTALL_ @CMAKE_INSTALL_
'' + lib.optionalString (stdenv.hostPlatform.system == "aarch64-linux") ''
# https://github.com/NixOS/nixpkgs/pull/226734#issuecomment-1663028691
rm -v onnxruntime/test/optimizer/nhwc_transformer_test.cc
'';

postBuild = lib.optionalString pythonSupport ''
Expand All @@ -118,7 +176,7 @@ stdenv.mkDerivation rec {
'';

passthru = {
inherit protobuf;
protobuf = protobuf3_21;
tests = lib.optionalAttrs pythonSupport {
python = python3Packages.onnxruntime;
};
Expand All @@ -140,6 +198,6 @@ stdenv.mkDerivation rec {
# https://github.com/microsoft/onnxruntime/blob/master/BUILD.md#architectures
platforms = platforms.unix;
license = licenses.mit;
maintainers = with maintainers; [ jonringer puffnfresh ck3d ];
maintainers = with maintainers; [ jonringer puffnfresh ck3d cbourjau ];
};
}
6 changes: 5 additions & 1 deletion pkgs/development/python-modules/onnxruntime/default.nix
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{ lib
, stdenv
, buildPythonPackage
, autoPatchelfHook
, pythonRelaxDepsHook
Expand All @@ -7,6 +8,7 @@
, numpy
, packaging
, oneDNN
, re2

}:

Expand Down Expand Up @@ -34,8 +36,9 @@ buildPythonPackage {
'';

nativeBuildInputs = [
autoPatchelfHook
pythonRelaxDepsHook
] ++ lib.optionals stdenv.isLinux [
autoPatchelfHook
];

# This project requires fairly large dependencies such as sympy which we really don't always need.
Expand All @@ -48,6 +51,7 @@ buildPythonPackage {
# Libraries are not linked correctly.
buildInputs = [
oneDNN
re2
onnxruntime.protobuf
];

Expand Down
4 changes: 4 additions & 0 deletions pkgs/tools/audio/piper/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,10 @@ stdenv.mkDerivation {

sourceRoot = "source/src/cpp";

patches = [
./fix-compilation-with-newer-onnxruntime.patch
];

postPatch = ''
substituteInPlace CMakeLists.txt \
--replace "/usr/local/include/onnxruntime" "${onnxruntime}"
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
diff --git a/src/cpp/synthesize.hpp b/src/cpp/synthesize.hpp
index ef61aef..4c7db7a 100644
--- a/synthesize.hpp
+++ b/synthesize.hpp
@@ -119,11 +119,11 @@ void synthesize(SynthesisConfig &synthesisConfig, ModelSession &session,

// Clean up
for (size_t i = 0; i < outputTensors.size(); i++) {
- Ort::OrtRelease(outputTensors[i].release());
+ Ort::detail::OrtRelease(outputTensors[i].release());
}

for (size_t i = 0; i < inputTensors.size(); i++) {
- Ort::OrtRelease(inputTensors[i].release());
+ Ort::detail::OrtRelease(inputTensors[i].release());
}
}
} // namespace larynx
2 changes: 1 addition & 1 deletion pkgs/top-level/all-packages.nix
Original file line number Diff line number Diff line change
Expand Up @@ -5956,7 +5956,7 @@ with pkgs;
online-judge-tools = with python3.pkgs; toPythonApplication online-judge-tools;

onnxruntime = callPackage ../development/libraries/onnxruntime {
protobuf = protobuf3_19;
inherit (darwin.apple_sdk.frameworks) Foundation;
};

xkbd = callPackage ../applications/misc/xkbd { };
Expand Down