AlexeyAB
2018-05-23 eef9f8e5bb9fdbe22c6301a56f12e315f9ac64d9
src/convolutional_layer.c
@@ -465,6 +465,10 @@
        l->x_norm  = realloc(l->x_norm, l->batch*l->outputs*sizeof(float));
    }
   if (l->xnor) {
      //l->binary_input = realloc(l->inputs*l->batch, sizeof(float));
   }
#ifdef GPU
   if (old_w < w || old_h < h) {
      cuda_free(l->delta_gpu);
@@ -480,6 +484,11 @@
         l->x_gpu = cuda_make_array(l->output, l->batch*l->outputs);
         l->x_norm_gpu = cuda_make_array(l->output, l->batch*l->outputs);
      }
      if (l->xnor) {
         cuda_free(l->binary_input_gpu);
         l->binary_input_gpu = cuda_make_array(0, l->inputs*l->batch);
      }
   }
#ifdef CUDNN
    cudnn_convolutional_setup(l, cudnn_fastest);
@@ -493,7 +502,7 @@
   size_t total_byte;
   check_error(cudaMemGetInfo(&free_byte, &total_byte));
   if (l->workspace_size > free_byte || l->workspace_size >= total_byte / 2) {
      printf(" used slow CUDNN algo without Workspace! Need memory: %d, available: %d\n", l->workspace_size, (free_byte < total_byte/2) ? free_byte : total_byte/2);
      printf(" used slow CUDNN algo without Workspace! Need memory: %zu, available: %zu\n", l->workspace_size, (free_byte < total_byte/2) ? free_byte : total_byte/2);
      cudnn_convolutional_setup(l, cudnn_smallest);
      l->workspace_size = get_workspace_size(*l);
   }