写在前面:很早之前使用mac跑神经网络的时候就出现过这种问题,当时以为是电脑的问题,后来一直用ubantu跑网络,最近又用mac跑很简单的网络,一跑就挂。就查了一下这个问题。
运行神经网络,即使是很简单的模型的时候也会出现这个问题。
从控制台可以看到日志信息如上图。
可以看到,这次的错误似乎和线程有关系,里面提到了
,百度一下。看来的确是和处理器的一些设计方案有关系。起初以为是内存不够了,看来好像并不是这样。
OpenMP是由OpenMP Architecture Review
Board牵头提出的,并已被广泛接受,用于共享内存并行系统的多处理器程序设计的一套指导性编译处理方案(Compiler Directive)
[1] 。OpenMP支持的编程语言包括C、C++和Fortran;而支持OpenMp的编译器包括Sun Compiler,GNU
Compiler和Intel
Compiler等。OpenMp提供了对并行算法的高层的抽象描述,程序员通过在源代码中加入专用的pragma来指明自己的意图,由此编译器可以自动将程序进行并行化,并在必要之处加入同步互斥以及通信。当选择忽略这些pragma,或者编译器不支持OpenMp时,程序又可退化为通常的程序(一般为串行),代码仍然可以正常运作,只是不能利用多线程来加速程序执行