packages feed

libtorch-ffi-2.0.1.6: libtorch-ffi.cabal

cabal-version:       3.0
name:                libtorch-ffi
version:             2.0.1.6
-- The prefix(2.0) of this version("2.0.0.0") is the same as libtorch's one.
synopsis:            Haskell bindings for PyTorch
description:         This package provides Haskell bindings to libtorch, the C++ library underlying PyTorch, specifically designed for the Hasktorch ecosystem.
homepage:            https://github.com/hasktorch/hasktorch#readme
license:             BSD-3-Clause
author:              Austin Huang
maintainer:          hasktorch@gmail.com
copyright:           2018 Austin Huang
category:            Codegen
build-type:          Custom
extra-source-files:  README.md

custom-setup
  setup-depends:
    base >= 4.7 && < 5,
    Cabal >= 3.0 && < 4,
    directory >= 1.3 && < 2,
    filepath >= 1.4 && < 2,
    process >= 1.6 && < 2,
    temporary >= 1.3 && < 2,
    http-conduit >= 2.3 && < 3,
    bytestring >= 0.10 && < 1

Flag cuda
 Description: A flag to link libtorch_cuda.
 Default: False
 Manual: True

Flag rocm
 Description: A flag to link libtorch_hip.
 Default: False
 Manual: True

Flag gcc
 Description: A flag to use gcc on macos
 Default: False
 Manual: True

library
 exposed-modules:     Torch.Internal.Type
                    , Torch.Internal.Const
                    , Torch.Internal.Cast
                    , Torch.Internal.Class
                    , Torch.Internal.Objects
                    , Torch.Internal.GC
                    , Torch.Internal.Unmanaged.Native
                    , Torch.Internal.Unmanaged.Native.Native0
                    , Torch.Internal.Unmanaged.Native.Native1
                    , Torch.Internal.Unmanaged.Native.Native2
                    , Torch.Internal.Unmanaged.Native.Native3
                    , Torch.Internal.Unmanaged.Native.Native4
                    , Torch.Internal.Unmanaged.Native.Native5
                    , Torch.Internal.Unmanaged.Native.Native6
                    , Torch.Internal.Unmanaged.Native.Native7
                    , Torch.Internal.Unmanaged.Native.Native8
                    , Torch.Internal.Unmanaged.Native.Native9
                    , Torch.Internal.Unmanaged.Native.Native10
                    , Torch.Internal.Unmanaged.Native.Native11
                    , Torch.Internal.Unmanaged.Native.Native12
                    , Torch.Internal.Unmanaged.Native.Native13
                    , Torch.Internal.Unmanaged.Native.Native14
                    , Torch.Internal.Unmanaged.Native.Native15
                    , Torch.Internal.Unmanaged.Native.Extra
                    , Torch.Internal.Unmanaged.Type.Tuple
                    , Torch.Internal.Unmanaged.Type.Generator
                    , Torch.Internal.Unmanaged.Type.IntArray
                    , Torch.Internal.Unmanaged.Type.Scalar
                    , Torch.Internal.Unmanaged.Type.Storage
                    , Torch.Internal.Unmanaged.Type.Tensor
                    , Torch.Internal.Unmanaged.Type.Tensor.Tensor0
                    , Torch.Internal.Unmanaged.Type.Tensor.Tensor1
                    , Torch.Internal.Unmanaged.Type.Tensor.Tensor2
                    , Torch.Internal.Unmanaged.Type.Tensor.Tensor3
                    , Torch.Internal.Unmanaged.Type.TensorList
                    , Torch.Internal.Unmanaged.Type.TensorOptions
                    , Torch.Internal.Unmanaged.Type.TensorIndex
                    , Torch.Internal.Unmanaged.Type.StdString
                    , Torch.Internal.Unmanaged.Type.StdArray
                    , Torch.Internal.Unmanaged.Type.Context
--                    , Torch.Internal.Unmanaged.Type.ConstQuantizerPtr
                    , Torch.Internal.Unmanaged.Type.Extra
                    , Torch.Internal.Unmanaged.Type.Dimname
                    , Torch.Internal.Unmanaged.Type.DimnameList
                    , Torch.Internal.Unmanaged.Type.Symbol
                    , Torch.Internal.Unmanaged.Type.IValue
                    , Torch.Internal.Unmanaged.Type.IValueList
                    , Torch.Internal.Unmanaged.Type.C10List
                    , Torch.Internal.Unmanaged.Type.C10Dict
                    , Torch.Internal.Unmanaged.Type.C10Tuple
                    , Torch.Internal.Unmanaged.Type.Module
                    , Torch.Internal.Unmanaged.Type.StdVector
                    , Torch.Internal.Managed.Cast
                    , Torch.Internal.Managed.Native
                    , Torch.Internal.Managed.Native.Native0
                    , Torch.Internal.Managed.Native.Native1
                    , Torch.Internal.Managed.Native.Native2
                    , Torch.Internal.Managed.Native.Native3
                    , Torch.Internal.Managed.Native.Native4
                    , Torch.Internal.Managed.Native.Native5
                    , Torch.Internal.Managed.Native.Native6
                    , Torch.Internal.Managed.Native.Native7
                    , Torch.Internal.Managed.Native.Native8
                    , Torch.Internal.Managed.Native.Native9
                    , Torch.Internal.Managed.Native.Native10
                    , Torch.Internal.Managed.Native.Native11
                    , Torch.Internal.Managed.Native.Native12
                    , Torch.Internal.Managed.Native.Native13
                    , Torch.Internal.Managed.Native.Native14
                    , Torch.Internal.Managed.Native.Native15
                    , Torch.Internal.Managed.Native.Extra
                    , Torch.Internal.Managed.Type.Tuple
                    , Torch.Internal.Managed.Type.Generator
                    , Torch.Internal.Managed.Type.IntArray
                    , Torch.Internal.Managed.Type.Scalar
                    , Torch.Internal.Managed.Type.Storage
                    , Torch.Internal.Managed.Type.Tensor
                    , Torch.Internal.Managed.Type.Tensor.Tensor0
                    , Torch.Internal.Managed.Type.Tensor.Tensor1
                    , Torch.Internal.Managed.Type.Tensor.Tensor2
                    , Torch.Internal.Managed.Type.Tensor.Tensor3
                    , Torch.Internal.Managed.Type.TensorList
                    , Torch.Internal.Managed.Type.TensorIndex
                    , Torch.Internal.Managed.Type.TensorOptions
                    , Torch.Internal.Managed.Type.StdString
                    , Torch.Internal.Managed.Type.StdArray
                    , Torch.Internal.Managed.Type.Context
