Check if theta and grid are C-contiguous, and check grid dimensions

上级 9c379ee5
...@@ -58,11 +58,7 @@ spatialtf_grid(PyGpuArrayObject * theta, ...@@ -58,11 +58,7 @@ spatialtf_grid(PyGpuArrayObject * theta,
} }
if ( NULL == *grid || if ( NULL == *grid ||
PyGpuArray_NDIM( *grid ) != 4 || ! theano_size_check( *grid, 4, &(grid_dims[0]), (*grid)->ga.typecode ) )
PyGpuArray_DIM( *grid, 0 ) != num_images ||
PyGpuArray_DIM( *grid, 1 ) != height ||
PyGpuArray_DIM( *grid, 2 ) != width ||
PyGpuArray_DIM( *grid, 3) != 2 )
{ {
Py_XDECREF( *grid ); Py_XDECREF( *grid );
...@@ -80,6 +76,20 @@ spatialtf_grid(PyGpuArrayObject * theta, ...@@ -80,6 +76,20 @@ spatialtf_grid(PyGpuArrayObject * theta,
GpuArray_memset( &( (*grid)->ga ), 0 ); GpuArray_memset( &( (*grid)->ga ), 0 );
} }
if ( ! GpuArray_IS_C_CONTIGUOUS( &(theta->ga) ) )
{
PyErr_SetString( PyExc_MemoryError,
"theta data is not C-contiguous" );
return -1;
}
if ( ! GpuArray_IS_C_CONTIGUOUS( &((*grid)->ga) ) )
{
PyErr_SetString( PyExc_MemoryError,
"grid data is not C-contiguous" );
return -1;
}
const void * theta_data = PyGpuArray_DEV_DATA( theta ); const void * theta_data = PyGpuArray_DEV_DATA( theta );
void * grid_data = PyGpuArray_DEV_DATA( *grid ); void * grid_data = PyGpuArray_DEV_DATA( *grid );
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论