Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
P
pytensor
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
testgroup
pytensor
Commits
146bca86
提交
146bca86
authored
12月 03, 2015
作者:
abergeron
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #3726 from lamblin/gpuarray_syncok
Add proper wait/record pairs for cudnn wrapper.
上级
ea96b166
3109a772
隐藏空白字符变更
内嵌
并排
正在显示
7 个修改的文件
包含
62 行增加
和
0 行删除
+62
-0
dnn_fwd.c
theano/sandbox/gpuarray/dnn_fwd.c
+8
-0
dnn_gi.c
theano/sandbox/gpuarray/dnn_gi.c
+8
-0
dnn_gw.c
theano/sandbox/gpuarray/dnn_gw.c
+8
-0
dnn_pool.c
theano/sandbox/gpuarray/dnn_pool.c
+8
-0
dnn_pool_grad.c
theano/sandbox/gpuarray/dnn_pool_grad.c
+12
-0
dnn_softmax.c
theano/sandbox/gpuarray/dnn_softmax.c
+8
-0
dnn_softmax_grad.c
theano/sandbox/gpuarray/dnn_softmax_grad.c
+10
-0
没有找到文件。
theano/sandbox/gpuarray/dnn_fwd.c
浏览文件 @
146bca86
...
@@ -211,6 +211,10 @@ APPLY_SPECIFIC(conv_fwd)(PyGpuArrayObject *input, PyGpuArrayObject *kerns,
...
@@ -211,6 +211,10 @@ APPLY_SPECIFIC(conv_fwd)(PyGpuArrayObject *input, PyGpuArrayObject *kerns,
}
}
}
}
cuda_wait
(
input
->
ga
.
data
,
GPUARRAY_CUDA_WAIT_READ
);
cuda_wait
(
kerns
->
ga
.
data
,
GPUARRAY_CUDA_WAIT_READ
);
cuda_wait
((
*
output
)
->
ga
.
data
,
GPUARRAY_CUDA_WAIT_WRITE
);
err
=
cudnnConvolutionForward
(
err
=
cudnnConvolutionForward
(
APPLY_SPECIFIC
(
_handle
),
APPLY_SPECIFIC
(
_handle
),
alpha_p
,
alpha_p
,
...
@@ -223,6 +227,10 @@ APPLY_SPECIFIC(conv_fwd)(PyGpuArrayObject *input, PyGpuArrayObject *kerns,
...
@@ -223,6 +227,10 @@ APPLY_SPECIFIC(conv_fwd)(PyGpuArrayObject *input, PyGpuArrayObject *kerns,
if
(
worksize
!=
0
)
if
(
worksize
!=
0
)
c
->
ops
->
buffer_release
(
workspace
);
c
->
ops
->
buffer_release
(
workspace
);
cuda_record
(
input
->
ga
.
data
,
GPUARRAY_CUDA_WAIT_READ
);
cuda_record
(
kerns
->
ga
.
data
,
GPUARRAY_CUDA_WAIT_READ
);
cuda_record
((
*
output
)
->
ga
.
data
,
GPUARRAY_CUDA_WAIT_WRITE
);
}
}
cuda_exit
(
c
->
ctx
);
cuda_exit
(
c
->
ctx
);
...
...
theano/sandbox/gpuarray/dnn_gi.c
浏览文件 @
146bca86
...
@@ -177,6 +177,10 @@ APPLY_SPECIFIC(conv_gi)(PyGpuArrayObject *kerns, PyGpuArrayObject *output,
...
@@ -177,6 +177,10 @@ APPLY_SPECIFIC(conv_gi)(PyGpuArrayObject *kerns, PyGpuArrayObject *output,
}
}
}
}
cuda_wait
(
kerns
->
ga
.
data
,
GPUARRAY_CUDA_WAIT_READ
);
cuda_wait
(
output
->
ga
.
data
,
GPUARRAY_CUDA_WAIT_READ
);
cuda_wait
((
*
input
)
->
ga
.
data
,
GPUARRAY_CUDA_WAIT_WRITE
);
err
=
cudnnConvolutionBackwardData_v3
(
err
=
cudnnConvolutionBackwardData_v3
(
APPLY_SPECIFIC
(
_handle
),
APPLY_SPECIFIC
(
_handle
),
alpha_p
,
alpha_p
,
...
@@ -189,6 +193,10 @@ APPLY_SPECIFIC(conv_gi)(PyGpuArrayObject *kerns, PyGpuArrayObject *output,
...
@@ -189,6 +193,10 @@ APPLY_SPECIFIC(conv_gi)(PyGpuArrayObject *kerns, PyGpuArrayObject *output,
if
(
worksize
!=
0
)
if
(
worksize
!=
0
)
c
->
ops
->
buffer_release
(
workspace
);
c
->
ops
->
buffer_release
(
workspace
);
cuda_record
(
kerns
->
ga
.
data
,
GPUARRAY_CUDA_WAIT_READ
);
cuda_record
(
output
->
ga
.
data
,
GPUARRAY_CUDA_WAIT_READ
);
cuda_record
((
*
input
)
->
ga
.
data
,
GPUARRAY_CUDA_WAIT_WRITE
);
cuda_exit
(
c
->
ctx
);
cuda_exit
(
c
->
ctx
);
if
(
err
!=
CUDNN_STATUS_SUCCESS
)
{
if
(
err
!=
CUDNN_STATUS_SUCCESS
)
{
...
...
theano/sandbox/gpuarray/dnn_gw.c
浏览文件 @
146bca86
...
@@ -178,6 +178,10 @@ APPLY_SPECIFIC(conv_gw)(PyGpuArrayObject *input, PyGpuArrayObject *output,
...
@@ -178,6 +178,10 @@ APPLY_SPECIFIC(conv_gw)(PyGpuArrayObject *input, PyGpuArrayObject *output,
}
}
}
}
cuda_wait
(
input
->
ga
.
data
,
GPUARRAY_CUDA_WAIT_READ
);
cuda_wait
(
output
->
ga
.
data
,
GPUARRAY_CUDA_WAIT_READ
);
cuda_wait
((
*
kerns
)
->
ga
.
data
,
GPUARRAY_CUDA_WAIT_WRITE
);
err
=
cudnnConvolutionBackwardFilter_v3
(
err
=
cudnnConvolutionBackwardFilter_v3
(
APPLY_SPECIFIC
(
_handle
),
APPLY_SPECIFIC
(
_handle
),
alpha_p
,
alpha_p
,
...
@@ -190,6 +194,10 @@ APPLY_SPECIFIC(conv_gw)(PyGpuArrayObject *input, PyGpuArrayObject *output,
...
@@ -190,6 +194,10 @@ APPLY_SPECIFIC(conv_gw)(PyGpuArrayObject *input, PyGpuArrayObject *output,
if
(
worksize
!=
0
)
if
(
worksize
!=
0
)
c
->
ops
->
buffer_release
(
workspace
);
c
->
ops
->
buffer_release
(
workspace
);
cuda_record
(
input
->
ga
.
data
,
GPUARRAY_CUDA_WAIT_READ
);
cuda_record
(
output
->
ga
.
data
,
GPUARRAY_CUDA_WAIT_READ
);
cuda_record
((
*
kerns
)
->
ga
.
data
,
GPUARRAY_CUDA_WAIT_WRITE
);
cuda_exit
(
c
->
ctx
);
cuda_exit
(
c
->
ctx
);
if
(
err
!=
CUDNN_STATUS_SUCCESS
)
{
if
(
err
!=
CUDNN_STATUS_SUCCESS
)
{
...
...
theano/sandbox/gpuarray/dnn_pool.c
浏览文件 @
146bca86
...
@@ -93,12 +93,20 @@ int APPLY_SPECIFIC(dnn_pool)(PyGpuArrayObject *img,
...
@@ -93,12 +93,20 @@ int APPLY_SPECIFIC(dnn_pool)(PyGpuArrayObject *img,
}
}
cuda_enter
(
c
->
ctx
);
cuda_enter
(
c
->
ctx
);
cuda_wait
(
img
->
ga
.
data
,
GPUARRAY_CUDA_WAIT_READ
);
cuda_wait
((
*
out
)
->
ga
.
data
,
GPUARRAY_CUDA_WAIT_WRITE
);
err
=
cudnnPoolingForward
(
err
=
cudnnPoolingForward
(
APPLY_SPECIFIC
(
_handle
),
desc
,
APPLY_SPECIFIC
(
_handle
),
desc
,
alpha
,
alpha
,
APPLY_SPECIFIC
(
input
),
PyGpuArray_DEV_DATA
(
img
),
APPLY_SPECIFIC
(
input
),
PyGpuArray_DEV_DATA
(
img
),
beta
,
beta
,
APPLY_SPECIFIC
(
output
),
PyGpuArray_DEV_DATA
(
*
out
));
APPLY_SPECIFIC
(
output
),
PyGpuArray_DEV_DATA
(
*
out
));
cuda_record
(
img
->
ga
.
data
,
GPUARRAY_CUDA_WAIT_READ
);
cuda_record
((
*
out
)
->
ga
.
data
,
GPUARRAY_CUDA_WAIT_WRITE
);
cuda_exit
(
c
->
ctx
);
cuda_exit
(
c
->
ctx
);
}
}
if
(
err
!=
CUDNN_STATUS_SUCCESS
)
{
if
(
err
!=
CUDNN_STATUS_SUCCESS
)
{
...
...
theano/sandbox/gpuarray/dnn_pool_grad.c
浏览文件 @
146bca86
...
@@ -111,6 +111,12 @@ int APPLY_SPECIFIC(dnn_pool_grad)(PyGpuArrayObject *inp,
...
@@ -111,6 +111,12 @@ int APPLY_SPECIFIC(dnn_pool_grad)(PyGpuArrayObject *inp,
}
}
cuda_enter
(
c
->
ctx
);
cuda_enter
(
c
->
ctx
);
cuda_wait
(
out
->
ga
.
data
,
GPUARRAY_CUDA_WAIT_READ
);
cuda_wait
(
out_grad
->
ga
.
data
,
GPUARRAY_CUDA_WAIT_READ
);
cuda_wait
(
inp
->
ga
.
data
,
GPUARRAY_CUDA_WAIT_READ
);
cuda_wait
((
*
inp_grad
)
->
ga
.
data
,
GPUARRAY_CUDA_WAIT_WRITE
);
err
=
cudnnPoolingBackward
(
err
=
cudnnPoolingBackward
(
APPLY_SPECIFIC
(
_handle
),
desc
,
APPLY_SPECIFIC
(
_handle
),
desc
,
alpha
,
alpha
,
...
@@ -120,6 +126,12 @@ int APPLY_SPECIFIC(dnn_pool_grad)(PyGpuArrayObject *inp,
...
@@ -120,6 +126,12 @@ int APPLY_SPECIFIC(dnn_pool_grad)(PyGpuArrayObject *inp,
beta
,
beta
,
APPLY_SPECIFIC
(
input_grad
),
PyGpuArray_DEV_DATA
(
*
inp_grad
)
APPLY_SPECIFIC
(
input_grad
),
PyGpuArray_DEV_DATA
(
*
inp_grad
)
);
);
cuda_record
(
out
->
ga
.
data
,
GPUARRAY_CUDA_WAIT_READ
);
cuda_record
(
out_grad
->
ga
.
data
,
GPUARRAY_CUDA_WAIT_READ
);
cuda_record
(
inp
->
ga
.
data
,
GPUARRAY_CUDA_WAIT_READ
);
cuda_record
((
*
inp_grad
)
->
ga
.
data
,
GPUARRAY_CUDA_WAIT_WRITE
);
cuda_exit
(
c
->
ctx
);
cuda_exit
(
c
->
ctx
);
}
}
...
...
theano/sandbox/gpuarray/dnn_softmax.c
浏览文件 @
146bca86
...
@@ -72,6 +72,10 @@ int APPLY_SPECIFIC(softmax)(PyGpuArrayObject *x,
...
@@ -72,6 +72,10 @@ int APPLY_SPECIFIC(softmax)(PyGpuArrayObject *x,
}
}
cuda_enter
(
c
->
ctx
);
cuda_enter
(
c
->
ctx
);
cuda_wait
(
x
->
ga
.
data
,
GPUARRAY_CUDA_WAIT_READ
);
cuda_wait
((
*
out
)
->
ga
.
data
,
GPUARRAY_CUDA_WAIT_WRITE
);
err
=
cudnnSoftmaxForward
(
err
=
cudnnSoftmaxForward
(
APPLY_SPECIFIC
(
_handle
),
APPLY_SPECIFIC
(
_handle
),
SOFTMAX_ALGO
,
SOFTMAX_ALGO
,
...
@@ -83,6 +87,10 @@ int APPLY_SPECIFIC(softmax)(PyGpuArrayObject *x,
...
@@ -83,6 +87,10 @@ int APPLY_SPECIFIC(softmax)(PyGpuArrayObject *x,
APPLY_SPECIFIC
(
output
),
APPLY_SPECIFIC
(
output
),
PyGpuArray_DEV_DATA
(
*
out
)
PyGpuArray_DEV_DATA
(
*
out
)
);
);
cuda_record
(
x
->
ga
.
data
,
GPUARRAY_CUDA_WAIT_READ
);
cuda_record
((
*
out
)
->
ga
.
data
,
GPUARRAY_CUDA_WAIT_WRITE
);
cuda_exit
(
c
->
ctx
);
cuda_exit
(
c
->
ctx
);
}
}
...
...
theano/sandbox/gpuarray/dnn_softmax_grad.c
浏览文件 @
146bca86
...
@@ -85,6 +85,11 @@ int APPLY_SPECIFIC(softmax_grad)(PyGpuArrayObject *dy,
...
@@ -85,6 +85,11 @@ int APPLY_SPECIFIC(softmax_grad)(PyGpuArrayObject *dy,
}
}
cuda_enter
(
c
->
ctx
);
cuda_enter
(
c
->
ctx
);
cuda_wait
(
sm
->
ga
.
data
,
GPUARRAY_CUDA_WAIT_READ
);
cuda_wait
(
dy
->
ga
.
data
,
GPUARRAY_CUDA_WAIT_READ
);
cuda_wait
((
*
dx
)
->
ga
.
data
,
GPUARRAY_CUDA_WAIT_WRITE
);
err
=
cudnnSoftmaxBackward
(
err
=
cudnnSoftmaxBackward
(
APPLY_SPECIFIC
(
_handle
),
APPLY_SPECIFIC
(
_handle
),
SOFTMAX_ALGO
,
SOFTMAX_ALGO
,
...
@@ -98,6 +103,11 @@ int APPLY_SPECIFIC(softmax_grad)(PyGpuArrayObject *dy,
...
@@ -98,6 +103,11 @@ int APPLY_SPECIFIC(softmax_grad)(PyGpuArrayObject *dy,
APPLY_SPECIFIC
(
dx
),
APPLY_SPECIFIC
(
dx
),
PyGpuArray_DEV_DATA
(
*
dx
)
PyGpuArray_DEV_DATA
(
*
dx
)
);
);
cuda_record
(
sm
->
ga
.
data
,
GPUARRAY_CUDA_WAIT_READ
);
cuda_record
(
dy
->
ga
.
data
,
GPUARRAY_CUDA_WAIT_READ
);
cuda_record
((
*
dx
)
->
ga
.
data
,
GPUARRAY_CUDA_WAIT_WRITE
);
cuda_exit
(
c
->
ctx
);
cuda_exit
(
c
->
ctx
);
}
}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论