|
|
|
@ -74,20 +74,20 @@ inline const char* cudnnGetErrorString(cudnnStatus_t status) {
|
|
|
|
|
#pragma message "This message is intended to annoy you enough to update."
|
|
|
|
|
#pragma message \
|
|
|
|
|
"please see https://docs.nvidia.com/deeplearning/sdk/cudnn-release-notes/"
|
|
|
|
|
#endif // CUDNN_VERSION < 6000
|
|
|
|
|
|
|
|
|
|
enum class DataLayout { // Not use
|
|
|
|
|
kNHWC,
|
|
|
|
|
kNCHW,
|
|
|
|
|
kNCDHW,
|
|
|
|
|
kNCHW_VECT_C,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum class PoolingMode {
|
|
|
|
|
kMaximum,
|
|
|
|
|
kAverage,
|
|
|
|
|
kMaximumDeterministic,
|
|
|
|
|
};
|
|
|
|
|
inline cudnnPoolingMode_t GetPoolingMode(const PoolingMode& mode) {
|
|
|
|
|
switch (mode) {
|
|
|
|
|
case PoolingMode::kMaximumDeterministic:
|
|
|
|
|
return CUDNN_POOLING_MAX;
|
|
|
|
|
case PoolingMode::kAverage:
|
|
|
|
|
return CUDNN_POOLING_AVERAGE_COUNT_EXCLUDE_PADDING;
|
|
|
|
|
case PoolingMode::kMaximum:
|
|
|
|
|
return CUDNN_POOLING_MAX;
|
|
|
|
|
default:
|
|
|
|
|
PADDLE_THROW("Unexpected pooling mode.");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#else
|
|
|
|
|
|
|
|
|
|
inline cudnnPoolingMode_t GetPoolingMode(const PoolingMode& mode) {
|
|
|
|
|
switch (mode) {
|
|
|
|
@ -101,6 +101,20 @@ inline cudnnPoolingMode_t GetPoolingMode(const PoolingMode& mode) {
|
|
|
|
|
PADDLE_THROW("Unexpected pooling mode.");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endif // CUDNN_VERSION < 6000
|
|
|
|
|
|
|
|
|
|
enum class DataLayout { // Not use
|
|
|
|
|
kNHWC,
|
|
|
|
|
kNCHW,
|
|
|
|
|
kNCDHW,
|
|
|
|
|
kNCHW_VECT_C,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum class PoolingMode {
|
|
|
|
|
kMaximum,
|
|
|
|
|
kAverage,
|
|
|
|
|
kMaximumDeterministic,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
template <typename T>
|
|
|
|
|
class CudnnDataType;
|
|
|
|
|