我得到什么似乎是一个Encog(3.X)线程/工作量错误...Encog DOTNET的3.3多线程错误
已在两台服务器上使用Encog CS 3.1,3.2和3.3 VS.NET 2015年,每个都带有双X5400系列4核/ 4线Xeon(8核/ 8线程系统),没有问题。一个有32Gb内存和另一个64Gb(虽然我实际上只看到一个繁忙的线程,但这是另一回事......)。
我最近尝试了完全相同的代码,编译(exe),并在双X7500系列8核心/ 16线程至强服务器上的VS IDE(16核心/ 32线程64Gb系统总数),我得到这个错误(与直接从GitHub上的Encog CS预编译DLL):
System.OverflowException, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089Arithmetic operation resulted in an overflow. at Encog.Util.Concurrency.DetermineWorkload..ctor(Int32 threads, Int32 workloadSize)
at Encog.Neural.Networks.Training.Propagation.Propagation.Init()
at Encog.Neural.Networks.Training.Propagation.Propagation.CalculateGradients()
at Encog.Neural.Networks.Training.Propagation.Propagation.ProcessPureBatch()
at Encog.Neural.Networks.Training.Propagation.Propagation.Iteration()
at EncogConsole.modEncog.ElmanTypeA(Boolean boolErrorVerbose, Boolean boolTestOutput) in C:\Users\Administrator\Documents\Visual Studio 2015\Projects\NormalizedConsole_v4B\EncogConsole\modEncog.vb:line 126
at EncogConsole.modEncog.Main() in C:\Users\Administrator\Documents\Visual Studio 2015\Projects\NormalizedConsole_v4B\EncogConsole\modEncog.vb:line 35
at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()System.OverflowException: Arithmetic operation resulted in an overflow.
at Encog.Util.Concurrency.DetermineWorkload..ctor(Int32 threads, Int32 workloadSize)
at Encog.Neural.Networks.Training.Propagation.Propagation.Init()
at Encog.Neural.Networks.Training.Propagation.Propagation.CalculateGradients()
at Encog.Neural.Networks.Training.Propagation.Propagation.ProcessPureBatch()
at Encog.Neural.Networks.Training.Propagation.Propagation.Iteration()
at EncogConsole.modEncog.ElmanTypeA(Boolean boolErrorVerbose, Boolean boolTestOutput) in C:\Users\Administrator\Documents\Visual Studio 2015\Projects\NormalizedConsole_v4B\EncogConsole\modEncog.vb:line 126
at EncogConsole.modEncog.Main() in C:\Users\Administrator\Documents\Visual Studio 2015\Projects\NormalizedConsole_v4B\EncogConsole\modEncog.vb:line 35
at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart() 0.31s
这里的事情是,代码是完全相同的,具有完全相同的数据集,等试过了对前两个X5400运行良好,不同的代码服务器(尽管似乎是一个单一的线程),仍然是同样的问题(在X7500服务器上)。所有的机器上运行W2K8R2用最新的补丁等
代码是用VB做,但在此之前,作为所述,工作得很好,但这种更高的线程数的服务器上。
是怎么回事?
2016-01-14
Molasar
+0
我只禁用一半通过BIOS,有效地使一个8芯/ 8线程系统和瞧芯和超线程,Encog来到生活中,这显然和正视使得这个Encog多线程的问题... –
+0
我感兴趣约ENCOG我自己,我还需要偷些时间来尝试它。根据我的经验与软件的多核开发的问题是在不可见或不显露本身由于定时或与少数核心和较小的高速缓存的处理器慢缓存竞争条件经常发现,但由于核心数量增长,竞赛状况显示出来的机会更高。 –
+0
听起来合理,尽管最慢的原始问题中提到的机器是双3GHz的×4芯(8个物理核心)@各为12Mb L2高速缓存,1333兆赫FSB和Encog运行良好。所有机器大部分时间都处于闲置状态。然而,最大的机器只有一半的内核被禁用,HT以及Encog运行良好... –