提交 a66610b4 authored 作者: ivdorelian's avatar ivdorelian

Update sandbox/cuda/dnn_base.c to work on Windows

Allocating the strides array dynamically lets it also compile on Windows. See https://groups.google.com/forum/#!topic/theano-users/fex4OpL9hB0 for code that errors on Windows without this.
上级 477fd7cf
...@@ -7,8 +7,9 @@ c_set_tensorNd(CudaNdarray *var, cudnnTensorDescriptor_t desc) { ...@@ -7,8 +7,9 @@ c_set_tensorNd(CudaNdarray *var, cudnnTensorDescriptor_t desc) {
int dim = CudaNdarray_NDIM(var); int dim = CudaNdarray_NDIM(var);
int strides[dim]; int *strides = (int *)malloc(dim * sizeof(int));
int default_str = 1; int default_str = 1;
int return_value = 0;
for (int i = dim-1; i >= 0; i--) for (int i = dim-1; i >= 0; i--)
{ {
...@@ -22,14 +23,18 @@ c_set_tensorNd(CudaNdarray *var, cudnnTensorDescriptor_t desc) { ...@@ -22,14 +23,18 @@ c_set_tensorNd(CudaNdarray *var, cudnnTensorDescriptor_t desc) {
cudnnStatus_t err = cudnnSetTensorNdDescriptor(desc, CUDNN_DATA_FLOAT, dim, cudnnStatus_t err = cudnnSetTensorNdDescriptor(desc, CUDNN_DATA_FLOAT, dim,
CudaNdarray_HOST_DIMS(var), CudaNdarray_HOST_DIMS(var),
strides); strides);
if (err != CUDNN_STATUS_SUCCESS) { if (err != CUDNN_STATUS_SUCCESS) {
PyErr_Format(PyExc_RuntimeError, PyErr_Format(PyExc_RuntimeError,
"Could not set tensorNd descriptor: %s" "Could not set tensorNd descriptor: %s"
"dim=%d", "dim=%d",
cudnnGetErrorString(err), dim); cudnnGetErrorString(err), dim);
return -1; return_value = -1;
} }
return 0;
free(strides);
return return_value;
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论