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