获取Julia中的CPU核心数

时间:2015-01-13 20:35:01

标签: parallel-processing julia cpu-cores

我想获得Julia中可用的核心数量。目前我正在做以下事情:

using PyCall
@pyimport psutil
nCores = psutil.cpu_count()

这会调用Python函数。但是,我想使用一些Julia程序。怎么办呢?

7 个答案:

答案 0 :(得分:6)

我不是100%肯定这一点,但CPU_CORES返回我机器上的(超线程)核心数(OSX 10.9.5和Julia 0.3.5),即使我开始朱莉娅处于串行模式。我使用nworkers()nprocs()检查了可用内核的数量。在没有-p标志的情况下启动Julia,这两者都返回1。

当我以julia -p 4

开始julia时
julia> nprocs()
5

julia> nworkers()
4

在这两种情况下,CPU_CORES都会返回8.

答案 1 :(得分:4)

Sys.CPU_CORES在Julia v1.1.0中未定义。但是,下面的工作可以完成。

length(Sys.cpu_info())

答案 2 :(得分:3)

在Julia的最新版本中,您可以使用Sys.CPU_CORES(而不是Base.CPU_CORES作为提及的答案)。测试0.6。

答案 3 :(得分:1)

我不认识Julia但是" psutil.cpu_count(logical = False)"在Python中为您提供物理CPU的数量(不计算超线程的CPU)。

答案 4 :(得分:1)

Sys.CPU_CORES在Julia 1.0.0中未定义(至少在Macbook上运行-我认为这不会有所作为)。而是使用Sys.CPU_THREADS

答案 5 :(得分:0)

根据documentation,“可用内核数”可以受JULIA_NUM_THREADS环境变量的限制。

要查看Julia可用的线程数,请使用

Threads.nthreads()

答案 6 :(得分:-1)

JoshAdel的答案是正确的:Base.CPU_CORES保留可用内核的数量,包括虚拟内核。

我正在添加此答案以注意另一种选择:使用Hwloc包。从项目的描述,

  

这个Julia软件包包装了hwloc库。

     

Portable Hardware Locality(hwloc)软件包提供了一个   可移植的抽象(跨OS,版本,体系结构......)   现代架构的分层拓扑,包括NUMA存储器   节点,套接字,共享缓存,内核和同步多线程。   它还收集各种系统属性,如缓存和内存   信息以及I / O设备(如网络)的位置   接口,InfiniBand HCA或GPU。它主要旨在帮助   收集有关现代计算信息的应用程序   硬件,以便相应和有效地利用它。

同样从项目页面,获取物理核心数和{物理,虚拟}核心(即处理单元)的方式如下:

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)")

使用此软件包的好处在于它具有区分物理和虚拟核心的便携能力,这在Julia目前是不可用的。但是,有petition在语言库中包含此功能。

相关问题