提交 68dac70d authored 作者: affanv14's avatar affanv14

add more checks

上级 ed1d3222
...@@ -417,6 +417,11 @@ PyGpuArrayObject* corrMM(PyGpuArrayObject *const bottom, ...@@ -417,6 +417,11 @@ PyGpuArrayObject* corrMM(PyGpuArrayObject *const bottom,
"GpuCorrMM images and kernel must have the same stack size\n"); "GpuCorrMM images and kernel must have the same stack size\n");
return NULL; return NULL;
} }
if ((nFilters % numgroups) != 0) {
PyErr_SetString(PyExc_ValueError,
"GPUCorrMM the number of filters must be divisible by the number of groups\n");
return NULL;
}
// implicit dilated filter // implicit dilated filter
const size_t dil_kH = (kH - 1) * dilH + 1; const size_t dil_kH = (kH - 1) * dilH + 1;
const size_t dil_kW = (kW - 1) * dilW + 1; const size_t dil_kW = (kW - 1) * dilW + 1;
......
...@@ -34,6 +34,11 @@ APPLY_SPECIFIC(conv_fwd)(PyGpuArrayObject *input, PyGpuArrayObject *kerns, ...@@ -34,6 +34,11 @@ APPLY_SPECIFIC(conv_fwd)(PyGpuArrayObject *input, PyGpuArrayObject *kerns,
"images and kernel must have the same stack size"); "images and kernel must have the same stack size");
return 1; return 1;
} }
if ((PyGpuArray_DIMS(kerns)[0] % params->num_groups) != 0) {
PyErr_SetString(PyExc_ValueError,
"Number of filters must be divisible by number of groups");
return 1;
}
switch (input->ga.typecode) { switch (input->ga.typecode) {
case GA_DOUBLE: case GA_DOUBLE:
......
...@@ -33,6 +33,11 @@ APPLY_SPECIFIC(conv_gi)(PyGpuArrayObject *kerns, PyGpuArrayObject *output, ...@@ -33,6 +33,11 @@ APPLY_SPECIFIC(conv_gi)(PyGpuArrayObject *kerns, PyGpuArrayObject *output,
"stack size"); "stack size");
return 1; return 1;
} }
if ((PyGpuArray_DIMS(kerns)[0] % params->num_groups) != 0) {
PyErr_SetString(PyExc_ValueError,
"Number of filters must be divisible by number of groups");
return 1;
}
switch (im->ga.typecode) { switch (im->ga.typecode) {
case GA_DOUBLE: case GA_DOUBLE:
......
...@@ -33,6 +33,11 @@ APPLY_SPECIFIC(conv_gw)(PyGpuArrayObject *input, PyGpuArrayObject *output, ...@@ -33,6 +33,11 @@ APPLY_SPECIFIC(conv_gw)(PyGpuArrayObject *input, PyGpuArrayObject *output,
"GpuDnnConv images and kernel must have the same stack size"); "GpuDnnConv images and kernel must have the same stack size");
return 1; return 1;
} }
if ((PyGpuArray_DIMS(output)[1] % params->num_groups) != 0) {
PyErr_SetString(PyExc_ValueError,
"Number of output channels must be divisible by number of groups");
return 1;
}
switch (input->ga.typecode) { switch (input->ga.typecode) {
case GA_DOUBLE: case GA_DOUBLE:
......
...@@ -161,6 +161,11 @@ PyArrayObject* corrMM(PyArrayObject* bottom, ...@@ -161,6 +161,11 @@ PyArrayObject* corrMM(PyArrayObject* bottom,
"CorrMM images and kernel must have the same stack size\n"); "CorrMM images and kernel must have the same stack size\n");
return NULL; return NULL;
} }
if ((nFilters %% numgroups) != 0) {
PyErr_SetString(PyExc_ValueError,
"CorrMM the number of filters must be divisible by the number of groups\n");
return NULL;
}
// implicit dilated filter // implicit dilated filter
const int dil_kH = (kH - 1) * dilH + 1; const int dil_kH = (kH - 1) * dilH + 1;
const int dil_kW = (kW - 1) * dilW + 1; const int dil_kW = (kW - 1) * dilW + 1;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论