blob: 7fe8af5fc56e71a65d6e1a5656654f5529a62b4f [file] [log] [blame]
#if defined(TH_REAL_IS_FLOAT) || defined(TH_REAL_IS_DOUBLE) || \
defined(THC_REAL_IS_FLOAT) || defined(THC_REAL_IS_DOUBLE) || \
defined(THC_REAL_IS_HALF)
#define RealStr "float"
#else
#define RealStr "int"
#endif
#ifdef THC_REAL_IS_HALF
#define AS_REAL(x) THC_float2half(x)
#else
#define AS_REAL(x) x
#endif
#ifdef THD_GENERIC_FILE
#define IS_DISTRIBUTED true
#else
#define IS_DISTRIBUTED false
#endif
#ifndef THC_GENERIC_FILE
#define IS_CUDA false
#define CUDA_FLOAT false
#else
#define IS_CUDA true
#if defined(THC_REAL_IS_BYTE)
#define CUDA_BYTE 1
#else
#define CUDA_BYTE 0
#endif
#if defined(THC_REAL_IS_CHAR)
#define CUDA_CHAR 1
#else
#define CUDA_CHAR 0
#endif
#if defined(THC_REAL_IS_SHORT)
#define CUDA_SHORT 1
#else
#define CUDA_SHORT 0
#endif
#if defined(THC_REAL_IS_INT)
#define CUDA_INT 1
#else
#define CUDA_INT 0
#endif
#if defined(THC_REAL_IS_LONG)
#define CUDA_LONG 1
#else
#define CUDA_LONG 0
#endif
#if defined(THC_REAL_IS_FLOAT)
#define CUDA_FLOAT 1
#else
#define CUDA_FLOAT 0
#endif
#if defined(THC_REAL_IS_DOUBLE)
#define CUDA_DOUBLE 1
#else
#define CUDA_DOUBLE 0
#endif
#if defined(THC_REAL_IS_HALF)
#define CUDA_HALF 1
#else
#define CUDA_HALF 0
#endif
#endif // ifndef THC_GENERIC_FILE
#if IS_CUDA
#define THIndexTensor THCudaLongTensor
#define THIndexTensor_(NAME) TH_CONCAT_2(THCudaLongTensor_,NAME)
#define THPIndexTensor THCPLongTensor
#define THPIndexTensor_(NAME) TH_CONCAT_2(THCPLongTensor_,NAME)
#define THPIndexTensorClass THCPLongTensorClass
#elif IS_DISTRIBUTED
#define THIndexTensor THDLongTensor
#define THIndexTensor_(NAME) TH_CONCAT_2(THDLongTensor_,NAME)
#define THPIndexTensor THDPLongTensor
#define THPIndexTensor_(NAME) TH_CONCAT_2(THDPLongTensor_,NAME)
#define THPIndexTensorClass THDPLongTensorClass
#else
#define THIndexTensor THLongTensor
#define THIndexTensor_(NAME) TH_CONCAT_2(THLongTensor_,NAME)
#define THPIndexTensor THPLongTensor
#define THPIndexTensor_(NAME) TH_CONCAT_2(THPLongTensor_,NAME)
#define THPIndexTensorClass THPLongTensorClass
#endif
#if IS_CUDA
#define THIntegerTensor THCudaIntTensor
#define THIntegerTensor_(NAME) TH_CONCAT_2(THCudaIntTensor_,NAME)
#define THPIntegerTensor THCPIntTensor
#define THPIntegerTensorClass THCPIntTensorClass
#elif IS_DISTRIBUTED
#define THIntegerTensor THDIntTensor
#define THIntegerTensor_(NAME) TH_CONCAT_2(THDIntTensor_,NAME)
#define THPIntegerTensor THDPIntTensor
#define THPIntegerTensorClass THDPIntTensorClass
#else
#define THIntegerTensor THIntTensor
#define THIntegerTensor_(NAME) TH_CONCAT_2(THIntTensor_,NAME)
#define THPIntegerTensor THPIntTensor
#define THPIntegerTensorClass THPIntTensorClass
#endif
#if IS_CUDA
#define THBoolTensor THCudaByteTensor
#define THPBoolTensor THCPByteTensor
#define THPBoolTensorClass THCPByteTensorClass
#elif IS_DISTRIBUTED
#define THBoolTensor THDByteTensor
#define THPBoolTensor THDPByteTensor
#define THPBoolTensorClass THDPByteTensorClass
#else
#define THBoolTensor THByteTensor
#define THPBoolTensor THPByteTensor
#define THPBoolTensorClass THPByteTensorClass
#endif
#if IS_CUDA
#define THPModuleStr "torch.cuda."
#elif IS_DISTRIBUTED
#define THPModuleStr "torch.distributed."
#else
#define THPModuleStr "torch."
#endif
// The C API uses THLongStorage for size and stride, but the Python API uses
// torch.Size or tuple
typedef THLongStorage THSize;
typedef THLongStorage THStride;
!!inc methods/Tensor.cwrap
!!inc methods/TensorSerialization.cwrap
!!inc methods/TensorApply.cwrap
!!inc methods/TensorMath.cwrap
!!inc methods/TensorCompare.cwrap
!!inc methods/TensorRandom.cwrap
!!inc methods/TensorCuda.cwrap
#if !IS_DISTRIBUTED
!!inc methods/SparseTensor.cwrap
#endif
// cwrap should put definitions before undefs, so let's mark this place
// PUT DEFINITIONS IN HERE PLEASE
#undef IS_CUDA
#undef CUDA_BYTE
#undef CUDA_CHAR
#undef CUDA_SHORT
#undef CUDA_INT
#undef CUDA_LONG
#undef CUDA_FLOAT
#undef CUDA_DOUBLE
#undef CUDA_HALF
#undef THIndexTensor
#undef THIndexTensor_
#undef THPIndexTensor
#undef THPIndexTensorClass
#undef THBoolTensor
#undef THPBoolTensor
#undef THPBoolTensorClass
#undef RealStr
#undef AS_REAL