Pregunta ¿En qué procesador (s) se ejecutan mis simulaciones?


Actualmente estoy ejecutando 11 simulaciones numéricas (codificadas en C) en otra computadora Mac a través de mi Terminal utilizando ssh y screen (Bash) en Mac OS.

La computadora que ejecuta los 11 procesos tiene 16 procesadores. A primera vista, me parece que las simulaciones son más lentas cuando ejecuto varias de ellas al mismo tiempo que si solo se utilizara un procesador para ejecutar las 11 simulaciones. ¿Es posible? ¿Cómo puedo saber qué simulación / proceso se ejecuta en qué procesador?


0


origen


Compruebe si sus simulaciones sincronizan el acceso a un recurso compartido (ya sea a propósito o no). Si estás seguro de las simulaciones debería escala, puede ser que en algún lugar del código haya llamadas a funciones de biblioteca / sistema operativo que no se escalen bien. - misha256
No tengo mucho conocimiento en informática. ¿Qué significa "están sincronizando el acceso a un recurso compartido"? ¿Qué debo hacer para verificar eso? El código usa ampliamente la Biblioteca Científica GNU. ¡Gracias por tu ayuda! - Remi.b
Es un gran tema, sincronización. En pocas palabras, si 11 aplicaciones necesitan acceder a un solo recurso, y ese recurso no permite el acceso simultáneo, solo una de las 11 aplicaciones puede acceder al recurso a la vez. Los otros tienen que esperar. El concepto de bloquear un recurso y bloquear el uso de otras aplicaciones / subprocesos a menudo se denomina sincronización. - misha256
Hmmm, si no es un problema de sincronización, podría ser la forma en que estás lanzando tus simulaciones. Mira esto: files.nyu.edu/mg152/public/R_on_multiple_cores.html - misha256
@ misha256 Abrí solo una pantalla (después ssh) pero hice 11 "estado" para esta pantalla (usando Ctrl-a + c). ¿Podría ser en causa? ¿Debo hacerlo para abrir varias pantallas y llamar al ejecutable de forma independiente en cada pantalla? - Remi.b


Respuestas:


La respuesta corta es: ¡no puedes saber!

La respuesta un poco más larga es: el sistema operativo (cualquier sistema operativo del usuario final en realidad) programa los procesos y los asigna a las CPU. Incluso cuando se ejecuta solo la simulación, los procesos podrían interrumpirse y muy poco tiempo después continuarse en la misma u otra CPU.

Probablemente haya una respuesta incluso más larga (incluido el código para asignar procesos a CPU, pensamientos sobre lo que podría afectar la paralización y el rendimiento, etc.), pero eso está más allá del alcance de AskDifferent. Preguntando SuperUser o Desbordamiento de pila podría obtener mejores resultados para esto.


1



Definitivamente obtendrá mejores respuestas en SU ​​o SO :-) - nohillside
Ah, y si se cierra en SU, solo marque su pregunta aquí y podemos migrarla a ellos. - nohillside
Ok, gracias, señalé mi pregunta. - Remi.b
Claro que puedes saber; El bevbaior descrito apunta al hecho de que el simulator es single-threaded, lo que significa que terminaría en la misma cantidad de tiempo en un solo núcleo de 3,0 Ghz o en un procesador de 12 GHz de 12 GHz, siempre que todo lo demás fuera sangría oval - Ramhound