Merge pull request #170264 from armeenm/remove-caffe2

caffe2: remove
main
Rick van Schijndel 2 years ago committed by GitHub
commit b98c8eabad
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 151
      pkgs/development/libraries/science/math/caffe2/default.nix
  2. 46
      pkgs/development/libraries/science/math/caffe2/fix_compilation_on_gcc7.patch
  3. 55
      pkgs/development/libraries/science/math/caffe2/update_clang_cvtsh_bugfix.patch
  4. 1
      pkgs/top-level/aliases.nix
  5. 7
      pkgs/top-level/all-packages.nix

@ -1,151 +0,0 @@
{ stdenv, lib, config, fetchFromGitHub
, cmake
, glog, gflags, gtest
, protobuf, snappy
, python, future, six, python-protobuf, numpy, pydot
, eigen
, doxygen
, useCuda ? (config.cudaSupport or false), cudaPackages ? {}
, useCudnn ? (config.cudnnSupport or false)
, useOpenmp ? false, openmp ? null
, useOpencv3 ? true, opencv3 ? null
, useLeveldb ? false, leveldb ? null
, useLmdb ? true, lmdb ? null
, useRocksdb ? false, rocksdb ? null
, useZeromq ? false, zeromq ? null
, useMpi ? false, mpi ? null
# TODO: distributed computations
#, useGloo ? false
#, useNccl ? false
#, useNnpack ? false
}:
let
inherit (cudaPackages) cudatoolkit cudnn;
in
assert useCuda -> cudatoolkit != null;
assert useCudnn -> (useCuda && cudnn != null);
assert useOpencv3 -> opencv3 != null;
assert useLeveldb -> leveldb != null;
assert useLmdb -> lmdb != null;
assert useRocksdb -> rocksdb != null;
assert useZeromq -> zeromq != null;
assert useMpi -> mpi != null;
let
# Third party modules that caffe2 holds as git submodules.
# Download them and create symlinks from caffe2/third_party.
installExtraSrc = extra: ''
rmdir "third_party/${extra.dst}"
ln -s "${extra.src}" "third_party/${extra.dst}"
'';
cub = {
src = fetchFromGitHub {
owner = "NVlabs";
repo = "cub";
rev = "v1.7.4";
sha256 = "0ksd5n1lxqhm5l5cd2lps4cszhjkf6gmzahaycs7nxb06qci8c66";
};
dst = "cub";
};
pybind11 = {
src = fetchFromGitHub {
owner = "pybind";
repo = "pybind11";
rev = "86e2ad4f77442c3350f9a2476650da6bee253c52";
sha256 = "05gi58dirvc8fgm0avpydvidzsbh2zrzgfaq671ym09f6dz0bcgz";
};
dst = "pybind11";
};
ccVersion = lib.getVersion stdenv.cc;
in
stdenv.mkDerivation rec {
pname = "caffe2";
version = "0.8.1";
src = fetchFromGitHub {
owner = "caffe2";
repo = "caffe2";
rev = "v${version}";
sha256 = "18y7zjc69j6n5642l9caddl641b0djf3pjn4wacdsc1wk1jiyqk8";
};
nativeBuildInputs = [ cmake doxygen gtest ];
outputs = [ "bin" "out" ];
propagatedBuildOutputs = [ ]; # otherwise propagates out -> bin cycle
buildInputs = [ glog gflags protobuf snappy eigen ]
++ lib.optional useCuda cudatoolkit
++ lib.optional useCudnn cudnn
++ lib.optional useOpenmp openmp
++ lib.optional useOpencv3 opencv3
++ lib.optional useLeveldb leveldb
++ lib.optional useLmdb lmdb
++ lib.optional useRocksdb rocksdb
++ lib.optional useZeromq zeromq
;
propagatedBuildInputs = [ numpy future six python-protobuf pydot ];
patches = lib.optional (stdenv.cc.isGNU && lib.versionAtLeast ccVersion "7.0.0") [
./fix_compilation_on_gcc7.patch
] ++ lib.optional stdenv.cc.isClang [ ./update_clang_cvtsh_bugfix.patch ];
cmakeFlags = [ "-DBUILD_TEST=OFF"
"-DBUILD_PYTHON=ON"
''-DUSE_CUDA=${if useCuda then "ON"else "OFF"}''
''-DUSE_OPENMP=${if useOpenmp then "ON"else "OFF"}''
''-DUSE_OPENCV=${if useOpencv3 then "ON"else "OFF"}''
''-DUSE_MPI=${if useMpi then "ON"else "OFF"}''
''-DUSE_LEVELDB=${if useLeveldb then "ON"else "OFF"}''
''-DUSE_LMDB=${if useLmdb then "ON"else "OFF"}''
''-DUSE_ROCKSDB=${if useRocksdb then "ON"else "OFF"}''
''-DUSE_ZMQ=${if useZeromq then "ON"else "OFF"}''
"-DUSE_GLOO=OFF"
"-DUSE_NNPACK=OFF"
"-DUSE_NCCL=OFF"
"-DUSE_REDIS=OFF"
"-DUSE_FFMPEG=OFF"
]
++ lib.optional useCuda [
"-DCUDA_TOOLKIT_ROOT_DIR=${cudatoolkit}"
"-DCUDA_FAST_MATH=ON"
"-DCUDA_HOST_COMPILER=${cudatoolkit.cc}/bin/gcc"
];
preConfigure = ''
${installExtraSrc cub}
${installExtraSrc pybind11}
# XXX hack
export NIX_CFLAGS_COMPILE="-I ${eigen}/include/eigen3/ $NIX_CFLAGS_COMPILE"
'';
postInstall = ''
moveToOutput "bin" "$bin"
mkdir -p $out/lib/${python.libPrefix}
ln -s $out/ $out/${python.sitePackages}
'';
doCheck = false;
meta = {
homepage = "https://caffe2.ai/";
description = "A new lightweight, modular, and scalable deep learning framework";
longDescription = ''
Caffe2 aims to provide an easy and straightforward way for you to experiment
with deep learning and leverage community contributions of new models and
algorithms. You can bring your creations to scale using the power of GPUs in the
cloud or to the masses on mobile with Caffe2's cross-platform libraries.
'';
platforms = with lib.platforms; linux;
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ yuriaisaka ];
# fails to compile with
# error: invalid conversion from 'const char*' to 'char*'
# TODO: Remove usage of python2, protobuf overwrite
broken = true;
};
}

