blob: e1eb4db4fe55d65bd77e046c510c4034bf153adb [file] [log] [blame]
#include <THC/THC.h>
#include <THC/THCApply.cuh>
#define THCIndexTensor THCudaLongTensor
#define THCIndexTensor_(NAME) THCudaLongTensor_ ## NAME
typedef long THCIndex_t;
#define THNN_(NAME) TH_CONCAT_3(THNN_, CReal, NAME)
TH_API void THNN_CudaAbsCriterion_updateOutput(
THCState *state,
THCudaTensor *input,
THCudaTensor *target,
THCudaTensor *output,
bool sizeAverage);
TH_API void THNN_CudaAbsCriterion_updateGradInput(
THCState *state,
THCudaTensor *input,
THCudaTensor *target,
THCudaTensor *gradInput,
bool sizeAverage);
TH_API void THNN_CudaBCECriterion_updateOutput(
THCState *state,
THCudaTensor *input,
THCudaTensor *target,
THCudaTensor *output,
bool sizeAverage,
THCudaTensor *weights); // [OPTIONAL]
TH_API void THNN_CudaBCECriterion_updateGradInput(
THCState *state,
THCudaTensor *input,
THCudaTensor *target,
THCudaTensor *gradInput,
bool sizeAverage,
THCudaTensor *weights); // [OPTIONAL]
TH_API void THNN_CudaClassNLLCriterion_updateOutput(
THCState *state,
THCudaTensor *input,
THCIndexTensor *target,
THCudaTensor *output,
bool sizeAverage,
THCudaTensor *weights, // [OPTIONAL]
THCudaTensor *total_weight);
TH_API void THNN_CudaClassNLLCriterion_updateGradInput(
THCState *state,
THCudaTensor *input,
THCIndexTensor *target,
THCudaTensor *gradInput,
bool sizeAverage,
THCudaTensor *weights, // [OPTIONAL]
THCudaTensor *total_weight);
TH_API void THNN_CudaDistKLDivCriterion_updateOutput(
THCState *state,
THCudaTensor *input,
THCudaTensor *target,
THCudaTensor *output,
bool sizeAverage);
TH_API void THNN_CudaDistKLDivCriterion_updateGradInput(
THCState *state,
THCudaTensor *input,
THCudaTensor *target,
THCudaTensor *gradInput,
bool sizeAverage);
TH_API void THNN_CudaL1Cost_updateOutput(
THCState *state,
THCudaTensor *input,
THCudaTensor *output);
TH_API void THNN_CudaL1Cost_updateGradInput(
THCState *state,
THCudaTensor *input,
THCudaTensor *gradOutput, // [OPTIONAL]
THCudaTensor *gradInput);
TH_API void THNN_CudaLookupTable_accGradParameters(
THCState *state,
THCIndexTensor *input,
THCudaTensor *gradOutput,
THCudaTensor *gradWeight,
THCIndexTensor *count,
THCIndexTensor *sorted, // [OPTIONAL]
THCIndexTensor *indices, // [OPTIONAL]
bool scaleGradByFreq,
int paddingValue,
float scale);
TH_API void THNN_CudaLookupTable_renorm(
THCState *state,
THCIndexTensor *idx,
THCudaTensor *weight,
float maxNorm,
float normType);
TH_API void THNN_CudaMarginCriterion_updateOutput(
THCState *state,
THCudaTensor *input,
THCudaTensor *target,
THCudaTensor *output,
bool sizeAverage,
float margin);
TH_API void THNN_CudaMarginCriterion_updateGradInput(
THCState *state,
THCudaTensor *input,
THCudaTensor *target,
THCudaTensor *gradInput,
bool sizeAverage,
float margin);
TH_API void THNN_CudaSoftMarginCriterion_updateOutput(
THCState *state,
THCudaTensor *input,
THCudaTensor *target,
THCudaTensor *output,
int sizeAverage);
TH_API void THNN_CudaSoftMarginCriterion_updateGradInput(
THCState *state,
THCudaTensor *input,
THCudaTensor *target,
THCudaTensor *gradInput,
int sizeAverage);
TH_API void THNN_CudaMSECriterion_updateOutput(
THCState *state,
THCudaTensor *input,
THCudaTensor *target,
THCudaTensor *output,
bool sizeAverage);
TH_API void THNN_CudaMSECriterion_updateGradInput(
THCState *state,
THCudaTensor *input,
THCudaTensor *target,
THCudaTensor *gradInput,
bool sizeAverage);
TH_API void THNN_CudaMultiMarginCriterion_updateOutput(
THCState *state,
THCudaTensor *input,
THCudaTensor *target,
THCudaTensor *output,
bool sizeAverage,
int p,
THCudaTensor *weights, // [OPTIONAL]
float margin);
TH_API void THNN_CudaMultiMarginCriterion_updateGradInput(
THCState *state,
THCudaTensor *input,
THCudaTensor *target,
THCudaTensor *gradInput,
bool sizeAverage,
int p,
THCudaTensor *weights, // [OPTIONAL]
float margin);
TH_API void THNN_CudaMultiLabelMarginCriterion_updateOutput(
THCState *state,
THCudaTensor *input,
THCudaTensor *target,
THCudaTensor *output,
THCudaTensor *istarget,
bool sizeAverage);
TH_API void THNN_CudaMultiLabelMarginCriterion_updateGradInput(
THCState *state,
THCudaTensor *input,
THCudaTensor *target,
THCudaTensor *gradInput,
THCudaTensor *istarget,
bool sizeAverage);
TH_API void THNN_CudaSmoothL1Criterion_updateOutput(
THCState *state,
THCudaTensor *input,
THCudaTensor *target,
THCudaTensor *output,
bool sizeAverage);
TH_API void THNN_CudaSmoothL1Criterion_updateGradInput(
THCState *state,
THCudaTensor *input,
THCudaTensor *target,
THCudaTensor *gradInput,
bool sizeAverage);
TH_API void THNN_CudaTemporalConvolution_updateOutput(
THCState *state,
THCudaTensor *input,
THCudaTensor *output,
THCudaTensor *weight,
THCudaTensor *bias,
int kW, int dW,
int inputFrameSize,
int outputFrameSize);
TH_API void THNN_CudaTemporalConvolution_updateGradInput(
THCState* state,
THCudaTensor *input,
THCudaTensor *gradOutput,
THCudaTensor *gradInput,
THCudaTensor *weight,
int kW, int dW);
TH_API void THNN_CudaTemporalConvolution_accGradParameters(
THCState *state,
THCudaTensor *input,
THCudaTensor *gradOutput,
THCudaTensor *gradWeight,
THCudaTensor *gradBias,
int kW, int dW,
float scale);
TH_API void THNN_CudaTemporalMaxPooling_updateOutput(
THCState *state,
THCudaTensor *input,
THCudaTensor *output,
THCIndexTensor *indices,
int kW, int dW);
TH_API void THNN_CudaTemporalMaxPooling_updateGradInput(
THCState *state,
THCudaTensor *input,
THCudaTensor *gradOutput,
THCudaTensor *gradInput,
THCIndexTensor *indices,
int kW, int dW);
TH_API void THNN_CudaSparseLinear_updateOutput(
THCState *state,
THCudaTensor *input,
THCudaTensor *output,
THCudaTensor *weight,
THCudaTensor *bias);
TH_API void THNN_CudaSparseLinear_accGradParameters(
THCState *state,
THCudaTensor *input,
THCudaTensor *gradOutput,
THCudaTensor *gradWeight,
THCudaTensor *gradBias,
THCudaTensor *weight,
THCudaTensor *bias,
double weightDecay,
double scale);
TH_API void THNN_CudaSparseLinear_legacyUpdateOutput(
THCState *state,
THCudaTensor *input,
THCudaTensor *output,
THCudaTensor *weight,
THCudaTensor *bias);
TH_API void THNN_CudaSparseLinear_legacyAccGradParameters(
THCState *state,
THCudaTensor *input,
THCudaTensor *gradOutput,
THCudaTensor *gradWeight,
THCudaTensor *gradBias,
THCudaTensor *weight,
THCudaTensor *bias,
double weightDecay,
double scale);
TH_API void THNN_CudaSparseLinear_zeroGradParameters(
THCState *state,
THCudaTensor *gradWeight,
THCudaTensor *gradBias,
THCudaTensor *lastInput);
TH_API void THNN_CudaSparseLinear_updateParameters(
THCState *state,
THCudaTensor *weight,
THCudaTensor *bias,
THCudaTensor *gradWeight,
THCudaTensor *gradBias,
THCudaTensor *lastInput,
double learningRate);
TH_API void THNN_CudaBatchNormalization_updateOutput(
THCState *state,
THCudaTensor *input,
THCudaTensor *output,
THCudaTensor *weight, // [OPTIONAL]
THCudaTensor *bias, // [OPTIONAL]
THCudaTensor *runningMean,
THCudaTensor *runningVar,
THCudaTensor *saveMean,
THCudaTensor *saveStd,
bool train,
double momentum,
double eps);
TH_API void THNN_CudaBatchNormalization_backward(
THCState *state,
THCudaTensor *input,
THCudaTensor *gradOutput,
THCudaTensor *gradInput, // [OPTIONAL]
THCudaTensor *gradWeight, // [OPTIONAL]
THCudaTensor *gradBias, // [OPTIONAL]
THCudaTensor *weight, // [OPTIONAL]
THCudaTensor *running_mean,
THCudaTensor *running_var,
THCudaTensor *save_mean,
THCudaTensor *save_std,
bool train,
float scale,
double eps);
TH_API void THNN_CudaSpatialConvolutionMM_updateOutput(
THCState *state,
THCudaTensor *input,
THCudaTensor *output,
THCudaTensor *weight,
THCudaTensor *bias, // [OPTIONAL]
THCudaTensor *columns,
THCudaTensor *ones,
int kW, int kH,
int dW, int dH,
int padW, int padH);
TH_API void THNN_CudaSpatialConvolutionMM_updateGradInput(
THCState *state,
THCudaTensor *input,
THCudaTensor *gradOutput,
THCudaTensor *gradInput,
THCudaTensor *weight,
THCudaTensor *columns,
THCudaTensor *ones,
int kW, int kH,
int dW, int dH,
int padW, int padH);
TH_API void THNN_CudaSpatialConvolutionMM_accGradParameters(
THCState *state,
THCudaTensor *input,
THCudaTensor *gradOutput,
THCudaTensor *gradWeight,
THCudaTensor *gradBias, // [OPTIONAL]
THCudaTensor *columns,
THCudaTensor *ones,
int kW, int kH,
int dW, int dH,
int padW, int padH,
float scale);
TH_API void THNN_CudaSpatialConvolutionLocal_updateOutput(
THCState *state,
THCudaTensor *input,
THCudaTensor *output,
THCudaTensor *weight,
THCudaTensor *bias,
THCudaTensor *finput,
THCudaTensor *fgradInput,
int kW, int kH,
int dW, int dH,
int padW, int padH,
long inputWidth, long inputHeight,
long outputWidth, long outputHeight);
TH_API void THNN_CudaSpatialConvolutionLocal_updateGradInput(
THCState *state,
THCudaTensor *input,
THCudaTensor *gradOutput,
THCudaTensor *gradInput,
THCudaTensor *weight,
THCudaTensor *finput,
THCudaTensor *fgradInput,
int kW, int kH,
int dW, int dH,
int padW, int padH,
long inputWidth, long inputHeight,
long outputWidth, long outputHeight);
TH_API void THNN_CudaSpatialConvolutionLocal_accGradParameters(
THCState *state,
THCudaTensor *input,
THCudaTensor *gradOutput,
THCudaTensor *gradWeight,
THCudaTensor *gradBias,
THCudaTensor *finput,
THCudaTensor *fgradInput,
int kW, int kH,
int dW, int dH,
int padW, int padH,
long inputWidth, long inputHeight,
long outputWidth, long outputHeight,
float scale);
TH_API void THNN_CudaSpatialFullConvolution_updateOutput(
THCState *state,
THCudaTensor *input,
THCudaTensor *output,
THCudaTensor *weight,
THCudaTensor *bias, // [OPTIONAL]
THCudaTensor *columns,
THCudaTensor *ones,
int kW, int kH,
int dW, int dH,
int padW, int padH,
int adjW, int adjH);
TH_API void THNN_CudaSpatialFullConvolution_updateGradInput(
THCState *state,
THCudaTensor *input,
THCudaTensor *gradOutput,
THCudaTensor *gradInput,
THCudaTensor *weight,
THCudaTensor *gradColumns,
int kW, int kH,
int dW, int dH,
int padW, int padH,
int adjW, int adjH);
TH_API void THNN_CudaSpatialFullConvolution_accGradParameters(
THCState *state,
THCudaTensor *input,
THCudaTensor *gradOutput,
THCudaTensor *gradWeight,
THCudaTensor *gradBias, // [OPTIONAL]
THCudaTensor *columns,
THCudaTensor *ones,
int kW, int kH,
int dW, int dH,
int padW, int padH,
int adjW, int adjH,
float scale);
TH_API void THNN_CudaSpatialDilatedConvolution_updateOutput(
THCState *state,
THCudaTensor *input,
THCudaTensor *output,
THCudaTensor *weight,
THCudaTensor *bias, // [OPTIONAL]
THCudaTensor *columns,
THCudaTensor *ones,
int kW, int kH,
int dW, int dH,
int padW, int padH,
int dilationW, int dilationH);
TH_API void THNN_CudaSpatialDilatedConvolution_updateGradInput(
THCState *state,
THCudaTensor *input,
THCudaTensor *gradOutput,
THCudaTensor *gradInput,
THCudaTensor *weight,
THCudaTensor *gradColumns,
int kW, int kH,
int dW, int dH,
int padW, int padH,
int dilationW, int dilationH );
TH_API void THNN_CudaSpatialDilatedConvolution_accGradParameters(
THCState *state,
THCudaTensor *input,
THCudaTensor *gradOutput,
THCudaTensor *gradWeight,
THCudaTensor *gradBias, // [OPTIONAL]
THCudaTensor *columns,
THCudaTensor *ones,
int kW, int kH,
int dW, int dH,
int padW, int padH,
int dilationW, int dilationH,
float scale);
TH_API void THNN_CudaSpatialFractionalMaxPooling_updateOutput(
THCState *state,
THCudaTensor *input,
THCudaTensor *output,
int outputW, int outputH,
int poolSizeW, int poolSizeH,
THCIndexTensor *indices,
THCudaTensor *randomSamples);
TH_API void THNN_CudaSpatialFractionalMaxPooling_updateGradInput(
THCState *state,
THCudaTensor *input,
THCudaTensor *gradOutput,
THCudaTensor *gradInput,
int outputW, int outputH,
int poolSizeW, int poolSizeH,
THCIndexTensor *indices);
TH_API void THNN_CudaVolumetricAveragePooling_updateOutput(
THCState *state,
THCudaTensor *input,
THCudaTensor *output,
int kT, int kW, int kH,
int dT, int dW, int dH);
TH_API void THNN_CudaVolumetricAveragePooling_updateGradInput(
THCState *state,
THCudaTensor *input,
THCudaTensor *gradOutput,
THCudaTensor *gradInput,
int kT, int kW, int kH,
int dT, int dW, int dH);
TH_API void THNN_CudaVolumetricConvolution_updateOutput(
THCState *state,
THCudaTensor *input,
THCudaTensor *output,
THCudaTensor *weight,
THCudaTensor *bias,
THCudaTensor *finput,
THCudaTensor *fgradInput,
int dT, int dW, int dH,
int padT, int padW, int padH);
TH_API void THNN_CudaVolumetricConvolution_updateGradInput(
THCState *state,
THCudaTensor *input,
THCudaTensor *gradOutput,
THCudaTensor *gradInput,
THCudaTensor *weight,
THCudaTensor *finput,
int dT, int dW, int dH,
int padT, int padW, int padH);
TH_API void THNN_CudaVolumetricConvolution_accGradParameters(
THCState *state,
THCudaTensor *input,
THCudaTensor *gradOutput,
THCudaTensor *gradWeight,
THCudaTensor *gradBias,
THCudaTensor *finput,
THCudaTensor *fgradInput,
int dT, int dW, int dH,
int padT, int padW, int padH,
float scale);
TH_API void THNN_CudaVolumetricFullConvolution_updateOutput(
THCState *state,
THCudaTensor *input,
THCudaTensor *output,
THCudaTensor *weight,
THCudaTensor *bias,
THCudaTensor *finput,
THCudaTensor *fgradInput,
int dT, int dW, int dH,
int padT, int padW, int padH,
int adjT, int adjW, int adjH);
TH_API void THNN_CudaVolumetricFullConvolution_updateGradInput(
THCState *state,
THCudaTensor *input,
THCudaTensor *gradOutput,
THCudaTensor *gradInput,
THCudaTensor *weight,
THCudaTensor *finput,
THCudaTensor *fgradInput,
int dT, int dW, int dH,
int padT, int padW, int padH,
int adjT, int adjW, int adjH);
TH_API void THNN_CudaVolumetricFullConvolution_accGradParameters(
THCState *state,
THCudaTensor *input,
THCudaTensor *gradOutput,
THCudaTensor *gradWeight,
THCudaTensor *gradBias,
THCudaTensor *finput,
THCudaTensor *fgradInput,
int dT, int dW, int dH,
int padT, int padW, int padH,
int adjT, int adjW, int adjH,
float scale);
TH_API void THNN_CudaVolumetricDilatedConvolution_updateOutput(
THCState *state,
THCudaTensor *input,
THCudaTensor *output,
THCudaTensor *weight,
THCudaTensor *bias,
THCudaTensor *columns,
THCudaTensor *ones,
int kT, int kW, int kH,
int dT, int dW, int dH,
int padT, int padW, int padH,
int dilationT, int dilationW, int dilationH);
TH_API void THNN_CudaVolumetricDilatedConvolution_updateGradInput(
THCState *state,
THCudaTensor *input,
THCudaTensor *gradOutput,
THCudaTensor *gradInput,
THCudaTensor *weight,
THCudaTensor *gradColumns,
int kT, int kW, int kH,
int dT, int dW, int dH,
int padT, int padW, int padH,
int dilationT, int dilationW, int dilationH);
TH_API void THNN_CudaVolumetricDilatedConvolution_accGradParameters(
THCState *state,
THCudaTensor *input,
THCudaTensor *gradOutput,
THCudaTensor *gradWeight,
THCudaTensor *gradBias,
THCudaTensor *columns,
THCudaTensor *ones,
int kT, int kW, int kH,
int dT, int dW, int dH,
int padT, int padW, int padH,
int dilationT, int dilationW, int dilationH,
float scale);
TH_API void THNN_CudaVolumetricMaxPooling_updateOutput(
THCState *state,
THCudaTensor *input,
THCudaTensor *output,
THCIndexTensor *indices,
int kT, int kW, int kH,
int dT, int dW, int dH,
int padT, int padW, int padH,
bool ceilMode);
TH_API void THNN_CudaVolumetricMaxPooling_updateGradInput(
THCState *state,
THCudaTensor *input,
THCudaTensor *gradOutput,
THCudaTensor *gradInput,
THCIndexTensor *indices,
int dT, int dW, int dH,
int padT, int padW, int padH);
TH_API void THNN_CudaVolumetricDilatedMaxPooling_updateOutput(
THCState *state,
THCudaTensor *input,
THCudaTensor *output,
THCIndexTensor *indices,
int kT, int kW, int kH,
int dT, int dW, int dH,
int padT, int padW, int padH,
int dilationT, int dilationW, int dilationH,
bool ceilMode);
TH_API void THNN_CudaVolumetricDilatedMaxPooling_updateGradInput(
THCState *state,
THCudaTensor *input,
THCudaTensor *gradOutput,
THCudaTensor *gradInput,
THCIndexTensor *indices,
int dT, int dW, int dH,
int padT, int padW, int padH,
int dilationT, int dilationW, int dilationH);
TH_API void THNN_CudaVolumetricMaxUnpooling_updateOutput(
THCState *state,
THCudaTensor *input,
THCudaTensor *output,
THCIndexTensor *indices,
int outputTime, int outputWidth, int outputHeight,
int dT, int dW, int dH,
int padT, int padW, int padH);
TH_API void THNN_CudaVolumetricMaxUnpooling_updateGradInput(
THCState *state,
THCudaTensor *input,
THCudaTensor *gradOutput,
THCudaTensor *gradInput,
THCIndexTensor *indices,
int outputTime, int outputWidth, int outputHeight,
int dT, int dW, int dH,
int padT, int padW, int padH);
TH_API void THNN_CudaVolumetricReplicationPadding_updateOutput(
THCState *state,
THCudaTensor *input,
THCudaTensor *output,
int pleft, int pright,
int ptop, int pbottom,
int pfront, int pback);
TH_API void THNN_CudaVolumetricReplicationPadding_updateGradInput(
THCState *state,
THCudaTensor *input,
THCudaTensor *gradOutput,
THCudaTensor *gradInput,
int pleft, int pright,
int ptop, int pbottom,
int pfront, int pback);
#include "generic/THCUNN.h"
#include "THCGenerateFloatTypes.h"