--                    , Torch.Internal.Managed.Type.ConstQuantizerPtr
                    , Torch.Internal.Managed.Type.Extra
                    , Torch.Internal.Managed.Type.Dimname
                    , Torch.Internal.Managed.Type.DimnameList
                    , Torch.Internal.Managed.Type.Symbol
                    , Torch.Internal.Managed.Type.IValue
                    , Torch.Internal.Managed.Type.IValueList
                    , Torch.Internal.Managed.Type.C10List
                    , Torch.Internal.Managed.Type.C10Dict
                    , Torch.Internal.Managed.Type.C10Tuple
                    , Torch.Internal.Managed.Type.Module
                    , Torch.Internal.Managed.Type.StdVector
                    , Torch.Internal.Unmanaged.Autograd
                    , Torch.Internal.Unmanaged.TensorFactories
                    , Torch.Internal.Unmanaged.Serialize
                    , Torch.Internal.Managed.Autograd
                    , Torch.Internal.Managed.TensorFactories
                    , Torch.Internal.Managed.Serialize
                    , Torch.Internal.Unmanaged.Optim
                    , Torch.Internal.Managed.Optim
 hs-source-dirs: src
 default-language: Haskell2010
 build-depends:       base >= 4.7 && < 5
                    , inline-c-cpp >= 0.5.0.2 && < 0.6.0.0
                    , inline-c >= 0.9.1.10 && < 0.10
                    , optparse-applicative >= 0.14.3.0 && < 0.19
                    , containers >= 0.6.7 && < 0.8
                    , template-haskell >= 2.20.0 && < 2.23
                    , bytestring >= 0.11.5 && < 0.13
                    , safe-exceptions >= 0.1.7 && < 0.2
                    , sysinfo >= 0.1.1 && < 0.2
                    , async >= 2.2.5 && < 2.3
                    , libtorch-ffi-helper >= 2.0.0 && < 2.1
                    , text >= 2.0.2 && < 2.2
 ghc-options:       -fplugin GHC.NotExport.Plugin
 extra-libraries:     c10
                    , torch
                    , torch_cpu
 if os(darwin)
  extra-libraries:     c++
 else
  extra-libraries:     stdc++

 if flag(cuda)
  extra-libraries:     torch_cuda

 if flag(rocm)
  extra-libraries:     c10_hip
                     , torch_hip
                     , sqlite3
                     , tinfo
                     , bz2
                     , z
  ghc-options:       -optcxx-D_GLIBCXX_USE_CXX11_ABI=0
  cxx-options:       -D_GLIBCXX_USE_CXX11_ABI=0

 extra-ghci-libraries: stdc++
 if os(darwin)
  ld-options: -Wl,-keep_dwarf_unwind
  cpp-options: -DENABLE_DUMMY_MALLOC_TRIM
  if !flag(gcc)
    cxx-options:       -std=c++17
    ghc-options:       -optcxx-std=c++17
 default-extensions:          Strict
                            , StrictData
 cxx-sources:          csrc/hasktorch_finalizer.cpp
 c-sources:            csrc/hasktorch_dump.c
 install-includes:     csrc/hasktorch_finalizer.h
                      ,csrc/hasktorch_dump.h
                      ,csrc/hasktorch_profile.h
 include-dirs:         csrc

test-suite spec
  type:            exitcode-stdio-1.0
  hs-source-dirs:  test
  main-is:         Spec.hs
  other-modules:   MemorySpec
                 , BasicSpec
--  libtorch-1.3 does not work this grad-function. But grad of higher level api works.
--                 , BackwardSpec
                 , CudaSpec
                 , MpsSpec
                 , GeneratorSpec
  default-language: Haskell2010
  build-depends:       base
                     , libtorch-ffi
                     , hspec
                     , safe-exceptions
  if os(darwin)
    ld-options: -Wl,-keep_dwarf_unwind
  default-extensions:          Strict
                             , StrictData