@ -1,46 +0,0 @@
diff --git a/caffe2/operators/recurrent_network_op.cc b/caffe2/operators/recurrent_network_op.cc
index dd4fded..5995e8a 100644
--- a/caffe2/operators/recurrent_network_op.cc
+++ b/caffe2/operators/recurrent_network_op.cc
@@ -1,4 +1,4 @@
-#include "recurrent_network_op.h"
+#include "caffe2/operators/recurrent_network_op.h"
#include "caffe2/core/workspace.h"
namespace caffe2 {
diff --git a/caffe2/operators/recurrent_network_op.h b/caffe2/operators/recurrent_network_op.h
index 55328e5..ea898bc 100644
--- a/caffe2/operators/recurrent_network_op.h
+++ b/caffe2/operators/recurrent_network_op.h
@@ -762,8 +762,8 @@ class AccumulateInputGradientOp : public Operator<Context> {
USE_OPERATOR_CONTEXT_FUNCTIONS;
bool RunOnDevice() override {
- const auto t =
- OperatorBase::Input<Tensor<CPUContext>>(0).template data<int32_t>()[0];
+ const auto& t0 = OperatorBase::Input<Tensor<CPUContext>>(0);
+ const auto t = t0.template data<int32_t>()[0];
auto& og = Input(1);
auto* g = Output(0);
diff --git a/caffe2/queue/queue_ops.h b/caffe2/queue/queue_ops.h
index f2c0a33..642343f 100644
--- a/caffe2/queue/queue_ops.h
+++ b/caffe2/queue/queue_ops.h
@@ -17,13 +17,10 @@ class CreateBlobsQueueOp final : public Operator<Context> {
name(operator_def.output().Get(0)) {}
bool RunOnDevice() override {
- const auto capacity =
- OperatorBase::template GetSingleArgument<int>("capacity", 1);
- const auto numBlobs =
- OperatorBase::template GetSingleArgument<int>("num_blobs", 1);
+ const auto capacity = GetSingleArgument("capacity", 1);
+ const auto numBlobs = GetSingleArgument("num_blobs", 1);
const auto enforceUniqueName =
- OperatorBase::template GetSingleArgument<int>(
- "enforce_unique_name", false);
+ GetSingleArgument("enforce_unique_name", false);
const auto fieldNames =
OperatorBase::template GetRepeatedArgument<std::string>("field_names");
CAFFE_ENFORCE_EQ(this->OutputSize(), 1);

@ -1,55 +0,0 @@
diff --git a/caffe2/perfkernels/cvtsh_ss_bugfix.h b/caffe2/perfkernels/cvtsh_ss_bugfix.h
index bd06681..00172b7 100644
--- a/caffe2/perfkernels/cvtsh_ss_bugfix.h
+++ b/caffe2/perfkernels/cvtsh_ss_bugfix.h
@@ -1,10 +1,36 @@
+/**
+ * Copyright (c) 2016-present, Facebook, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
#pragma once
-#if defined(__APPLE__) && (__clang_major__ < 8)
+// Apple clang was fixed in 8.1
+#if defined(__apple_build_version__) && ((__clang_major__ < 8) || ((__clang_major__ == 8) && (__clang_minor__ < 1)))
+#define __APPLE_NEED_FIX 1
+#endif
+
+// Regular clang was fixed in 3.9
+#if defined(__clang__) && (__clang_major__ < 4) && (__clang_minor__ < 9)
+#define __CLANG_NEED_FIX 1
+#endif
+
+#if __APPLE_NEED_FIX || __CLANG_NEED_FIX
#include <emmintrin.h>
-// This version of apple clang has a bug that _cvtsh_ss is not defined, see
+// This version of clang has a bug that _cvtsh_ss is not defined, see
// https://reviews.llvm.org/D16177
static __inline float
__attribute__((__always_inline__, __nodebug__, __target__("f16c")))
@@ -15,7 +41,10 @@ _cvtsh_ss(unsigned short a)
return r[0];
}
-#endif // defined(__APPLE__) && (__clang_major__ < 8)
+#endif // __APPLE_NEED_FIX || __CLANG_NEED_FIX
+
+#undef __APPLE_NEED_FIX
+#undef __CLANG_NEED_FIX
#ifdef _MSC_VER

@ -147,6 +147,7 @@ mapAliases ({
c14 = throw "c14 is deprecated and archived by upstream"; # Added 2022-04-10
caddy1 = throw "caddy 1.x has been removed from nixpkgs, as it's unmaintained: https://github.com/caddyserver/caddy/blob/master/.github/SECURITY.md#supported-versions"; # Added 2020-10-02
caffe2 = throw "caffe2 has been removed: subsumed under the PyTorch project"; # Added 2022-04-25
calibre-py2 = throw "calibre-py2 has been removed from nixpkgs, as calibre has upgraded to python 3. Please use calibre as replacement"; # Added 2021-01-13
calibre-py3 = throw "calibre-py3 has been removed from nixpkgs, as calibre's default python version is now 3. Please use calibre as replacement"; # Added 2021-01-13
callPackage_i686 = pkgsi686Linux.callPackage;

@ -33416,13 +33416,6 @@ with pkgs;
caffeWithCuda = caffe.override { cudaSupport = true; };
caffe2 = callPackage ../development/libraries/science/math/caffe2 (rec {
inherit (python3Packages) python future six numpy pydot;
protobuf = protobuf3_1;
python-protobuf = python3Packages.protobuf.override { inherit protobuf; };
opencv3 = opencv3WithoutCuda; # Used only for image loading.
});
caffeine-ng = callPackage ../tools/X11/caffeine-ng {};
cntk = callPackage ../applications/science/math/cntk {

Loading…
Cancel
Save