def create_filter_descriptor(arr, mode=cudnn.CUDNN_CROSS_CORRELATION): desc = Descriptor(cudnn.createFilterDescriptor(), cudnn.destroyFilterDescriptor) data_type = get_data_type(arr.dtype) if arr.ndim == 4: cudnn.setFilter4dDescriptor_v3(desc.value, data_type, *arr.shape) else: c_shape = _to_ctypes_array(arr.shape) cudnn.setFilterNdDescriptor_v3(desc.value, data_type, arr.ndim, c_shape.data) return desc
def create_filter_descriptor(arr, mode=cudnn.CUDNN_CROSS_CORRELATION): desc = Descriptor(cudnn.createFilterDescriptor(), cudnn.destroyFilterDescriptor) data_type = get_data_type(arr.dtype) if arr.ndim == 4: cudnn.setFilter4dDescriptor(desc.value, data_type, *arr.shape) else: cudnn.setFilterNdDescriptor(desc.value, data_type, arr.ndim, _to_ctypes_array(arr.shape)) return desc
def create_filter_descriptor(arr, format=cudnn.CUDNN_TENSOR_NCHW): desc = Descriptor(cudnn.createFilterDescriptor(), cudnn.destroyFilterDescriptor) data_type = get_data_type(arr.dtype) if arr.ndim == 4: cudnn.setFilter4dDescriptor_v4(desc.value, data_type, format, *arr.shape) else: c_shape = _to_ctypes_array(arr.shape) cudnn.setFilterNdDescriptor_v4(desc.value, data_type, format, arr.ndim, c_shape.data) return desc
def get_rnn_lin_layer_bias_params( handle, rnn_desc, layer, x_desc, w_desc, w, lin_layer_id): bias_desc = Descriptor(cudnn.createFilterDescriptor(), cudnn.destroyFilterDescriptor) ptr = numpy.array(0, dtype=numpy.intp) cudnn.getRNNLinLayerBiasParams( handle, rnn_desc.value, layer, x_desc.value, w_desc.value, w.data.ptr, lin_layer_id, bias_desc.value, ptr.ctypes.data) offset = (ptr - w.data.ptr) // 4 _, _, _, dim = cudnn.getFilterNdDescriptor(bias_desc.value, 3) size = internal.prod(dim) bias = w[offset: offset + size] return bias
def get_rnn_lin_layer_bias_params( handle, rnn_desc, layer, x_desc, w_desc, w, lin_layer_id): bias_desc = Descriptor(cudnn.createFilterDescriptor(), cudnn.destroyFilterDescriptor) ptr = numpy.array(0, dtype=numpy.intp) cudnn.getRNNLinLayerBiasParams( handle, rnn_desc.value, layer, x_desc.value, w_desc.value, w.data.ptr, lin_layer_id, bias_desc.value, ptr.ctypes.data) offset = (ptr - w.data.ptr) // 4 _, _, _, dim = cudnn.getFilterNdDescriptor(bias_desc.value, 3) size = numpy.prod(dim) bias = w[offset: offset + size] return bias
def get_rnn_lin_layer_matrix_params( handle, rnn_desc, layer, x_desc, w_desc, w, lin_layer_id): mat_desc = Descriptor(cudnn.createFilterDescriptor(), cudnn.destroyFilterDescriptor) ptr = numpy.array(0, dtype=numpy.intp) cudnn.getRNNLinLayerMatrixParams( handle, rnn_desc.value, layer, x_desc.value, w_desc.value, w.data.ptr, lin_layer_id, mat_desc.value, ptr.ctypes.data) offset = (ptr - w.data.ptr) // 4 _, _, _, dim = cudnn.getFilterNdDescriptor(mat_desc.value, 3) size = numpy.prod(dim) mat = w[offset: offset + size] return mat
def get_rnn_lin_layer_matrix_params( handle, rnn_desc, layer, x_desc, w_desc, w, lin_layer_id): mat_desc = Descriptor(cudnn.createFilterDescriptor(), cudnn.destroyFilterDescriptor) ptr = numpy.array(0, dtype=numpy.intp) cudnn.getRNNLinLayerMatrixParams( handle, rnn_desc.value, layer, x_desc.value, w_desc.value, w.data.ptr, lin_layer_id, mat_desc.value, ptr.ctypes.data) offset = (ptr - w.data.ptr) // 4 _, _, _, dim = cudnn.getFilterNdDescriptor(mat_desc.value, 3) size = internal.prod(dim) mat = w[offset: offset + size] return mat
def create_filter_descriptor(arr, format=cudnn.CUDNN_TENSOR_NCHW): desc = Descriptor(cudnn.createFilterDescriptor(), cudnn.destroyFilterDescriptor) data_type = get_data_type(arr.dtype) if _cudnn_version >= 4000: if arr.ndim == 4: cudnn.setFilter4dDescriptor_v4(desc.value, data_type, format, *arr.shape) else: c_shape = _to_ctypes_array(arr.shape) cudnn.setFilterNdDescriptor_v4(desc.value, data_type, format, arr.ndim, c_shape.data) else: if arr.ndim == 4: cudnn.setFilter4dDescriptor_v3(desc.value, data_type, *arr.shape) else: c_shape = _to_ctypes_array(arr.shape) cudnn.setFilterNdDescriptor_v3(desc.value, data_type, arr.ndim, c_shape.data) return desc