mirror of
https://git.savannah.gnu.org/git/parallel.git
synced 2024-11-22 05:57:54 +00:00
parallel: GNU/Linux cpu detection by reading CPU topology.
This commit is contained in:
parent
31031e521d
commit
3fc2bf228f
|
@ -1,5 +1,9 @@
|
||||||
Quote of the month:
|
Quote of the month:
|
||||||
|
|
||||||
|
My favorite man page is that of GNU parallel.
|
||||||
|
-- Jeroen Janssens @jeroenhjanssens@twitter
|
||||||
|
|
||||||
|
|
||||||
It's not a data migration party until GNU Parallel is involved...
|
It's not a data migration party until GNU Parallel is involved...
|
||||||
involved
|
involved
|
||||||
involved
|
involved
|
||||||
|
|
|
@ -186,11 +186,13 @@ https://lists.gnu.org/mailman/admindb/parallel
|
||||||
|
|
||||||
file:///home/tange/privat/parallel/doc/release_new_version
|
file:///home/tange/privat/parallel/doc/release_new_version
|
||||||
|
|
||||||
|
For codename look at https://www.onthisday.com/
|
||||||
|
|
||||||
from:tange@gnu.org
|
from:tange@gnu.org
|
||||||
to:parallel@gnu.org, bug-parallel@gnu.org
|
to:parallel@gnu.org, bug-parallel@gnu.org
|
||||||
stable-bcc: Jesse Alama <jessealama@fastmail.fm>
|
stable-bcc: Jesse Alama <jessealama@fastmail.fm>
|
||||||
|
|
||||||
Subject: GNU Parallel 20200922 ('Belarus/Lukashenko') released <<[stable]>>
|
Subject: GNU Parallel 20200922 ('Ginsburg/Kenosha/Belarus/Lukashenko/California/Malmö') released <<[stable]>>
|
||||||
|
|
||||||
GNU Parallel 20200922 ('') <<[stable]>> has been released. It is available for download at: http://ftpmirror.gnu.org/parallel/
|
GNU Parallel 20200922 ('') <<[stable]>> has been released. It is available for download at: http://ftpmirror.gnu.org/parallel/
|
||||||
|
|
||||||
|
|
|
@ -31,12 +31,12 @@ usage is either:
|
||||||
env_parallel --session
|
env_parallel --session
|
||||||
|
|
||||||
# Define whatever you want to use
|
# Define whatever you want to use
|
||||||
alias myalias=echo
|
myfunc() { myalias and functions $myvar work. $1.; }
|
||||||
myvar=it
|
alias myalias='echo Aliases'
|
||||||
myfunc() { myalias $1 $myvar works.; }
|
myvar='and variables'
|
||||||
|
|
||||||
# env_parallel will not export names in $PARALLEL_IGNORED_NAMES
|
# env_parallel will not export names in $PARALLEL_IGNORED_NAMES
|
||||||
env_parallel -S localhost myfunc ::: Yay,
|
env_parallel -S localhost myfunc ::: Hooray
|
||||||
|
|
||||||
Or:
|
Or:
|
||||||
|
|
||||||
|
@ -46,26 +46,26 @@ Or:
|
||||||
# Optionally edit ~/.parallel/ignored_vars (only needed once)
|
# Optionally edit ~/.parallel/ignored_vars (only needed once)
|
||||||
|
|
||||||
# Define whatever you want to use
|
# Define whatever you want to use
|
||||||
alias myalias=echo
|
myfunc() { myalias and functions $myvar work. $1.; }
|
||||||
myvar=it
|
alias myalias='echo Aliases'
|
||||||
myfunc() { myalias $1 $myvar works.; }
|
myvar='and variables'
|
||||||
|
|
||||||
# Use --env _ to only transfer the names not in the "empty" environment
|
# Use --env _ to only transfer the names not in the "empty" environment
|
||||||
env_parallel --env _ -S localhost myfunc ::: Yay,
|
env_parallel --env _ -S localhost myfunc ::: Hooray
|
||||||
|
|
||||||
In B<csh> B<--session> is not supported:
|
In B<csh> B<--session> is not supported:
|
||||||
|
|
||||||
# Record the "clean" environment (this only needs to be run once)
|
# Record the "clean" environment - this only needs to be run once
|
||||||
env_parallel --record-env
|
env_parallel --record-env
|
||||||
|
|
||||||
# Optionally edit ~/.parallel/ignored_vars (only needed once)
|
# Optionally edit ~/.parallel/ignored_vars - only needed once
|
||||||
|
|
||||||
# Define whatever you want to use
|
# Define whatever you want to use
|
||||||
alias myalias 'echo \!* $myvar works.'
|
alias myalias 'echo Aliases $myvar \!*.'
|
||||||
set myvar=it
|
set myvar='and variables'
|
||||||
|
|
||||||
# Use --env _ to only transfer the names not in the "empty" environment
|
# Use --env _ to only transfer the names not in the "empty" environment
|
||||||
env_parallel --env _ -S localhost myalias ::: Yay,
|
env_parallel --env _ -S localhost myalias ::: work
|
||||||
|
|
||||||
=head2 Environment space
|
=head2 Environment space
|
||||||
|
|
||||||
|
@ -793,8 +793,8 @@ Same as GNU B<parallel>.
|
||||||
|
|
||||||
When using GNU B<env_parallel> for a publication please cite:
|
When using GNU B<env_parallel> for a publication please cite:
|
||||||
|
|
||||||
O. Tange (2011): GNU Parallel - The Command-Line Power Tool, ;login:
|
O. Tange (2018): GNU Parallel 2018, March 2018, ISBN 9781387509881,
|
||||||
The USENIX Magazine, February 2011:42-47.
|
DOI: 10.5281/zenodo.1146014.
|
||||||
|
|
||||||
This helps funding further development; and it won't cost you a cent.
|
This helps funding further development; and it won't cost you a cent.
|
||||||
If you pay 10000 EUR you should feel free to use GNU Parallel without citing.
|
If you pay 10000 EUR you should feel free to use GNU Parallel without citing.
|
||||||
|
|
34
src/parallel
34
src/parallel
|
@ -7387,14 +7387,48 @@ sub sct_gnu_linux($) {
|
||||||
# 'threads' => #threads
|
# 'threads' => #threads
|
||||||
# 'active' => #taskset_threads }
|
# 'active' => #taskset_threads }
|
||||||
my $cpu = shift;
|
my $cpu = shift;
|
||||||
|
|
||||||
|
sub read_topology($) {
|
||||||
|
my $prefix = shift;
|
||||||
|
my %sibiling;
|
||||||
|
my %socket;
|
||||||
|
my $thread;
|
||||||
|
for($thread = 0;
|
||||||
|
-r "$prefix/cpu$thread/topology/physical_package_id";
|
||||||
|
$thread++) {
|
||||||
|
open(my $fh,"<",
|
||||||
|
"$prefix/cpu$thread/topology/physical_package_id")
|
||||||
|
|| die;
|
||||||
|
$socket{<$fh>}++;
|
||||||
|
close $fh;
|
||||||
|
}
|
||||||
|
for($thread = 0;
|
||||||
|
-r "$prefix/cpu$thread/topology/thread_siblings";
|
||||||
|
$thread++) {
|
||||||
|
open(my $fh,"<",
|
||||||
|
"$prefix/cpu$thread/topology/thread_siblings")
|
||||||
|
|| die;
|
||||||
|
$sibiling{<$fh>}++;
|
||||||
|
close $fh;
|
||||||
|
}
|
||||||
|
$cpu->{'sockets'} = keys %socket;
|
||||||
|
$cpu->{'cores'} = keys %sibiling;
|
||||||
|
$cpu->{'threads'} = $thread;
|
||||||
|
}
|
||||||
|
|
||||||
local $/ = "\n"; # If delimiter is set, then $/ will be wrong
|
local $/ = "\n"; # If delimiter is set, then $/ will be wrong
|
||||||
my @cpuinfo;
|
my @cpuinfo;
|
||||||
if($ENV{'PARALLEL_CPUINFO'}) {
|
if($ENV{'PARALLEL_CPUINFO'}) {
|
||||||
# Use CPUINFO from environment - used for testing only
|
# Use CPUINFO from environment - used for testing only
|
||||||
@cpuinfo = split/(?<=\n)/,$ENV{'PARALLEL_CPUINFO'};
|
@cpuinfo = split/(?<=\n)/,$ENV{'PARALLEL_CPUINFO'};
|
||||||
|
} elsif(-r "$ENV{'PARALLEL_CPUPREFIX'}/cpu0/topology/thread_siblings") {
|
||||||
|
# Use CPUPREFIX from environment - used for testing only
|
||||||
|
read_topology($ENV{'PARALLEL_CPUPREFIX'});
|
||||||
} elsif($cpu->{'sockets'} and $cpu->{'cores'} and
|
} elsif($cpu->{'sockets'} and $cpu->{'cores'} and
|
||||||
$cpu->{'threads'}) {
|
$cpu->{'threads'}) {
|
||||||
# Skip /proc/cpuinfo - already set
|
# Skip /proc/cpuinfo - already set
|
||||||
|
} elsif(-r "/sys/devices/system/cpu/cpu0/topology/thread_siblings") {
|
||||||
|
read_topology("/sys/devices/system/cpu");
|
||||||
} elsif(open(my $in_fh, "<", "/proc/cpuinfo")) {
|
} elsif(open(my $in_fh, "<", "/proc/cpuinfo")) {
|
||||||
# Read /proc/cpuinfo
|
# Read /proc/cpuinfo
|
||||||
@cpuinfo = <$in_fh>;
|
@cpuinfo = <$in_fh>;
|
||||||
|
|
|
@ -354,10 +354,11 @@ par_too_long_line_X() {
|
||||||
seq 3000 | parallel -Xj1 'echo {} {} {} {} {} {} {} {} {} {} {} {} {} {} | wc'
|
seq 3000 | parallel -Xj1 'echo {} {} {} {} {} {} {} {} {} {} {} {} {} {} | wc'
|
||||||
}
|
}
|
||||||
|
|
||||||
par_test_cpu_detection() {
|
par_test_cpu_detection_cpuinfo() {
|
||||||
pack() { zstd | mmencode; }
|
pack() { zstd -19 | mmencode; }
|
||||||
unpack() { mmencode -u | zstd -d; }
|
unpack() { mmencode -u | zstd -d; }
|
||||||
export -f unpack
|
export -f unpack
|
||||||
|
# ssh server cat /proc/cpuinfo | pack
|
||||||
|
|
||||||
cpu1() {
|
cpu1() {
|
||||||
echo '2-8-8-8 Xeon 8 core server in Germany'
|
echo '2-8-8-8 Xeon 8 core server in Germany'
|
||||||
|
@ -416,7 +417,7 @@ par_test_cpu_detection() {
|
||||||
' | unpack
|
' | unpack
|
||||||
}
|
}
|
||||||
cpu4() {
|
cpu4() {
|
||||||
echo '1-2-2-2 dual core laptop(?)'
|
echo '1-2-2-2 AMD Opteron 244 dual core laptop(?)'
|
||||||
echo '
|
echo '
|
||||||
KLUv/QRYvQoANtlJIkBprACDMMQtkTstiphu+tF3RsomRkcLaiECKgDo7qgtvyZCAEQAOQCP
|
KLUv/QRYvQoANtlJIkBprACDMMQtkTstiphu+tF3RsomRkcLaiECKgDo7qgtvyZCAEQAOQCP
|
||||||
WWerZUFc4QE7AaJ0dHLCDRiLr6TL4r9SgsrIVQLJV2KAb5n7w00ZMBbtzaiO+Sy+EvMajmSi
|
WWerZUFc4QE7AaJ0dHLCDRiLr6TL4r9SgsrIVQLJV2KAb5n7w00ZMBbtzaiO+Sy+EvMajmSi
|
||||||
|
@ -577,6 +578,24 @@ par_test_cpu_detection() {
|
||||||
/q05b9gEeqJ524Ixfxz8jbBi
|
/q05b9gEeqJ524Ixfxz8jbBi
|
||||||
' | unpack
|
' | unpack
|
||||||
}
|
}
|
||||||
|
cpu13() {
|
||||||
|
echo '1-2-2-2 AMD Neo N36L Dual-Core Processor'
|
||||||
|
echo '
|
||||||
|
KLUv/QRoPRQA9iRoIyCPmwBAIy3LSinV2zbLlasWEvo1qQe/YpQhuFH+WyAIGgB4ZgBYAFoA
|
||||||
|
rN2p1bjy7LIA8UeDkReNn89SaykAuHCQiCwGQ1lNF4fz2m42LxTPCBkInIIaHgFxTBzmxB8e
|
||||||
|
LqAd8KB7WuGp6h3AJYO6QJiKa6okh3YtDRIKq/XLpyEF1lKE7GW0MJ4AECFzLhg3XxbfOEwu
|
||||||
|
W5iakpR3xxV+P28kM0VyiuofhpzErUMcrfYR1HXlxNZv8iOU9Vz6VPvI+sX95H2yp0ZnR7md
|
||||||
|
LAYuo3Rn7cHWm4uSibMCraR1e221VWtpsGsaBw01S0aK07b4brGgS1Fs3HtVo2dvmjyJtWTN
|
||||||
|
Jrfgc9M+iRj+WZ2SjKse2qhIXBrxK0s56dLqSpJHufdbC/cQJsJuD+rb2ye2cOE7g9BJmzH1
|
||||||
|
U80Prk/gY46rCwzDOJhl4YtHv5qv/e0+P6WPuzgFdWzRwLlb88iDOSNjql/qc5pT6QFZOB21
|
||||||
|
h3gsRFQskIMCAwSDbQod2CwNJkoZe+XyGYxHJqbqTnJyDnrn2K0Sc+qMFiqZlZRqalxnKDAE
|
||||||
|
iFNnHPIyW6sjBSmjVv2fZQzcoCUQPqCxgIN0gPYK4Id9CK2Xrhh+6pczlgJU1dW5V1wXneBN
|
||||||
|
Dso0OEHQ1BAQD8hEOKPSSEqqnbiUo9qSNWNCSqPFwUg3GEdg597rYovkh/VDJS4Jc2hsDA3N
|
||||||
|
hu0BT8rqVWmlI7y1M7cQWtFBkCZ5dJEVHCEfnkAcxowh8tfz/1gcq4N0e/Ln4LoBaCTxpDA/
|
||||||
|
K9wEOcdPpxqOgLHqXpMH0AQrQRswgv0G5nqaeJrhzIzcgz0m/QlzxxEQGeDTfXJ21z8GJGDt
|
||||||
|
hOfZ08YsNAENX1FX
|
||||||
|
' | unpack
|
||||||
|
}
|
||||||
export -f $(compgen -A function | grep ^cpu)
|
export -f $(compgen -A function | grep ^cpu)
|
||||||
|
|
||||||
test_one() {
|
test_one() {
|
||||||
|
@ -591,6 +610,180 @@ par_test_cpu_detection() {
|
||||||
compgen -A function | grep ^cpu | parallel -j0 -k test_one {#}
|
compgen -A function | grep ^cpu | parallel -j0 -k test_one {#}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
par_test_cpu_detection_lscpu() {
|
||||||
|
pack() { zstd -19 | mmencode; }
|
||||||
|
unpack() { mmencode -u | zstd -d; }
|
||||||
|
export -f unpack
|
||||||
|
# ssh server lscpu | pack
|
||||||
|
|
||||||
|
cpu1() {
|
||||||
|
echo '2-8-8-8 Xeon 8 core server in Germany'
|
||||||
|
echo '
|
||||||
|
KLUv/QRodQYA8solITAL5gF7YbnaqsSsYkliK98HHFiNI3FSwNumyBYOykA5Aew4x163Zw87
|
||||||
|
7XAqwtiSPYwAiCZa/8LET3hd+xO/ZCDAJQlLGEACjIF+VflN4KP1dFkhfg/zHeDC9Esbp39R
|
||||||
|
LyBo2lZJfWLmstJeIOmA2/WGWC23lWFWY1uv2rAKCd1SESOtGFYhITDsnsJDEK24vW70+1S0
|
||||||
|
SxQgQIII9QEdLfxiBElVRWsZDqgLA+oSr9kgrmS70kDZt2WvOkEnODfAiaJIAWgWoteFUwLs
|
||||||
|
8nwc
|
||||||
|
' | unpack
|
||||||
|
}
|
||||||
|
cpu2() {
|
||||||
|
echo '1-4-8-4 Core i7-3632QM Acer laptop'
|
||||||
|
echo '
|
||||||
|
KLUv/QRoxR8AukKICyngcGoTEJCWSciVLZJIKEXuzdZEplGI3JgV4DZJLMuEV2COJ8wwH2L4
|
||||||
|
BcEAsgChABMIwcjiqQJCoZiUW0AsFAUYGxxMCkBPd7MpzAYHDRQMCMYPfDKB0Xg0HgjoA0wq
|
||||||
|
D0ABQDr1HjHgLRmcMI9LU6eeZz9JPo1eNlAgeYTs5cQ7gkmFCMyCwjg6MSzIGWEChgHXYy5T
|
||||||
|
GS0VhsCDolnbn0/bw5PARDQVdVQpwnGHppbyxbLnVuePBucG5TNnZAwB85Syt+DZuhVCTBYl
|
||||||
|
PPsSYRyPO7Q6D4xGAAaQDLqHha8gkYBxPJpHxHRIxqhXtlpWRBAx+yncNw3H1BiVc4ZWaWAB
|
||||||
|
l4UrJkeQhfSMvQ6ulXz21FuvuFcqnbGyRyhPSVu1CMKs9uI8I2z+yqVIIE8DZN3SAMd8nsiJ
|
||||||
|
KluCQ5hNskmvTCh34LRw1J43pezB9QuTCY4pPckXVCRu4OkFBE5I7ROKLG9tS4G0dXLIZOJB
|
||||||
|
q0W7Re5Oa8kvrU0dFfO1aOKKR2Nyhkb0wSMYaVlqnS0gMNNDZeJBbbVBJ5jGAkJRoOGgSEgC
|
||||||
|
beE7gxBqNuO5nbOT+wfdE3Mby4qq6aeaXfuu+Om9NbX4wk9n7/ptOfMZyfzI0/PJuesudW72
|
||||||
|
tv5otNpL0K0raB9ju2/yl656xLSeyz3VPrL74n7yPtnTSY/2OYQh1RgwLHvl86g3jBCho77e
|
||||||
|
hdUnrjC4YFzqDiMcks2J0NPW9HmEQqFCuYMFBg2FQkQiIrlDPm1wO+OXxnwJvbWIAaP1KX4M
|
||||||
|
W7TmUWVbDXPn3r+2bxXVFdO7mJZm74Uu5jedchji50xXem9GqHGnbM/VPekaIFMWbuL219Hm
|
||||||
|
O+voOTp65jBfe+9svluknsa15rGoFln8eiyeT5J6Soqnc6rHdNoNU8mafmvhMqYzFo2D6dq7
|
||||||
|
xfZxe/pjMa03kjk/OeltV8PsEbY+6O54cDZ7BpahRa6tvb69OtNo18L3CwQbXNjTA3IgUABA
|
||||||
|
FFkPLUa8gdKoM6utIHa/NrtPEu5DQv8gyge6RJ2RmegWA2w0olDY/5lu43u3KLpQpvV9DWB7
|
||||||
|
CFzd08L6NLcg3DK2Iii4oCIi1jNIE2hkLi8wQYrBQthc9idpAuBaroQWpoIwMqR3NNkECfJu
|
||||||
|
sp2IAOACZSd4BLmUzVHl0rV1Cx0Tz3XrtPBCCl8Kvi0Wusx4XxBktMyMQbkszXzEs4pfZzPl
|
||||||
|
aJcthoylYAaKfS4KyazRcAhc3IKx7ShmMdAXiKvD0NxyiR0chavOhoeEWuhRXAvYVR9j44TQ
|
||||||
|
yFRTQMEnwBmtgAoLU0YIijDMvRARZYMpA4smUrtjrICOHpSiNYqBXUcja59JvwK0LWESpwSv
|
||||||
|
+wJQ
|
||||||
|
' | unpack
|
||||||
|
}
|
||||||
|
cpu3() {
|
||||||
|
echo '1-2-4-2 Core i5-2410M laptop firewall'
|
||||||
|
echo '
|
||||||
|
KLUv/QRobR0AFj+vJvCyNgHQEZLJrWwzBCOlyJ2IXthpoGeK2U1oGVrADy9eHBY/BkIIsgCr
|
||||||
|
AJsAlEmEYJJAgT4kMAcbuFJqZ54PiQiIhAD6wjGQyAQaMNgHYDQPwABQisFDrzx1EfNQOm8p
|
||||||
|
Nl0bXhRuBTXC4fIZHVQNeAZMRsUTybRytMg6Y8MDxfap0jGdHM0jGYA07/sV7huAFs/ksarn
|
||||||
|
WgiTCzzWljscee6VTpGwfiyfWadzDA9k6+DD9XUvxStT3bS4dsfyTCgX6JUGIEkAA6iL1ICM
|
||||||
|
z7hoeCaUiIJwvaKz6qa9nDYZAg03ykcRT905mXTeSObBBR0Z21SuKhHrOltSsTXlO8j+uk15
|
||||||
|
ttYdr7slc7W22asqzEx2pOuMzW8qM5cK9Iiun2KsazCZK/DUaaqkyfQ1vMIOA+PyVAte/qC5
|
||||||
|
uMJmezFTRyj0vYLRmOjlbL+KuvT68k7vW4lNha/SOMSymEskUMTg0Fp24hOKchprdxGK5xrQ
|
||||||
|
aMC4zT5W44ESDCaZiwsmbqIFAS6EAAJJgC5GBfPc0llSeRipaaqMOG2yqCFrpt5l43bzF/x7
|
||||||
|
rHGHr5I81W/OIWX+5Gv6RVFf2di53Tlcvem1UyTN5K1ItbON/JxNXSq/rWRHuNq1UVcmP5l6
|
||||||
|
476yvLorZb2S0yu8YQ/icdpNp4m9Y8WMEnuDHWa/WLOB+95Ot2QwNJkLbEBEGYzH1sHYbrmw
|
||||||
|
XC6gcF+UrfNtp0Ld/L0KAuqFjD81j4u8qEWOOrc8fPLNJjtze2oqp91bRrfSekudcae89E1f
|
||||||
|
Clr3iI5xOJqyL6VtviSlPU9p7yTmb8tLUk+9aOKw98tiV4vxdVb2qdR25Ji66A2bjBK6DkWi
|
||||||
|
idsmTzUnP2Vfp0Sudoky8yHWX5T1J1vE7jP2wkh9QmFt9w7X8SrqNfmF8uxuK9lkhO9s4osy
|
||||||
|
9vUnI7yLcRNJDWMgUASALDIelxSA43If9uHpvXHEbfAybA5yiTzjJGNsNEJhrP/trvE9thy4
|
||||||
|
EPWxBL9Ev+3Tc4V4y+yIoASj88gBPDh1YC0Hj+9SAIGlXIksTAVhZEDvaLMJEPRuqp2YAOQC
|
||||||
|
TScOHg0AZWaC3ta8uvJY+7RdpnWcJnqpGYJyWZn52M42vTHmkCoi6xGLgGI6qJBMGjmMBMaA
|
||||||
|
xU0EY9tRzDJQ4nY0BW6JnRuEi+6GBsRfsKN4C1hVzzGGYiil6i4wwSfBmRYAFSBTdAhduMYs
|
||||||
|
pN+yYcqIRXOpXTBSQCcPSsga9cCuhh7z/9NC2xMmKUr4tsTH
|
||||||
|
' | unpack
|
||||||
|
}
|
||||||
|
_cpu4() {
|
||||||
|
echo '1-2-2-2 dual core laptop(?)'
|
||||||
|
echo '
|
||||||
|
' | unpack
|
||||||
|
}
|
||||||
|
_cpu5() {
|
||||||
|
echo '2-24-48-24 24-core (maxwell?)'
|
||||||
|
echo '
|
||||||
|
' | unpack
|
||||||
|
}
|
||||||
|
_cpu6() {
|
||||||
|
echo '1-2-2-2 HP Laptop Compaq 6530b'
|
||||||
|
echo '
|
||||||
|
' | unpack
|
||||||
|
}
|
||||||
|
cpu7() {
|
||||||
|
echo '1-8-8-8 Huawei P Smart Octa-core (4x2.36 GHz Cortex-A53 & 4x1.7 GHz Cortex-A53)'
|
||||||
|
echo '
|
||||||
|
KLUv/QRoTQgAgk8yJCCN6AGBEUmyQvipyGwhCMTqQifa7nWt/lvbXsAxLGVACC2ABrswzRtD
|
||||||
|
KImUazOO/vUjml18lTF9qBAGEXY5CsYxMaQJmQvlLPmUUkqxNMwykSDxhEWqHCIfpf2OZQgg
|
||||||
|
ZdLvM+rIJC+G7aa00gJkwGCfTnbDLo5dzM83RJu1fUY7MBt7U8faIwxboCh+vj7I3PJBRTbW
|
||||||
|
eUzRSvacPOCG/0+BH2/nDe6XWOxqWOCfg7IwARWg3YwKnfyYol1NpDlj/LRLvvW/SHMoGAAr
|
||||||
|
Q5AWDg9qGEBiofABuk3KGsauTvhpnhsa5HVShxsS93JpFOfBzhP4ZgBCDQ0XCuEub/2VgAiV
|
||||||
|
mwwoAdUl+VI=
|
||||||
|
' | unpack
|
||||||
|
}
|
||||||
|
cpu8() {
|
||||||
|
echo '1-4-4-4 x96 quad-core Android TV-box'
|
||||||
|
echo '
|
||||||
|
KLUv/QRo/QgAtpE4JBCNWAHfG9LkksIm0BaMBALBz/jVBGlPVDQCo6NyBAUAwCBwEC4ALwAv
|
||||||
|
AE3Pdb/CdQp8qMWbgAkggTgKsm3Q4Oq6V+ENa+PHtSUIlBuYHrM3ylI/2hs93AgNJUKbo6OP
|
||||||
|
wb9x2qJDORYaBQnn2KA2qCXS+vDEqRwdtcTnrLIx5YhBMcoCQQ+1/s5JT34q++OePenb28ku
|
||||||
|
oTlh7mAtuGutJaBYGMsEguMR7F0CcdRCLp7AlVI7ohhGqqdtezZt2y92uj4zwajwcja9hKa3
|
||||||
|
k15PBt3hSVEfciy6hLiCefi5YmHRfBgggCQg1HBWDGNRBoJsaT4B1kZtNKSQAf5kC+J/a19p
|
||||||
|
9jscIBj33n2UBCmUphwBwqU/HBDKFhi+RQnSA8zN
|
||||||
|
' | unpack
|
||||||
|
}
|
||||||
|
_cpu9() {
|
||||||
|
echo '1-6-6-6 Kramses 200 USD laptop 6-core'
|
||||||
|
echo '
|
||||||
|
' | unpack
|
||||||
|
}
|
||||||
|
_cpu10() {
|
||||||
|
echo '4-48-48-48 Dell R815 4 CPU 48-core'
|
||||||
|
echo '
|
||||||
|
' | unpack
|
||||||
|
}
|
||||||
|
cpu11() {
|
||||||
|
echo '1-4-8-4 4-core/8 thread Lenovo T480'
|
||||||
|
echo '
|
||||||
|
' | unpack
|
||||||
|
}
|
||||||
|
cpu12() {
|
||||||
|
echo '4-64-64-64 Dell R815 4 CPU 64-core'
|
||||||
|
echo '
|
||||||
|
KLUv/QRoNR8A2kBECygQbcYJiNmWkVvZhZlEnSKWBFp0GRq85wI/vMgYA62BnzagCgCAQaAg
|
||||||
|
tQCvAKEAjwPx4OCIj9hIGkchwCHQLBUUOBIPuFJqQyQPQ/N8RmZlcT48wGsAME5t6eD6FrzT
|
||||||
|
Fh3JwkTcviUdcDSwbahTUw0HHD5jgyoBvsERoUHiQCSL1gksss5oIGEi+1TZls4JQtI8SqJ5
|
||||||
|
3a9wnQIdJG5RPbdacIstRyZ57o2+cFgrLJ9ZZ2sNCVzbIIKr614GU9t0cO1II3GeL/RGCtME
|
||||||
|
YADa4lNkfIQHA4nzQM8CcoZOqpn2Tmw2BAmYXrj4UxtulIcgnrpzruj8kCuCB0RkZFOZWqrr
|
||||||
|
bPkiY8pvcN01m/Jrqzd10eJtb0Bcq+3lqAKP7XWcwbxkJLrO2HymEoIBI2Jrp2dwc0i9MGja
|
||||||
|
TCVpvWOD3mnbUe+Ra4dHet1Gayp0lIRkaRSHYWCUZ3maR3kUCoVCWTgMjpJwGgKNwjSMYlEW
|
||||||
|
C4OSeGLhNM5zxnFmG7vgzKLQiS32tjBIJCgMGLdXhZWQMI2ARCK9ML5TaBQc9RyTXyj/pKly
|
||||||
|
/bEGtbfeFmoN0belJJMR3skI32J8QFIn1HA1P3fJuNt89FhUNvmWEWqIQuCdW4wj/J7OKPMn
|
||||||
|
Q6RD3vvElJMc+9P0kq/iY18P+Tn7XSqfrVxfQNiVveuSn/zOuK8sr+36qlNS4sdyCRg9Y7TO
|
||||||
|
YITXIQyBwS2aD7jOrfQGxIMvQIDYBiN746Hh8AWF66Jsnc5RAUlzcWKdU0vyU9utpEwteW5e
|
||||||
|
5qUtMm1vyysSHS51DIqYQowbkjvhJ7DooGpG7i3he831ZV/0XvVIRvsW9WqWUMT0SLJHUGdk
|
||||||
|
0GwWZey/qKG2yvpOt4j3wp3AlxFyjvYRFcdPrFXSKSMibM2VGT7WLd739aK1mOxV/AhbD3WQ
|
||||||
|
fJA0LXf2LNIh1bpWiyFnXW/IZJRnFsh5Fgj7etIb5Rh2IIAAYJCsDt0Itwf3dUHgOS8IC3/b
|
||||||
|
cx+tCmlszVYPLUY2cy6k32i2tsTCachLepZh+yFZ+9QZqUTqQcGisUgRvvEwh9VHGLSDCXO7
|
||||||
|
4229V2jZPh1WaFKMZmTN3FKTRx/WIhwGNK8IzwuWRBf5u7SCYK6uBC1MtTDiFrOijJL+3UQ7
|
||||||
|
keVCzWv4iQk9sM2ASaSnUIZnvcRUvcJqZcM5YIQfVShhtbI0nFeGKOysSdUYXLuFbGw5uKQI
|
||||||
|
9TqKlwFgqMGU058zcDgdl7WAndaEy5TLvwFg5aqP4zgAYc3lakmdkAAuoQCsBrIlQlAIw4he
|
||||||
|
PFE6mEJmPV3qB3YDIAGdPCihNatiXaWRte+lXwO0mTBJUQLQlar+
|
||||||
|
' | unpack
|
||||||
|
}
|
||||||
|
cpu13() {
|
||||||
|
echo '1-2-2-2 AMD Neo N36L Dual-Core Processor'
|
||||||
|
echo '
|
||||||
|
KLUv/QRolRgAtnKPJQCPWACgNvIHK2l1aPsb21+AYWrULM1pbgXRH0X4Tira///c/16KAI4A
|
||||||
|
fQCRyR+um5YG4mTgi0xasEzaa7lUV5OFyut0ci/kJxaLiMa5NE8vRpu8dSo0zmyvSx3bSlU0
|
||||||
|
TsPR/OC/8kEBKdE8kFVdn9WArD3OUPTcL3qkgDfj8Zm3OjdpJHtOMnxh94O4pK6rEt/OUJoC
|
||||||
|
yBv9IoHnEcAA62YUoPMWEwpNAQSCRK5Ltlbdth/V6iQJ0+tncaxvbQkzo5mo+W3pRSIx0zXc
|
||||||
|
S9hZpHYg3HZbSWLvGdGPeg2r+Ah25Zl+8EWsroTVxR2UZ/nz51HewyPPUo21OweiuRCQyPma
|
||||||
|
ZbyLBnIwYIBg8FwmKpY5TUpEvodzsehwOAYcjkiGg+UxyUfp9qWpk3nbrBMXgKxaOATkEfG5
|
||||||
|
Ea9UHhAbQE5I9eQbTf1Z5le+pF8xnuIKSrAd8mhGb83Yzib6WjueLr89yh652rfFL6OvHN+4
|
||||||
|
v0y/7hutV1TiicEGSdcZsTeZYfaLKyTsojrJB+GTTrlQvOEWRoyf+wSlUnF5Y+WDk/ZWCKuG
|
||||||
|
p59k/Lot36SHoDvJznVfrSw6T5RhmCBDZ6vL1QPNWowh+qo8RpsQsmoE3zRG69usmUIYCnKv
|
||||||
|
Heb95MPgc/SOsXiear3SVsoKYsQitT1a/Exj00KIxvYIIYli8C0bnfQQ52qvs5+c8U/Suwe5
|
||||||
|
u1fRRqc8pFPezTlBdCvUkjXL2Y6Z0j0e4WnjdvXR5Cx19E0n1Nde8hCyxhl+ViBABMAoqhrs
|
||||||
|
g7Hf/B/GILKuc2SwMcJQiDgBwi/gjABrg9JzmNOqR1vTDhyWM8swRNQfQlP0aR5ABZrRgKxQ
|
||||||
|
LLVBwPczF9136UFQQFcRWm8ZQoe1KIqmjbAGHt6QXhiuOxL3tMSZcblsxP24SlsticeSMQPw
|
||||||
|
nwvt4I9uNEhBXFEJoUWnhtbCEDvYBbOhnR6FO++GRBrkG7DW9Rm5AoWQy9RySiElwBmtgAoL
|
||||||
|
UzgEXRjGXoiIssGUkUUTqd0xvoBOHpTCmkWxrpQel//TQhslTAKUqRruSw==
|
||||||
|
' | unpack
|
||||||
|
}
|
||||||
|
export -f $(compgen -A function | grep ^cpu)
|
||||||
|
|
||||||
|
test_one() {
|
||||||
|
eval cpu$1 | head -n1
|
||||||
|
export PARALLEL_LSCPU="$(eval cpu$1 | tail -n +2)"
|
||||||
|
echo $(parallel --number-of-sockets) \
|
||||||
|
$(parallel --number-of-cores) \
|
||||||
|
$(parallel --number-of-threads) \
|
||||||
|
$(parallel --number-of-cpus)
|
||||||
|
}
|
||||||
|
export -f test_one
|
||||||
|
compgen -A function | grep ^cpu | parallel -j0 -k test_one {#}
|
||||||
|
}
|
||||||
|
|
||||||
par_null_resume() {
|
par_null_resume() {
|
||||||
echo '### --null --resume --jl'
|
echo '### --null --resume --jl'
|
||||||
log=/tmp/null-resume-$$.log
|
log=/tmp/null-resume-$$.log
|
||||||
|
|
Loading…
Reference in a new issue