From e4ab47dfcedb4c87e5eddf484caa4ac0c020fc9b Mon Sep 17 00:00:00 2001
From: AlexeyAB <alexeyab84@gmail.com>
Date: Wed, 21 Feb 2018 12:35:09 +0000
Subject: [PATCH] Optimized resizing of region_layer for random=1
---
src/network.c | 1 +
src/region_layer.c | 12 ++++++++----
2 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/src/network.c b/src/network.c
index e83941f..f3185a3 100644
--- a/src/network.c
+++ b/src/network.c
@@ -378,6 +378,7 @@
}
#ifdef GPU
if(gpu_index >= 0){
+ printf(" try to allocate workspace, ");
net->workspace = cuda_make_array(0, (workspace_size-1)/sizeof(float)+1);
printf(" CUDA allocate done! \n");
}else {
diff --git a/src/region_layer.c b/src/region_layer.c
index d48e8d0..e8bbd5c 100644
--- a/src/region_layer.c
+++ b/src/region_layer.c
@@ -53,6 +53,8 @@
void resize_region_layer(layer *l, int w, int h)
{
+ int old_w = l->w;
+ int old_h = l->h;
l->w = w;
l->h = h;
@@ -63,11 +65,13 @@
l->delta = realloc(l->delta, l->batch*l->outputs*sizeof(float));
#ifdef GPU
- cuda_free(l->delta_gpu);
- cuda_free(l->output_gpu);
+ if (old_w < w || old_h < h) {
+ cuda_free(l->delta_gpu);
+ cuda_free(l->output_gpu);
- l->delta_gpu = cuda_make_array(l->delta, l->batch*l->outputs);
- l->output_gpu = cuda_make_array(l->output, l->batch*l->outputs);
+ l->delta_gpu = cuda_make_array(l->delta, l->batch*l->outputs);
+ l->output_gpu = cuda_make_array(l->output, l->batch*l->outputs);
+ }
#endif
}
--
Gitblit v1.10.0