{-# LANGUAGE ConstraintKinds #-}
module NNSpec (spec) where
import Foreign hiding (void)
import Control.Monad (void)
import Foreign.C.Types
import Test.Hspec
import Torch.Types.THC
import qualified Torch.FFI.TH.Random as R
import qualified Torch.FFI.THC.General as General
import qualified Torch.FFI.THC.NN.Double as D
import qualified Torch.FFI.THC.Double.Tensor as D
import qualified Torch.FFI.THC.Double.TensorMath as D
import qualified Torch.FFI.THC.Double.TensorMathReduce as D
import qualified Torch.FFI.THC.Double.TensorRandom as D
{-
import Torch.FFI.THCUNN.Float as F
import Torch.FFI.THC.Float.Tensor as F
import Torch.FFI.THC.Float.TensorMath as F
import Torch.FFI.THC.Float.TensorRandom as F
-}
import Torch.FFI.TestsNN
main :: IO ()
main = hspec spec
spec :: Spec
spec = do
s <- runIO (General.c_THCState_alloc >>= \s -> General.c_THCudaInit s >> pure s)
afterAll_ (void $ General.c_THCState_free s) $ do
-- describe "Float NNs" $ testSuite nullPtr floatBook
describe "Double NNs" $ testSuite s doubleBook
doubleBook :: NNTestSuite (Ptr C'THCState) (Ptr C'THCudaDoubleTensor) CDouble CDouble (Ptr ())
doubleBook = NNTestSuite
{ _newWithSize1d = D.c_newWithSize1d
, _newWithSize2d = D.c_newWithSize2d
, _newGen = pure nullPtr
, _normal = Right D.c_normal
, _fill = D.c_fill
, _sumall = D.c_sumall
, _free = D.c_free
, _nnAbsUpdateOutput = D.c_Abs_updateOutput
, _nnHSUpdateOutput = Nothing
, _nnL1UpdateOutput = D.c_L1Cost_updateOutput
, _nnRReLUUpdateOutput = D.c_RReLU_updateOutput
}
{-
floatBook :: NNTestSuite (Ptr C'THNNState) (Ptr C'THFloatTensor) CFloat CDouble
floatBook = NNTestSuite
{ _newWithSize1d = F.c_newWithSize1d
, _newWithSize2d = F.c_newWithSize2d
, _newGen = R.c_THGenerator_new
, _normal = F.c_normal
, _fill = F.c_fill
, _sumall = F.c_sumall
, _free = F.c_free
, _nnAbsUpdateOutput = F.c_Abs_updateOutput
, _nnHSUpdateOutput = F.c_HardShrink_updateOutput
, _nnL1UpdateOutput = F.c_L1Cost_updateOutput
, _nnRReLUUpdateOutput = F.c_RReLU_updateOutput
}
-}