¿Por qué opencv no usa todos los núcleos después de actualizar a Mavericks?

3

Estoy ejecutando un comando intensivo de CPU en Mavericks (Opencv_traincasscade). Sin embargo, en Mountain Lion, el proceso solía usar los 8 núcleos hasta el final. Sin embargo, después de actualizarlo, se reduce a 1 núcleo después de un breve periodo de tiempo.

¿Podría ser esta siesta de la aplicación? ¿Hay algo que pueda hacer para solucionar esto?

    
pregunta Robert 26.05.2014 - 08:49

2 respuestas

7

Ser capaz de usar múltiples núcleos o hilos depende del proceso. Esto no es AppNap ni OS X causando el cambio.

Su proceso, opencv_traincascade , puede estar limitado por el recurso después de unos momentos y, por lo tanto, se reduce a la puesta en cola de las tareas mientras espera el acceso al disco u otro recurso limitado.

En este caso, es posible que deba cambiar a una compilación diferente de OpenCV:

  

Tenga en cuenta que la aplicación opencv_traincascade puede usar TBB para subprocesos múltiples. Para usarlo en modo multinúcleo, OpenCV debe construirse con TBB.

Instalando OpenCV con TBB a través de brew :

brew install opencv --with-tbb
    
respondido por el Graham Miln 26.05.2014 - 09:13
1

Graham Miln estaba en lo correcto, la instalación de OpenCV fue incorrecta.

Para verificar esto :

otool -L /usr/local/lib/libopencv_core.2.4.9.dylib
# Look for libtbb.dylib in the response,
# if missing you need to reinstall with tbb.

Para solucionar esto (suponiendo que lo hayas instalado con homebrew):

brew uninstall opencv
brew info opencv # This will tell you about other flags you might be interested in.
brew install opencv --with-tbb  # Simples! :)
    
respondido por el Robert 26.05.2014 - 18:57

Lea otras preguntas en las etiquetas