Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
OpenDAS
dlib
Commits
7ae43ae2
Commit
7ae43ae2
authored
Dec 12, 2015
by
Davis King
Browse files
Fixed some resource leaks. Also fixed max_pool so it does exactly what the
spec says it should.
parent
cbd57be6
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
42 additions
and
18 deletions
+42
-18
dlib/dnn/cudnn_dlibapi.cpp
dlib/dnn/cudnn_dlibapi.cpp
+40
-18
dlib/dnn/cudnn_dlibapi.h
dlib/dnn/cudnn_dlibapi.h
+2
-0
No files found.
dlib/dnn/cudnn_dlibapi.cpp
View file @
7ae43ae2
...
...
@@ -480,6 +480,7 @@ namespace dlib
catch
(...)
{
clear
();
throw
;
}
}
...
...
@@ -581,7 +582,7 @@ namespace dlib
// ------------------------------------------------------------------------------------
max_pool
::
max_pool
(
)
:
handle
(
nullptr
),
stride_y
(
0
),
stride_x
(
0
)
)
:
handle
(
nullptr
),
window_height
(
0
),
window_width
(
0
),
stride_y
(
0
),
stride_x
(
0
)
{
}
...
...
@@ -598,31 +599,52 @@ namespace dlib
if
(
handle
)
cudnnDestroyPoolingDescriptor
((
cudnnPoolingDescriptor_t
)
handle
);
handle
=
nullptr
;
window_height
=
0
;
window_width
=
0
;
stride_y
=
0
;
stride_x
=
0
;
}
void
max_pool
::
setup
(
int
window_height
,
int
window_width
,
int
window_height
_
,
int
window_width
_
,
int
stride_y_
,
int
stride_x_
)
{
stride_x
=
stride_x_
;
stride_y
=
stride_y_
;
cudnnPoolingDescriptor_t
poolingDesc
;
CHECK_CUDNN
(
cudnnCreatePoolingDescriptor
(
&
poolingDesc
));
handle
=
poolingDesc
;
if
(
window_height
==
window_height_
&&
window_width
==
window_width_
&&
stride_y
==
stride_y_
&&
stride_x
==
stride_x_
)
{
return
;
}
CHECK_CUDNN
(
cudnnSetPooling2dDescriptor
(
poolingDesc
,
CUDNN_POOLING_MAX
,
window_height
,
window_width
,
0
,
0
,
// no padding
stride_y
,
stride_x
));
clear
();
try
{
window_height
=
window_height_
;
window_width
=
window_width_
;
stride_x
=
stride_x_
;
stride_y
=
stride_y_
;
cudnnPoolingDescriptor_t
poolingDesc
;
CHECK_CUDNN
(
cudnnCreatePoolingDescriptor
(
&
poolingDesc
));
handle
=
poolingDesc
;
CHECK_CUDNN
(
cudnnSetPooling2dDescriptor
(
poolingDesc
,
CUDNN_POOLING_MAX
,
window_height
,
window_width
,
0
,
0
,
// no padding
stride_y
,
stride_x
));
}
catch
(...)
{
clear
();
throw
;
}
}
void
max_pool
::
...
...
@@ -649,8 +671,8 @@ namespace dlib
DLIB_CASSERT
(
dest
.
num_samples
()
==
src
.
num_samples
(),
""
);
DLIB_CASSERT
(
dest
.
k
()
==
src
.
k
(),
""
);
DLIB_CASSERT
(
dest
.
nr
()
==
src
.
nr
()
/
stride_y
,
""
);
DLIB_CASSERT
(
dest
.
nc
()
==
src
.
nc
()
/
stride_x
,
""
);
DLIB_CASSERT
(
dest
.
nr
()
==
src
.
nr
()
/
stride_y
,
stride_y
<<
", "
<<
dest
.
nr
()
<<
" "
<<
src
.
nr
()
/
stride_y
);
DLIB_CASSERT
(
dest
.
nc
()
==
src
.
nc
()
/
stride_x
,
stride_x
<<
", "
<<
dest
.
nc
()
<<
" "
<<
src
.
nc
()
/
stride_x
);
CHECK_CUDNN
(
cudnnPoolingForward
(
context
(),
(
const
cudnnPoolingDescriptor_t
)
handle
,
...
...
@@ -673,7 +695,7 @@ namespace dlib
DLIB_CASSERT
(
have_same_dimensions
(
src
,
grad
),
""
);
const
float
alpha
=
1
;
const
float
beta
=
0
;
const
float
beta
=
1
;
CHECK_CUDNN
(
cudnnPoolingBackward
(
context
(),
(
const
cudnnPoolingDescriptor_t
)
handle
,
&
alpha
,
...
...
dlib/dnn/cudnn_dlibapi.h
View file @
7ae43ae2
...
...
@@ -328,6 +328,8 @@ namespace dlib
private:
void
*
handle
;
int
window_height
;
int
window_width
;
int
stride_y
;
int
stride_x
;
};
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment