| #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 |