【问题标题】:Mac OS X: GNU parallel can't find the number of cores on a remote serverMac OS X:GNU 并行无法找到远程服务器上的内核数
【发布时间】:2014-08-09 08:23:30
【问题描述】:

我使用自制软件在我的 Mac 上安装了 GNU 并行,这样我就可以在我大学的服务器上远程运行一些测试。我正在快速运行tutorials,但是当我运行时

parallel -S <username>@$SERVER1 echo running on ::: <username>@$SERVER1

我收到了消息

parallel: Warning: Could not figure out number of cpus on <username@server> (). Using 1.

可能相关,我从来没有在我的路径中添加并行,并得到警告说“并行”不是一个可识别的命令,但并行运行无论如何仍然正确回显。这个特定的服务器有 16 个核心,我怎样才能并行识别它们?

【问题讨论】:

    标签: macos bash parallel-processing gnu gnu-parallel


    【解决方案1】:

    GNU Parallel 在 OS X 上的测试较少,因为我无法访问 OS X 安装,所以您可能发现了一个错误。

    GNU Parallel 自 20120322 以来一直使用这些来查找 CPU 的数量:

    sysctl -n hw.physicalcpu
    sysctl -a hw 2>/dev/null | grep [^a-z]physicalcpu[^a-z] | awk '{ print \$2 }'
    

    以及核心数:

    sysctl -n hw.logicalcpu
    sysctl -a hw  2>/dev/null | grep [^a-z]logicalcpu[^a-z] | awk '{ print \$2 }'
    

    你能测试一下你从中得到了什么输出吗?

    您使用的是哪个版本的 GNU Parallel?

    作为一种解决方法,您可以强制 GNU Parallel 检测 16 个内核:

    parallel -S 16/<username>@$SERVER1 echo running on ::: <username>@$SERVER1
    

    自版本 20140422 起,您已经能够将路径导出到远程服务器:

    parallel --env PATH -S 16/<username>@$SERVER1 echo running on ::: <username>@$SERVER1
    

    这样,您只需将服务器上parallel 所在的目录添加到本地计算机上的路径即可。例如。远程服务器上的parallel/home/u/user/bin/parallel

    PATH=$PATH:/home/u/user/bin parallel --env PATH -S <username>@$SERVER1 echo running on ::: <username>@$SERVER1
    

    Ole 的信息

    我的 iMac(英特尔酷睿 i7 上的 OSX MAvericks)提供以下信息,看起来都正确:

    sysctl -n hw.physicalcpu
    4
    
    
    sysctl -a hw
    hw.ncpu: 8
    hw.byteorder: 1234
    hw.memsize: 17179869184
    hw.activecpu: 8
    hw.physicalcpu: 4
    hw.physicalcpu_max: 4
    hw.logicalcpu: 8
    hw.logicalcpu_max: 8
    hw.cputype: 7
    hw.cpusubtype: 4
    hw.cpu64bit_capable: 1
    hw.cpufamily: 1418770316
    hw.cacheconfig: 8 2 2 8 0 0 0 0 0 0
    hw.cachesize: 17179869184 32768 262144 8388608 0 0 0 0 0 0
    hw.pagesize: 4096
    hw.busfrequency: 100000000
    hw.busfrequency_min: 100000000
    hw.busfrequency_max: 100000000
    hw.cpufrequency: 3400000000
    hw.cpufrequency_min: 3400000000
    hw.cpufrequency_max: 3400000000
    hw.cachelinesize: 64
    hw.l1icachesize: 32768
    hw.l1dcachesize: 32768
    hw.l2cachesize: 262144
    hw.l3cachesize: 8388608
    hw.tbfrequency: 1000000000
    hw.packages: 1
    hw.optional.floatingpoint: 1
    hw.optional.mmx: 1
    hw.optional.sse: 1
    hw.optional.sse2: 1
    hw.optional.sse3: 1
    hw.optional.supplementalsse3: 1
    hw.optional.sse4_1: 1
    hw.optional.sse4_2: 1
    hw.optional.x86_64: 1
    hw.optional.aes: 1
    hw.optional.avx1_0: 1
    hw.optional.rdrand: 0
    hw.optional.f16c: 0
    hw.optional.enfstrg: 0
    hw.optional.fma: 0
    hw.optional.avx2_0: 0
    hw.optional.bmi1: 0
    hw.optional.bmi2: 0
    hw.optional.rtm: 0
    hw.optional.hle: 0
    hw.cputhreadtype: 1
    hw.machine = x86_64
    hw.model = iMac12,2
    hw.ncpu = 8
    hw.byteorder = 1234
    hw.physmem = 2147483648
    hw.usermem = 521064448
    hw.pagesize = 4096
    hw.epoch = 0
    hw.vectorunit = 1
    hw.busfrequency = 100000000
    hw.cpufrequency = 3400000000
    hw.cachelinesize = 64
    hw.l1icachesize = 32768
    hw.l1dcachesize = 32768
    hw.l2settings = 1
    hw.l2cachesize = 262144
    hw.l3settings = 1
    hw.l3cachesize = 8388608
    hw.tbfrequency = 1000000000
    hw.memsize = 17179869184
    hw.availcpu = 8
    
    sysctl -n hw.logicalcpu
    8
    

    【讨论】:

    • @mark-setchell GNU Parallel 20140522 是否检测到您机器上正确数量的核心/CPU?如果是这样,我不确定您希望我如何处理这些附加信息。
    • 是的,确实如此。我只是想帮助你提供一些信息,说明你的方法在我的 Mac 上看起来是正确的。
    • @MarkSetchell 我仍然很困惑:您如何看待来自工作系统的信息将有助于找出非工作系统的问题?
    • 我只是想保证你的方法在小牛队仍然是正确的。别担心。
    • @ole Tange 我在这里有点困惑。远程服务器是否也需要并行安装?
    猜你喜欢
    • 1970-01-01
    • 2013-08-26
    • 1970-01-01
    • 1970-01-01
    • 2015-01-04
    • 1970-01-01
    • 2016-04-30
    • 2020-09-11
    • 1970-01-01
    相关资源
    最近更新 更多