Closed Imorton-zd closed 8 years ago
I have used git+git to update the newest theano and keras. Please give me some suggestions. Thanks a lot.
When did you update Theano? It was broken on Windows up until 2 days ago.
@NasenSpray Today. Can I change the Theano for an old version?
Oh wait, it's probably something different. Are the other examples working (e.g. MNIST CNN)? And when did you update Keras the last time before today?
@nouiz: that's something for you, a code-gen bug on Windows
mod.cu(9701) : fatal error C1061: compiler limit : blocks nested too deeply
Exception: ('The following error happened while compiling the node', GpuJoin(Ten sorConstant{1}, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuA lloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc .0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuA lloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc .0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuA lloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc .0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuA lloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc .0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuA lloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc .0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuA lloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc .0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuA lloc.0, GpuAlloc.0, GpuAlloc.0)
Whatever monstrosity Theano is trying to compile, it exceeds MSVC's capabilities. I already observed this problem a while ago and it seems to be caused by some weird shape-dependent interaction involving scan&dot (e.g.in imdb_lstm.py, it only happens when the LSTM has 120 nodes or more)
@Imorton-zd
You can revert Keras to 06a1545645d974350d13425246eec53a08cb6ab8, the RNN implementations in there don't trigger the bug.
Can you some give me the code that reproduce this?
This is caused by GpuJoin. We unroll a loop in C, on the number of inputs of the node. It seem you hit a case where there is too many inputs for MSVC. I can easily change that to a for loop in C with some working example.
Fred
On Wed, Mar 23, 2016 at 7:04 AM, NasenSpray notifications@github.com wrote:
@nouiz https://github.com/nouiz: that's something for you, a code-gen bug on Windows
mod.cu(9701) : fatal error C1061: compiler limit : blocks nested too deeply
Exception: ('The following error happened while compiling the node', GpuJoin(Ten sorConstant{1}, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuA lloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc .0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuA lloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc .0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuA lloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc .0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuA lloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc .0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuA lloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc .0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuA lloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc .0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuAlloc.0, GpuA lloc.0, GpuAlloc.0, GpuAlloc.0)
Whatever monstrosity Theano is trying to compile, it exceeds MSVC's capabilities. I already observed this problem a while ago and it seems to be caused by some weird shape-dependent interaction involving scan&dot ( e.g.in imdb_lstm.py https://github.com/fchollet/keras/blob/master/examples/imdb_lstm.py#L50, it only happens when the LSTM has 120 nodes or more)
@Imorton-zd https://github.com/Imorton-zd
You can revert Keras to 06a1545 https://github.com/fchollet/keras/commit/06a1545645d974350d13425246eec53a08cb6ab8, the RNN implementations in there don't trigger the bug.
— You are receiving this because you were mentioned. Reply to this email directly or view it on GitHub https://github.com/fchollet/keras/issues/2046#issuecomment-200297795
@nouiz: imdb_lstm.py, or do you need one without Keras?
@nouiz: I made a fix, relevant stuff here. Please take a look, I've used some C++11 stuff and wanted to ask whether that's ok before I submit a PR.
thanks for working on this.
I don't like adding as a dependency a new version of C++, as I'm pretty sure there is still people that use OS that don't have it. So they won't be able to update Theano without updating there OS. Which isn't great. Don't forget, C++11 is when the standard was accepted. It takes some times to be implemented by compiler and then only after, it get added to new version of OS.
If someone find when Windows, Mac, Ubuntu and CentOS started to have it available, we can then start to talk if we can do it now. Without that information, we risk too much to prevent some user to update. But sure, it make the code much more readable and less error prone. It would be great that we can do it.
Don't hesitate to make a PR, it make it easier to talk about code.
On Wed, Mar 23, 2016 at 2:25 PM, NasenSpray notifications@github.com wrote:
@nouiz https://github.com/nouiz: I made a fix, relevant stuff here https://gist.github.com/NasenSpray/357f7767e457935bbef9. Please take a look, I've used some C++11 stuff and wanted to ask whether that's ok before I submit a PR.
— You are receiving this because you were mentioned. Reply to this email directly or view it on GitHub https://github.com/fchollet/keras/issues/2046#issuecomment-200480789
C++11 is supported on basically every platform since ~3 years. GCC actually defaults to C++14 nowadays :D
Don't hesitate to make a PR, it make it easier to talk about code.
oke, I'm on it
What happened?