使用带有 MinGW 的 theano 的 .seh_savexmm\r 注册无效



当我在Spyder中运行文件时,显示以下错误消息。

异常:("编译节点时发生以下错误", forall_inplace,cpu,scan_fn&scan_fn&scan_fn&scan_fn&scan_fn}(Shape_i{0}.0, Subtensor{int64:int64:int8}.0, Subtensor{int64:int64:int8}.0, Subtensor{int64:int64:int8}.0, Subtensor{int64:int64:int8}.0,

Subtensor{int64:int64:int8}.0, Subtensor{int64:int64:int8}.0, Subtensor{int64:int64:int8}.0, Subtensor{int64:int64:int8}.0, Subtensor{int64:int64:int8}.0, Subtensor{int64:int64:int8}.0, Subtensor{int64:int64:int8}.0, Subtensor{int64:int64:int8}.0, Subtensor{int64:int64:int8}.0, Subtensor{int64:int64:int8}.0, Subtensor{int64:int64:int8}.0, Subtensor{int64:int64:int8}.0, Subtensor{int64:int64: int64:int8}.0, Subtensor{int64:int64:int8}.0, Subtensor{int64:int64:int8}.0, Subtensor{int64:int64:int8}.0, IncSubtensor{InplaceSet;:int64:}.0, IncSubtensor{InplaceSet;:int64:}.0, IncSubtensor{InplaceSet;:int64:}.0, IncSubtensor{InplaceSet;:int64:}.0, IncSubtensor{InplaceSet;:int64:}.0, IncSubtensor{InplaceSet;:int64:}.0, IncSubtensor{InplaceSet;:int64:}.0, IncSubtensor{InplaceSet;:int64:}.0, IncSubtensor{InplaceSet;:int64:}.0, IncSubtensor{InplaceSet;:int64:}.0, IncSubtensor{InplaceSet;:int64:}.0, IncSubtensor{InplaceSet;:int64:}.0, IncSubtensor{InplaceSet;:int64:}.0, IncSubtensor{InplaceSet;:int64:}.0, IncSubtensor{InplaceSet;:int64:}.0, IncSubtensor{InplaceSet;:int64:}.0, IncSubtensor{InplaceSet;:int64:}.0, IncSubtensor{InplaceSet;:int64:}.0, IncSubtensor{InplaceSet;:int64:}.0, IncSubtensor{InplaceSet;:int64:}.0, IncSubtensor{InplaceSet;:int64:}.0, IncSubtensor{InplaceSet;:int64:}.0, IncSubtensor{InplaceSet;:int64:}.0, IncSubtensor{InplaceSet;:int64:}.0, IncSubtensor{InplaceSet;:int64:InplaceSet;IncSubtensor{InplaceSet;:int64:}.0, IncSubtensor{InplaceSet;:int64:InplaceSet;:int64:InplaceSet;:int64:InplaceSet;:int64:InplaceSet;:int64:InplaceSet;:int64:InplaceSet;:int64:InplaceSet;:int64:InplaceSet;:int64:InplaceSet;:int64:InplaceSet;IncSubtensor{InplaceSet;:int64:InplaceSet;:int64:InplaceSet;:int64:InplaceSet;IncSubtensor{InplaceSet;:int64:InplaceSet;:int64:InplaceSet;IncSubtensor{}.0, , , , AllocDiag.0, AllocDiag.0, AllocDiag.0, , , , AllocDiag.0, AllocDiag.0, AllocDiag.0, , , , , AllocDiag.0, AllocDiag.0, AllocDiag.0, , , , AllocDiag.0, AllocDiag.0, AllocDiag.0, , , , , AllocDiag.0, AllocDiag.0, AllocDiag.0, '', '编译节点时发生以下错误', Elemwise{Composite{((scalar_sigmoid(i0( * i1( + (scalar_sigmoid(i2( * tanh(i3(((}}(Gemm{inplace}.0, , Gemm{inplace}.0, Gemm{no_inplace}.0(, '', '编译失败(返回状态=1(: C:\Users\uos\AppData\Local\Temp\ccOVbwzm.s: 汇编器消息:\r. C:\Users\uos\AppData\Local\Temp\ccOVbwzm.s:2133: 错误: 无效的寄存器.seh_savexmm\r. ', '[Elemwise{Composite{((scalar_sigmoid(i0( * i1( + (scalar_sigmoid(i2( * tanh(i3(((}}(, , (]'(

我正在研究 Anaconda/Python 2.7/MinGW-w64/Theano 1.0.2

我认为"错误:.seh_savexmm\r的注册无效"是重要的部分。

通过一些搜索,我认为这可以通过禁用 GCC 的优化来解决。对吗?

对于类似问题,有两种可能的建议解决方案: 1( -fno-异步-展开表编译器选项 2( 通过将 -DCPU_DISPATCH= 标志传递给 CMake 来禁用调度 CPU 优化。

我不知道如何设置选项。你能帮我这个吗?

我有类似的问题,我想也许我已经解决了。 我尝试在theano中找到编译网络的代码,我发现它在/site-packges/theano/gof/cmodule.py中。 我猜 cxxflags 是将传递给 gcc 的参数,我添加

cxxflags.append('-fno-asynchronous-unwind-tables')

在第 2191 行。也许你可以试试我的方式。

最新更新