Un par de preguntas JSL¡Oigan todos!
Me preguntaba si alguien sabe las respuestas a lo siguiente:
- ¿existe una función JSL para determinar la cantidad de subprocesos que una máquina host puede ejecutar simultáneamente?
- ¿Es la capacidad de simulación en JMP Pro multiproceso?
Cualquier pensamiento bienvenido.
¡Gracias!
METRORe: Pareja de Preguntas JSL1) No. Pero puedes inferir una respuesta con JSL como esta:
x=j(1000,1,.);
i=0;
parallelassign({q=i++},x[r,c]=q);
show(i);
Pero eso es solo * una * respuesta, no * la * respuesta. Incluso una sola máquina CPU puede tener cientos de hilos. Y las CPU actuales generalmente tienen alguna capacidad de hipervínculos que permite un cambio de subprocesos más rápido. Pero el valor de arriba es probablemente lo que quieres. Explicación: dentro de {q = i ++}, q es una variable local en cada instancia de subproceso, y i ++ es un valor de inicialización calculado fuera de los subprocesos. No debe escribir código que dependa de este comportamiento, o el orden aparente en que se inicializan los elementos de la matriz.
2) Mire el administrador de tareas (WIN 7 hizo un mejor trabajo mostrando CPU individuales que 10). Supongo que sí.
(MFI está enlazado a E / S y usa subprocesos para leer archivos y se beneficiará de los subprocesos en una sola máquina CPU; la E / S para leer un archivo en un subproceso no impedirá que otro subproceso use la CPU para analizar datos Ya leí para otro archivo. Pero simular probablemente esté vinculado a la CPU y probablemente no tenga E / S; si está roscado, debería beneficiarse de múltiples CPU. ParallelAssign, arriba, está vinculada a la memoria; el ancho de banda a la memoria determinará la velocidad máxima a la que se pueden escribir los datos en la matriz ... más CPU solo ayudarán si el cálculo es lento en el lado derecho de x [r, c] = ... )
Re: Pareja de Preguntas JSLPreguntas interesantes, @MikeD_Anderson . ¿Puedes compartir lo que te hace preguntar?
Re: Pareja de Preguntas JSLGracias, @Craige_Hales !. Creo que funcionará. Esperaba que hubiera una función JSL para preguntar al sistema operativo host cuántos núcleos hay en el procesador. Acabo de probar su fragmento y me dio la misma respuesta (mi procesador i9 tiene 6 núcleos con 2 hilos por núcleo = 12 hilos).
@Jeff_Perkinson - Estoy tratando de alcanzar un tiempo total de ejecución para hacer una simulación, es decir, Si mi modelo tarda 2 segundos en ejecutarse, luego se realizan 2500 simulaciones (predeterminado), repartidas en 6 núcleos a 2 hilos por núcleo (suponiendo que la simulación es multiproceso), la simulación debería tomar 417 segundos (6 minutos). Quiero poner un mensaje de advertencia en un complemento en el que estoy trabajando para brindar al usuario un resumen de cuánto tiempo debe durar la simulación. No son las matemáticas perfectas, pero al menos me dejarán decir: "Oye, esta simulación va a tardar 1 hora en ejecutarse, ¿estás seguro de que quieres ejecutarla?" Puedo obtener el tiempo de procesamiento para una iteración del modelo, sin sudor, pero descifrar la cantidad de subprocesos fue algo en lo que me quedé perplejo.
mejor,
METRO
Re: Pareja de Preguntas JSLDuplicar el número de CPU nunca duplica la velocidad de cualquier aplicación real que esté vinculada a la CPU y la memoria ... el caso habitual. El ancho de banda de la memoria siempre se convierte en un problema. Podría asumir 2 o 4 CPU y aún así tener una buena suposición, dado todo lo demás que no se puede controlar. Nadie se quejará si termina temprano.