mirror of
https://github.com/pytorch/pytorch.git
synced 2025-10-20 21:14:14 +08:00
124 lines
6.3 KiB
C
124 lines
6.3 KiB
C
#ifndef TH_GENERIC_FILE
|
|
#define TH_GENERIC_FILE "generic/THTensor.h"
|
|
#else
|
|
|
|
/* a la lua? dim, storageoffset, ... et les methodes ? */
|
|
|
|
#define TH_TENSOR_REFCOUNTED 1
|
|
|
|
typedef struct THTensor
|
|
{
|
|
long *size;
|
|
long *stride;
|
|
int nDimension;
|
|
|
|
THStorage *storage;
|
|
long storageOffset;
|
|
int refcount;
|
|
|
|
char flag;
|
|
|
|
} THTensor;
|
|
|
|
|
|
/**** access methods ****/
|
|
TH_API THStorage* THTensor_(storage)(THTensor *self);
|
|
TH_API long THTensor_(storageOffset)(THTensor *self);
|
|
TH_API int THTensor_(nDimension)(THTensor *self);
|
|
TH_API long THTensor_(size)(THTensor *self, int dim);
|
|
TH_API long THTensor_(stride)(THTensor *self, int dim);
|
|
TH_API THLongStorage *THTensor_(newSizeOf)(THTensor *self);
|
|
TH_API THLongStorage *THTensor_(newStrideOf)(THTensor *self);
|
|
TH_API real *THTensor_(data)(THTensor *self);
|
|
|
|
TH_API void THTensor_(setFlag)(THTensor *self, const char flag);
|
|
TH_API void THTensor_(clearFlag)(THTensor *self, const char flag);
|
|
|
|
|
|
/**** creation methods ****/
|
|
TH_API THTensor *THTensor_(new)(void);
|
|
TH_API THTensor *THTensor_(newWithTensor)(THTensor *tensor);
|
|
/* stride might be NULL */
|
|
TH_API THTensor *THTensor_(newWithStorage)(THStorage *storage_, long storageOffset_, THLongStorage *size_, THLongStorage *stride_);
|
|
TH_API THTensor *THTensor_(newWithStorage1d)(THStorage *storage_, long storageOffset_,
|
|
long size0_, long stride0_);
|
|
TH_API THTensor *THTensor_(newWithStorage2d)(THStorage *storage_, long storageOffset_,
|
|
long size0_, long stride0_,
|
|
long size1_, long stride1_);
|
|
TH_API THTensor *THTensor_(newWithStorage3d)(THStorage *storage_, long storageOffset_,
|
|
long size0_, long stride0_,
|
|
long size1_, long stride1_,
|
|
long size2_, long stride2_);
|
|
TH_API THTensor *THTensor_(newWithStorage4d)(THStorage *storage_, long storageOffset_,
|
|
long size0_, long stride0_,
|
|
long size1_, long stride1_,
|
|
long size2_, long stride2_,
|
|
long size3_, long stride3_);
|
|
|
|
/* stride might be NULL */
|
|
TH_API THTensor *THTensor_(newWithSize)(THLongStorage *size_, THLongStorage *stride_);
|
|
TH_API THTensor *THTensor_(newWithSize1d)(long size0_);
|
|
TH_API THTensor *THTensor_(newWithSize2d)(long size0_, long size1_);
|
|
TH_API THTensor *THTensor_(newWithSize3d)(long size0_, long size1_, long size2_);
|
|
TH_API THTensor *THTensor_(newWithSize4d)(long size0_, long size1_, long size2_, long size3_);
|
|
|
|
TH_API THTensor *THTensor_(newClone)(THTensor *self);
|
|
TH_API THTensor *THTensor_(newContiguous)(THTensor *tensor);
|
|
TH_API THTensor *THTensor_(newSelect)(THTensor *tensor, int dimension_, long sliceIndex_);
|
|
TH_API THTensor *THTensor_(newNarrow)(THTensor *tensor, int dimension_, long firstIndex_, long size_);
|
|
TH_API THTensor *THTensor_(newTranspose)(THTensor *tensor, int dimension1_, int dimension2_);
|
|
TH_API THTensor *THTensor_(newUnfold)(THTensor *tensor, int dimension_, long size_, long step_);
|
|
|
|
TH_API void THTensor_(resize)(THTensor *tensor, THLongStorage *size, THLongStorage *stride);
|
|
TH_API void THTensor_(resizeAs)(THTensor *tensor, THTensor *src);
|
|
TH_API void THTensor_(resize1d)(THTensor *tensor, long size0_);
|
|
TH_API void THTensor_(resize2d)(THTensor *tensor, long size0_, long size1_);
|
|
TH_API void THTensor_(resize3d)(THTensor *tensor, long size0_, long size1_, long size2_);
|
|
TH_API void THTensor_(resize4d)(THTensor *tensor, long size0_, long size1_, long size2_, long size3_);
|
|
TH_API void THTensor_(resize5d)(THTensor *tensor, long size0_, long size1_, long size2_, long size3_, long size4_);
|
|
|
|
TH_API void THTensor_(set)(THTensor *self, THTensor *src);
|
|
TH_API void THTensor_(setStorage)(THTensor *self, THStorage *storage_, long storageOffset_, THLongStorage *size_, THLongStorage *stride_);
|
|
TH_API void THTensor_(setStorage1d)(THTensor *self, THStorage *storage_, long storageOffset_,
|
|
long size0_, long stride0_);
|
|
TH_API void THTensor_(setStorage2d)(THTensor *self, THStorage *storage_, long storageOffset_,
|
|
long size0_, long stride0_,
|
|
long size1_, long stride1_);
|
|
TH_API void THTensor_(setStorage3d)(THTensor *self, THStorage *storage_, long storageOffset_,
|
|
long size0_, long stride0_,
|
|
long size1_, long stride1_,
|
|
long size2_, long stride2_);
|
|
TH_API void THTensor_(setStorage4d)(THTensor *self, THStorage *storage_, long storageOffset_,
|
|
long size0_, long stride0_,
|
|
long size1_, long stride1_,
|
|
long size2_, long stride2_,
|
|
long size3_, long stride3_);
|
|
|
|
TH_API void THTensor_(narrow)(THTensor *self, THTensor *src, int dimension_, long firstIndex_, long size_);
|
|
TH_API void THTensor_(select)(THTensor *self, THTensor *src, int dimension_, long sliceIndex_);
|
|
TH_API void THTensor_(transpose)(THTensor *self, THTensor *src, int dimension1_, int dimension2_);
|
|
TH_API void THTensor_(unfold)(THTensor *self, THTensor *src, int dimension_, long size_, long step_);
|
|
|
|
TH_API void THTensor_(squeeze)(THTensor *self, THTensor *src);
|
|
TH_API void THTensor_(squeeze1d)(THTensor *self, THTensor *src, int dimension_);
|
|
|
|
TH_API int THTensor_(isContiguous)(THTensor *self);
|
|
TH_API long THTensor_(nElement)(THTensor *self);
|
|
|
|
TH_API void THTensor_(retain)(THTensor *self);
|
|
TH_API void THTensor_(free)(THTensor *self);
|
|
TH_API void THTensor_(freeCopyTo)(THTensor *self, THTensor *dst);
|
|
|
|
/* Slow access methods [check everything] */
|
|
TH_API void THTensor_(set1d)(THTensor *tensor, long x0, real value);
|
|
TH_API void THTensor_(set2d)(THTensor *tensor, long x0, long x1, real value);
|
|
TH_API void THTensor_(set3d)(THTensor *tensor, long x0, long x1, long x2, real value);
|
|
TH_API void THTensor_(set4d)(THTensor *tensor, long x0, long x1, long x2, long x3, real value);
|
|
|
|
TH_API real THTensor_(get1d)(THTensor *tensor, long x0);
|
|
TH_API real THTensor_(get2d)(THTensor *tensor, long x0, long x1);
|
|
TH_API real THTensor_(get3d)(THTensor *tensor, long x0, long x1, long x2);
|
|
TH_API real THTensor_(get4d)(THTensor *tensor, long x0, long x1, long x2, long x3);
|
|
|
|
#endif
|