{-# LANGUAGE Strict #-} {-# OPTIONS_GHC -fno-cse #-} module Torch.FFI.THC.State where import Foreign import Control.Monad (void) import Torch.Types.THC (C'THCState) import qualified Torch.FFI.THC.General as General import System.IO.Unsafe -- | calls 'General.c_THCudaShutdown' and 'General.c_THCState_free' from C. foreign import ccall "&free_CTHState" state_free :: FunPtr (Ptr C'THCState -> IO ()) torchstate :: ForeignPtr C'THCState torchstate = unsafePerformIO $ do s <- General.c_THCState_alloc General.c_THCudaInit s General.c_THCMagma_init s newForeignPtr state_free s {-# NOINLINE torchstate #-}