本文整理汇总了C++中CUDNN_CHECK函数的典型用法代码示例。如果您正苦于以下问题:C++ CUDNN_CHECK函数的具体用法?C++ CUDNN_CHECK怎么用?C++ CUDNN_CHECK使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了CUDNN_CHECK函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: createPoolingDesc
inline void createPoolingDesc(cudnnPoolingDescriptor_t* pool,
cudnnPoolingMode_t mode, int h, int w, int pad_h, int pad_w,
int stride_h, int stride_w) {
CUDNN_CHECK(cudnnCreatePoolingDescriptor(pool));
CUDNN_CHECK(cudnnSetPooling2dDescriptor(*pool, mode, h, w, pad_h, pad_w,
stride_h, stride_w));
}
开发者ID:StevenLee-belief,项目名称:purine2,代码行数:7,代码来源:cudnn.hpp
示例2: createTensor4dDesc
inline void createTensor4dDesc(cudnnTensorDescriptor_t* desc, Size size,
Stride stride) {
CUDNN_CHECK(cudnnCreateTensorDescriptor(desc));
CUDNN_CHECK(cudnnSetTensor4dDescriptorEx(*desc, dataType<Dtype>::type,
size.num(), size.channels(), size.height(), size.width(),
stride.nstride(), stride.cstride(), stride.hstride(),
stride.wstride()));
}
开发者ID:StevenLee-belief,项目名称:purine2,代码行数:8,代码来源:cudnn.hpp
示例3: pad_y
ConvBC01CuDNN<T>::ConvBC01CuDNN(int pad_y, int pad_x, int stride_y,
int stride_x) : pad_y(pad_y), pad_x(pad_x), stride_y(stride_y),
stride_x(stride_x), n_imgs(0), n_channels(0), n_filters(0), img_h(0),
img_w(0), filter_h(0), filter_w(0), workspace_size(0) {
CUDNN_CHECK(cudnnCreateTensorDescriptor(&imgs_desc));
CUDNN_CHECK(cudnnCreateTensorDescriptor(&convout_desc));
CUDNN_CHECK(cudnnCreateFilterDescriptor(&filters_desc));
CUDNN_CHECK(cudnnCreateConvolutionDescriptor(&conv_desc));
}
开发者ID:bebee,项目名称:cudarray,代码行数:9,代码来源:cudnn.cpp
示例4: createFilterDesc
inline void createFilterDesc(cudnnFilterDescriptor_t* desc,
int n, int c, int h, int w) {
CUDNN_CHECK(cudnnCreateFilterDescriptor(desc));
#if CUDNN_VERSION_MIN(5, 0, 0)
CUDNN_CHECK(cudnnSetFilter4dDescriptor(*desc, dataType<Dtype>::type,
CUDNN_TENSOR_NCHW, n, c, h, w));
#else
CUDNN_CHECK(cudnnSetFilter4dDescriptor_v4(*desc, dataType<Dtype>::type,
CUDNN_TENSOR_NCHW, n, c, h, w));
#endif
}
开发者ID:fengbingchun,项目名称:Caffe_Test,代码行数:11,代码来源:cudnn.hpp
示例5: setConvolutionDesc
inline void setConvolutionDesc(cudnnConvolutionDescriptor_t* conv,
cudnnTensorDescriptor_t bottom, cudnnFilterDescriptor_t filter,
int pad_h, int pad_w, int stride_h, int stride_w) {
#if CUDNN_VERSION_MIN(6, 0, 0)
CUDNN_CHECK(cudnnSetConvolution2dDescriptor(*conv,
pad_h, pad_w, stride_h, stride_w, 1, 1, CUDNN_CROSS_CORRELATION,
dataType<Dtype>::type));
#else
CUDNN_CHECK(cudnnSetConvolution2dDescriptor(*conv,
pad_h, pad_w, stride_h, stride_w, 1, 1, CUDNN_CROSS_CORRELATION));
#endif
}
开发者ID:fengbingchun,项目名称:Caffe_Test,代码行数:12,代码来源:cudnn.hpp
示例6: CUDNN_CHECK
void ConvBC01CuDNN<T>::fprop(const T *imgs, const T *filters, int n_imgs,
int n_channels, int n_filters, int img_h, int img_w, int filter_h,
int filter_w, T *convout) {
bool set_conv_desc = false;
if (n_imgs != this->n_imgs || n_channels != this->n_channels ||
img_h != this->img_h || img_w != this->img_w) {
CUDNN_CHECK(cudnnSetTensor4dDescriptor(
imgs_desc, CUDNN_TENSOR_NCHW, CUDNN_DATA_FLOAT, n_imgs, n_channels,
img_h, img_w
));
this->n_imgs = n_imgs;
this->n_channels = n_channels;
this->img_h = img_h;
this->img_w = img_w;
set_conv_desc = true;
}
if (n_filters != this->n_filters || n_channels != this->n_channels ||
filter_h != this->filter_h || filter_w != this->filter_w) {
CUDNN_CHECK(cudnnSetFilter4dDescriptor(
filters_desc, CUDNN_DATA_FLOAT, n_filters, n_channels, filter_h,
filter_w
));
this->n_filters = n_filters;
this->n_channels = n_channels;
this->filter_h = filter_h;
this->filter_w = filter_w;
set_conv_desc = true;
}
if (set_conv_desc) {
CUDNN_CHECK(cudnnSetConvolution2dDescriptor(
conv_desc, pad_y, pad_x, stride_y, stride_x, 1, 1, CUDNN_CONVOLUTION
));
int n, c, h, w;
CUDNN_CHECK(cudnnGetConvolution2dForwardOutputDim(
conv_desc, imgs_desc, filters_desc, &n, &c, &h, &w
));
CUDNN_CHECK(cudnnSetTensor4dDescriptor(
convout_desc, CUDNN_TENSOR_NCHW, CUDNN_DATA_FLOAT, n, c, h, w
));
CUDNN_CHECK(cudnnGetConvolutionForwardAlgorithm(
CUDNN::handle(), imgs_desc, filters_desc, conv_desc, convout_desc,
CUDNN_CONVOLUTION_FWD_SPECIFY_WORKSPACE_LIMIT, WORKSPACE_LIMIT,
&fwd_algo
));
CUDNN_CHECK(cudnnGetConvolutionForwardWorkspaceSize(
CUDNN::handle(), imgs_desc, filters_desc, conv_desc, convout_desc,
fwd_algo, &workspace_size
));
}
void *workspace = NULL;
if (workspace_size > 0) {
workspace = CUDA::buffer(workspace_size);
}
CUDNN_CHECK(cudnnConvolutionForward(
CUDNN::handle(), &CUDNN::one, imgs_desc, imgs, filters_desc, filters,
conv_desc, fwd_algo, workspace, workspace_size, &CUDNN::zero,
convout_desc, convout
));
}
开发者ID:funnydevnull,项目名称:cudarray,代码行数:60,代码来源:cudnn.cpp
示例7: CUDA_CHECK
void CuDNNConvolutionLayer<Dtype>::LayerSetUp(
const vector<Blob<Dtype>*>& bottom, const vector<Blob<Dtype>*>& top) {
ConvolutionLayer<Dtype>::LayerSetUp(bottom, top);
// Initialize CUDA streams and cuDNN.
stream_ = new cudaStream_t[this->group_ * CUDNN_STREAMS_PER_GROUP];
handle_ = new cudnnHandle_t[this->group_ * CUDNN_STREAMS_PER_GROUP];
workspaceSizeInBytes = 0;
workspace = NULL;
workspace = NULL;
workspaceSizeInBytes = (size_t)0;
for (int g = 0; g < this->group_ * CUDNN_STREAMS_PER_GROUP; g++) {
CUDA_CHECK(cudaStreamCreate(&stream_[g]));
CUDNN_CHECK(cudnnCreate(&handle_[g]));
CUDNN_CHECK(cudnnSetStream(handle_[g], stream_[g]));
}
// Set the indexing parameters.
weight_offset_ = (this->num_output_ / this->group_)
* (this->channels_ / this->group_) * this->kernel_h_ * this->kernel_w_;
bias_offset_ = (this->num_output_ / this->group_);
// Create filter descriptor.
cudnn::createFilterDesc<Dtype>(&filter_desc_,
this->num_output_ / this->group_, this->channels_ / this->group_,
this->kernel_h_, this->kernel_w_);
// Create tensor descriptor(s) for data and corresponding convolution(s).
for (int i = 0; i < bottom.size(); i++) {
cudnnTensorDescriptor_t bottom_desc;
cudnn::createTensor4dDesc<Dtype>(&bottom_desc);
bottom_descs_.push_back(bottom_desc);
cudnnTensorDescriptor_t top_desc;
cudnn::createTensor4dDesc<Dtype>(&top_desc);
top_descs_.push_back(top_desc);
cudnnConvolutionDescriptor_t conv_desc;
cudnn::createConvolutionDesc<Dtype>(&conv_desc);
conv_descs_.push_back(conv_desc);
}
// Tensor descriptor for bias.
if (this->bias_term_) {
cudnn::createTensor4dDesc<Dtype>(&bias_desc_);
}
handles_setup_ = true;
}
开发者ID:scott89,项目名称:caffe-crowd,代码行数:48,代码来源:cudnn_conv_layer.cpp
示例8: CUDNN_CHECK
void PoolBC01CuDNN<T>::bprop(const T *imgs, const T* poolout,
const T *poolout_d, T *imgs_d) {
CUDNN_CHECK(cudnnPoolingBackward(
CUDNN::handle(), pool_desc, &CUDNN::one, poolout_desc, poolout,
poolout_desc, poolout_d, imgs_desc, imgs, &CUDNN::zero, imgs_desc, imgs_d
));
}
开发者ID:bebee,项目名称:cudarray,代码行数:7,代码来源:cudnn.cpp
示例9: setTensorNdDesc
inline void setTensorNdDesc(cudnnTensorDescriptor_t* desc,
const int_tp total_dims,
const int_tp* shape, const int_tp* stride) {
// Pad to at least 4 dimensions
int_tp cudnn_dims = std::max(total_dims, (int_tp)4);
int_tp padding = std::max((int_tp)0, cudnn_dims - total_dims);
std::vector<int> shape_int(cudnn_dims);
std::vector<int> stride_int(cudnn_dims);
for (int_tp i = cudnn_dims - 1; i >= 0; --i) {
if (i < padding) {
shape_int[i] = 1;
stride_int[i] = shape_int[i + 1] * stride_int[i + 1];
} else {
shape_int[i] = shape[i - padding];
stride_int[i] = stride[i - padding];
}
}
const int* shape_ptr = &shape_int[0];
const int* stride_ptr = &stride_int[0];
CUDNN_CHECK(
cudnnSetTensorNdDescriptor(*desc, dataType<Dtype>::type, cudnn_dims,
shape_ptr, stride_ptr));
}
开发者ID:ifp-uiuc,项目名称:caffe,代码行数:28,代码来源:cudnn.hpp
示例10: CUDNN_CHECK
void Activation::compute_gpu(const vector<bool>& add) {
DTYPE alpha = 1.;
DTYPE beta = add[0] ? 1. : 0.;
CUDNN_CHECK(cudnnActivationForward(cudnn_handle(), activation_mode_,
&alpha, bottom_desc_, inputs_[0]->gpu_data(), &beta, top_desc_,
outputs_[0]->mutable_gpu_data()));
}
开发者ID:caomw,项目名称:purine2,代码行数:7,代码来源:activation.cpp
示例11: CUDNN_CHECK
void CuDNNPoolingLayer<Dtype>::LayerSetUp(const vector<Blob<Dtype>*>& bottom,
const vector<Blob<Dtype>*>& top) {
PoolingLayer<Dtype>::LayerSetUp(bottom, top);
// stride
const int* kernel_shape_data = this->kernel_shape_.cpu_data();
// stride
const int* stride_data = this->stride_.cpu_data();
// padding
const int* pad_data = this->pad_.cpu_data();
int kernel_shape[this->num_spatial_axes_];
int stride[this->num_spatial_axes_];
int pad[this->num_spatial_axes_];
for (int i = 0; i < this->num_spatial_axes_; i++){
kernel_shape[i] = kernel_shape_data[i];
stride[i] = stride_data[i];
pad[i] = pad_data[i];
}
CUDNN_CHECK(cudnnCreate(&handle_));
cudnn::createTensorDesc<Dtype>(&bottom_desc_);
cudnn::createTensorDesc<Dtype>(&top_desc_);
cudnn::createPoolingNdDesc<Dtype>(&pooling_desc_,
this->layer_param_.pooling_param().pool(), &mode_,
this->num_spatial_axes_, kernel_shape,
pad, stride);
handles_setup_ = true;
}
开发者ID:faustomilletari,项目名称:3D-Caffe,代码行数:30,代码来源:cudnn_pooling_layer.cpp
示例12: CUDNN_CHECK
void Softmax::compute_gpu(const vector<bool>& add) {
DTYPE alpha = 1.;
DTYPE beta = add[0] ? 1. : 0.;
CUDNN_CHECK(cudnnSoftmaxForward(cudnn_handle(), CUDNN_SOFTMAX_ACCURATE,
softmax_mode_, &alpha, bottom_desc_, inputs_[0]->gpu_data(), &beta,
top_desc_, outputs_[0]->mutable_gpu_data()));
}
开发者ID:caomw,项目名称:purine2,代码行数:7,代码来源:softmax.cpp
示例13: SwitchDevice
void Context::Init(int device_id) {
device_id_ = device_id;
SwitchDevice();
#if defined(USE_CUDA)
if (blas_handle_ == nullptr) {
CUBLAS_CHECK(cublasCreate((cublasHandle_t*)&blas_handle_));
CHECK_NOTNULL(blas_handle_);
}
#endif
#if defined(USE_CUDNN)
if (cudnn_handle_ == nullptr) {
CUDNN_CHECK(cudnnCreate((cudnnHandle_t*)&cudnn_handle_));
CHECK_NOTNULL(cudnn_handle_);
}
#endif
#if defined(USE_NNPACK)
if (nnpack_handle_ == nullptr) {
CHECK_EQ(nnp_initialize(), nnp_status_success);
nnpack_handle_ = pthreadpool_create(0);
CHECK_NOTNULL(nnpack_handle_);
}
#endif
}
开发者ID:junluan,项目名称:shadow,代码行数:27,代码来源:context.cpp
示例14: CUDNN_CHECK
void CuDNNLRNLayer<Dtype>::LayerSetUp(const vector<Blob<Dtype>*>& bottom,
const vector<Blob<Dtype>*>& top) {
LRNLayer<Dtype>::LayerSetUp(bottom, top);
CUDNN_CHECK(cudnnCreate(&handle_));
CUDNN_CHECK(cudnnCreateLRNDescriptor(&norm_desc_));
cudnn::createTensor4dDesc<Dtype>(&bottom_desc_);
cudnn::createTensor4dDesc<Dtype>(&top_desc_);
// create a LRN handle
handles_setup_ = true;
size_ = this->layer_param().lrn_param().local_size();
alpha_ = this->layer_param().lrn_param().alpha();
beta_ = this->layer_param().lrn_param().beta();
k_ = this->layer_param().lrn_param().k();
}
开发者ID:bbshocking,项目名称:caffe,代码行数:17,代码来源:cudnn_lrn_layer.cpp
示例15: createPoolingDesc
inline void createPoolingDesc(cudnnPoolingDescriptor_t* conv,
PoolingParameter_PoolMethod poolmethod, cudnnPoolingMode_t* mode,
int h, int w, int stride_h, int stride_w) {
switch (poolmethod) {
case PoolingParameter_PoolMethod_MAX:
*mode = CUDNN_POOLING_MAX;
break;
case PoolingParameter_PoolMethod_AVE:
*mode = CUDNN_POOLING_AVERAGE;
break;
default:
LOG(FATAL) << "Unknown pooling method.";
}
CUDNN_CHECK(cudnnCreatePoolingDescriptor(conv));
CUDNN_CHECK(cudnnSetPoolingDescriptor(*conv, *mode, h, w,
stride_h, stride_w));
}
开发者ID:394781865,项目名称:large-image-retrive,代码行数:17,代码来源:cudnn.hpp
示例16: createPoolingDesc
inline void createPoolingDesc(cudnnPoolingDescriptor_t* pool_desc,
PoolingParameter_PoolMethod poolmethod, cudnnPoolingMode_t* mode,
int h, int w, int pad_h, int pad_w, int stride_h, int stride_w) {
switch (poolmethod) {
case PoolingParameter_PoolMethod_MAX:
*mode = CUDNN_POOLING_MAX;
break;
case PoolingParameter_PoolMethod_AVE:
*mode = CUDNN_POOLING_AVERAGE_COUNT_INCLUDE_PADDING;
break;
default:
LOG(FATAL) << "Unknown pooling method.";
}
CUDNN_CHECK(cudnnCreatePoolingDescriptor(pool_desc));
CUDNN_CHECK(cudnnSetPooling2dDescriptor(*pool_desc, *mode, h, w,
pad_h, pad_w, stride_h, stride_w));
}
开发者ID:flair2005,项目名称:Caffe-Solution,代码行数:17,代码来源:cudnn.hpp
示例17: array_strides
void PoolBC01CuDNN<T>::fprop(const T *imgs, int *imgs_shape, T *poolout) {
bool new_shape = false;
int n_imgs_dims = n_img_dims + 2;
for (int i = 0; i < n_imgs_dims; ++i) {
if (this->imgs_shape[i] != imgs_shape[i]) {
new_shape = true;
break;
}
}
if (new_shape) {
for (int i = 0; i < n_imgs_dims; ++i) {
this->imgs_shape[i] = imgs_shape[i];
}
int imgs_strides[n_imgs_dims];
array_strides(n_imgs_dims, imgs_shape, imgs_strides);
CUDNN_CHECK(cudnnSetTensorNdDescriptor(
imgs_desc, CUDNN_DATA_FLOAT, n_imgs_dims, imgs_shape, imgs_strides
));
CUDNN_CHECK(cudnnSetPoolingNdDescriptor(
pool_desc, pool_mode, n_img_dims, win_shape, padding, strides
));
int poolout_shape[n_imgs_dims];
poolout_shape[0] = imgs_shape[0];
poolout_shape[1] = imgs_shape[1];
for (int i = 0; i < n_img_dims; ++i) {
poolout_shape[i+2] = (imgs_shape[i+2] + 2*padding[i] - win_shape[i])
/ strides[i] + 1;
}
int poolout_strides[n_imgs_dims];
array_strides(n_imgs_dims, poolout_shape, poolout_strides);
CUDNN_CHECK(cudnnSetTensorNdDescriptor(
poolout_desc, CUDNN_DATA_FLOAT, n_imgs_dims, poolout_shape,
poolout_strides
));
}
CUDNN_CHECK(cudnnPoolingForward(
CUDNN::handle(), pool_desc, &CUDNN::one, imgs_desc, imgs, &CUDNN::zero,
poolout_desc, poolout
));
}
开发者ID:bebee,项目名称:cudarray,代码行数:45,代码来源:cudnn.cpp
示例18: CUDNN_CHECK
void CuDNNSoftmaxLayer<Dtype>::LayerSetUp(const vector<Blob<Dtype>*>& bottom,
const vector<Blob<Dtype>*>& top) {
SoftmaxLayer<Dtype>::LayerSetUp(bottom, top);
// Initialize CUDNN.
CUDNN_CHECK(cudnnCreate(&handle_));
cudnn::createTensor4dDesc<Dtype>(&bottom_desc_);
cudnn::createTensor4dDesc<Dtype>(&top_desc_);
handles_setup_ = true;
}
开发者ID:airxcy,项目名称:ITF_Tracker,代码行数:9,代码来源:cudnn_softmax_layer.cpp
示例19: CUDNN_CHECK
void CuDNNReLULayer<Dtype>::LayerSetUp(const vector<Blob<Dtype>*>& bottom,
const vector<Blob<Dtype>*>& top) {
ReLULayer<Dtype>::LayerSetUp(bottom, top);
// initialize cuDNN
CUDNN_CHECK(cudnnCreate(&handle_));
cudnn::createTensorNdDesc<Dtype>(&bottom_desc_);
cudnn::createTensorNdDesc<Dtype>(&top_desc_);
handles_setup_ = true;
}
开发者ID:ifp-uiuc,项目名称:caffe,代码行数:9,代码来源:cudnn_relu_layer.cpp
示例20: CUDNN_CHECK
void CuDNNTanHLayer<Dtype>::LayerSetUp(const vector<Blob<Dtype>*>& bottom,
const vector<Blob<Dtype>*>& top) {
TanHLayer<Dtype>::LayerSetUp(bottom, top);
// initialize cuDNN
CUDNN_CHECK(cudnnCreate(&handle_));
cudnn::createTensorDesc<Dtype>(&bottom_desc_);
cudnn::createTensorDesc<Dtype>(&top_desc_);
cudnn::createActivationDescriptor<Dtype>(&activ_desc_, CUDNN_ACTIVATION_TANH);
handles_setup_ = true;
}
开发者ID:ruihou,项目名称:caffe,代码行数:10,代码来源:cudnn_tanh_layer.cpp
注:本文中的CUDNN_CHECK函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论