1 #section init_code_struct
2 
3 {
4   cudnnStatus_t err;
5 
6   bn_input = NULL;
7   bn_params = NULL;
8   bn_output = NULL;
9 
10   if ((err = cudnnCreateTensorDescriptor(&bn_input)) != CUDNN_STATUS_SUCCESS) {
11     PyErr_Format(PyExc_MemoryError, "could not allocate tensor descriptor "
12                  "(bn_input): %s", cudnnGetErrorString(err));
13     FAIL;
14   }
15   if ((err = cudnnCreateTensorDescriptor(&bn_params)) != CUDNN_STATUS_SUCCESS) {
16     PyErr_Format(PyExc_MemoryError, "could not allocate tensor descriptor "
17                  "(bn_params): %s", cudnnGetErrorString(err));
18     FAIL;
19   }
20   if ((err = cudnnCreateTensorDescriptor(&bn_output)) != CUDNN_STATUS_SUCCESS) {
21     PyErr_Format(PyExc_MemoryError, "could not allocate tensor descriptor "
22                  "(bn_output): %s", cudnnGetErrorString(err));
23     FAIL;
24   }
25 }
26 
27 #section cleanup_code_struct
28 
29 if (bn_input != NULL)
30   cudnnDestroyTensorDescriptor(bn_input);
31 if (bn_params != NULL)
32   cudnnDestroyTensorDescriptor(bn_params);
33 if (bn_output != NULL)
34   cudnnDestroyTensorDescriptor(bn_output);
35 
36 #section support_code_struct
37 
38 cudnnTensorDescriptor_t bn_input;
39 cudnnTensorDescriptor_t bn_params;
40 cudnnTensorDescriptor_t bn_output;
41