parallel-processing - tiene - ver caracteristicas cpu linux
Obtenga la cantidad de nĂșcleos de CPU en Julia (4)
No estoy 100% seguro de esto, pero CPU_CORES
devuelve la cantidad de núcleos (hiperhilo) en mi máquina (OSX 10.9.5 y Julia 0.3.5), incluso cuando inicio Julia en modo serie. He estado comprobando la cantidad de núcleos disponibles usando nworkers()
y nprocs()
. Iniciando Julia sin el indicador -p
esto devuelve 1 para ambos.
Cuando empiezo julia como julia -p 4
julia> nprocs()
5
julia> nworkers()
4
En ambos casos, CPU_CORES
devuelve 8.
Quiero obtener la cantidad de núcleos disponibles en Julia. Actualmente estoy haciendo lo siguiente:
using PyCall
@pyimport psutil
nCores = psutil.cpu_count()
Esto llama una función de Python. Me gustaría, sin embargo, usar algún procedimiento de Julia. ¿Cómo puede hacerse esto?
No conozco a Julia, pero "psutil.cpu_count (logical = False)" en Python te da la cantidad de CPUs físicas (las de hipervínculo no se cuentan).
La respuesta de JoshAdel es correcta: Base.CPU_CORES
mantiene la cantidad de núcleos disponibles, incluidos los virtuales.
Estoy agregando esta respuesta para notar una alternativa: usar el paquete Hwloc . De la descripción del proyecto,
Este paquete de Julia envuelve la biblioteca hwloc.
El paquete de software Portable Hardware Locality (hwloc) proporciona una abstracción portátil (a través de SO, versiones, arquitecturas, ...) de la topología jerárquica de las arquitecturas modernas, incluidos los nodos de memoria NUMA, sockets, cachés compartidos, núcleos y multithreading simultáneo. También reúne diversos atributos del sistema, como la memoria caché y la información de memoria, así como la ubicación de los dispositivos de E / S, como las interfaces de red, InfiniBand HCA o GPU. Su principal objetivo es ayudar a las aplicaciones a recopilar información sobre hardware informático moderno a fin de explotarlo de manera adecuada y eficiente.
También desde la página del proyecto, la forma de obtener la cantidad de núcleos físicos y {núcleos físicos, virtuales} (es decir, unidades de procesamiento) es la siguiente:
import Hwloc
topology = Hwloc.topology_load()
counts = Hwloc.histmap(topology)
ncores = counts[:Core]
npus = counts[:PU]
println("This machine has $ncores cores and $npus PUs (processing units)")
El beneficio de usar este paquete radica en su capacidad portátil para distinguir entre núcleos físicos y virtuales, algo que actualmente no está disponible en Julia. Sin embargo, hay una petición para incluir esta habilidad en la base del lenguaje.
En versiones recientes de Julia, puede usar Sys.CPU_CORES
(y no Base.CPU_CORES
como se mencionan algunas respuestas). Probado en 0.6.