nn.DataParallelTable 对自定义层失效

多gpu模型初始化代码:

local dpt = nn.DataParallelTable(1, true, true)
         :add(model, gpus)
         :threads(function()
            local cudnn = require 'cudnn'
            cudnn.fastest, cudnn.benchmark = fastest, benchmark
         end)
dpt.gradInput = nil

model = dpt:cuda()

在处理model:parameters()或者model:getParameters()时会出现错误:

FATAL THREAD PANIC: (read) /home/daniel/torch/install/share/lua/5.2/torch/File.lua:343: unknown Torch class <nn.Reorg>
FATAL THREAD PANIC: (read) /home/daniel/torch/install/share/lua/5.2/torch/File.lua:343: unknown Torch class <nn.Reorg>

<nn.Reorg>是我在models/Reorg.lua中定义的自定义层,只是对层输入进行简单的复制操作。

在CPU和单GPU情况下都可以正常工作。

点赞
用户4758972
用户4758972

我终于解决了,只需要添加一行代码:

:threads(function()
            require 'models/Reorg'
            local cudnn = require 'cudnn'
            cudnn.fastest, cudnn.benchmark = fastest, benchmark
         end)

线程没有加载该文件(为什么???),我不得不手动加载...

2017-07-15 17:53:36