AlexeyAB
2018-06-30 1e9d1fcedf1a361bcdb384f15b5b14bdb526576d
src/convolutional_layer.c
@@ -397,7 +397,9 @@
    l.workspace_size = get_workspace_size(l);
    l.activation = activation;
    fprintf(stderr, "conv  %5d %2d x%2d /%2d  %4d x%4d x%4d   ->  %4d x%4d x%4d\n", n, size, size, stride, w, h, c, l.out_w, l.out_h, l.out_c);
    //fprintf(stderr, "conv  %5d %2d x%2d /%2d  %4d x%4d x%4d   ->  %4d x%4d x%4d\n", n, size, size, stride, w, h, c, l.out_w, l.out_h, l.out_c);
   l.bflops = (2.0 * l.n * l.size*l.size*l.c * l.out_h*l.out_w) / 1000000000.;
   fprintf(stderr, "conv  %5d %2d x%2d /%2d  %4d x%4d x%4d   ->  %4d x%4d x%4d %5.3f BF\n", n, size, size, stride, w, h, c, l.out_w, l.out_h, l.out_c, l.bflops);
    return l;
}
@@ -463,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);
@@ -478,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);
@@ -491,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! \n");
      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);
   }