mirror of
https://github.com/ilyakooo0/nixpkgs.git
synced 2024-11-20 20:02:14 +03:00
commit
b98c8eabad
@ -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…
Reference in New Issue
Block a user