parallel: Determine CPU via topology bugfix.

This commit is contained in:
Ole Tange 2024-01-21 07:53:12 +01:00
parent 07c87e1af3
commit 574b8b5fe4
40 changed files with 4214 additions and 5455 deletions

View file

@ -157,7 +157,7 @@ am__define_uniq_tagged_files = \
done | $(am__uniquify_input)` done | $(am__uniquify_input)`
DIST_SUBDIRS = $(SUBDIRS) DIST_SUBDIRS = $(SUBDIRS)
am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in NEWS \ am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in NEWS \
README TODO install-sh missing README install-sh missing
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
distdir = $(PACKAGE)-$(VERSION) distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir) top_distdir = $(distdir)

View file

@ -8695,13 +8695,13 @@ sub sct_gnu_linux($) {
for($thread = 0; for($thread = 0;
-r "$prefix/cpu$thread/topology/physical_package_id"; -r "$prefix/cpu$thread/topology/physical_package_id";
$thread++) { $thread++) {
$socket{slurp_or_exit( $socket{::slurp_or_exit(
"$prefix/cpu$thread/topology/physical_package_id")}++; "$prefix/cpu$thread/topology/physical_package_id")}++;
} }
for($thread = 0; for($thread = 0;
-r "$prefix/cpu$thread/topology/thread_siblings"; -r "$prefix/cpu$thread/topology/thread_siblings";
$thread++) { $thread++) {
$sibiling{slurp_or_exit( $sibiling{::slurp_or_exit(
"$prefix/cpu$thread/topology/thread_siblings")}++; "$prefix/cpu$thread/topology/thread_siblings")}++;
} }
$cpu->{'sockets'} = keys %socket; $cpu->{'sockets'} = keys %socket;

View file

@ -103,26 +103,33 @@ REQUIRE=bash -c '\
prereqlocal: installparallel startvm prereqlocal: installparallel startvm
${REQUIRE} ${REQUIRE}
parallel -j1 ssh-keygen -R parallel-server{} ::: 1 2 3 4 || true (parallel 'ssh -oStrictHostKeyChecking=accept-new vagrant@parallel-server{} mkdir -p bin; scp `which parallel` vagrant@parallel-server{}:bin/' ::: 1 2 3 4)&
(parallel 'ssh vagrant@parallel-server{} mkdir -p bin; scp `which parallel` vagrant@parallel-server{}:bin/' ::: 1 2 3 4)&
prereqremote: installparallel startvm prereqremote: installparallel startvm
parallel -j0 --timeout 10 --tag ssh vagrant@parallel-server{} parallel --minversion 20121021 ::: 1 2 || (echo parallel on remote required for testsuite; /bin/true) parallel -j0 --timeout 10 --tag ssh -oStrictHostKeyChecking=accept-new vagrant@parallel-server{} parallel --minversion 20121021 ::: 1 2 || (echo parallel on remote required for testsuite; /bin/true)
ignore=bytes.of.data|ping.statistics|packets.transmitted|64.bytes.from|\ ignore=bytes.of.data|ping.statistics|packets.transmitted|64.bytes.from|\
min/avg/max/mdev|default min/avg/max/mdev|default|known.hosts|Host.*found
start=(stdout ping -w 1 -c 1 {} || \ start=(stdout ping -w 1 -c 1 {} || \
(cd vagrant/*/{} && vagrant up; \ (cd vagrant/*/{} 2>/dev/null && vagrant up ; \
wssh vagrant@{} echo {} is up) ) | \ echo {} | grep -q centos3 && \
(cat ../../authorized_keys | vagrant ssh -c "cat >>.ssh/authorized_keys"; \
vagrant ssh -c "sudo /sbin/ifconfig eth1 172.27.27.3"); \
ssh-keygen -R {}; \
stdout wssh -oStrictHostKeyChecking=accept-new vagrant@{} echo {} is up) ) | \
grep -Ev "${ignore}" grep -Ev "${ignore}"
stop=(stdout ping -w 1 -c 1 {} && \ stop=(stdout ping -w 1 -c 1 {} && \
(cd vagrant/*/{} && vagrant suspend) ) | \ (cd vagrant/*/{} && vagrant suspend) ) | \
grep -Ev "${ignore}" grep -Ev "${ignore}"
namedservers=centos8 freebsd13 freebsd14 rhel8 centos3
servers=parallel-server1 parallel-server2 parallel-server3 parallel-server4 ${namedservers}
startvm: startvm:
parallel -j0 --tag -k '${start}' ::: centos8 freebsd13 freebsd12 rhel8 centos3 & parallel -j0 --tag -k '${start}' ::: ${servers} &
stopvm: stopvm:
parallel -j0 --tag -k '${stop}' ::: centos8 freebsd13 freebsd12 rhel8 centos3 || true parallel -j0 --tag -k '${stop}' ::: ${namedservers} || true
startdb: startdb:
true TODO should start Oracle in vagrant true TODO should start Oracle in vagrant

View file

@ -15,6 +15,7 @@ install_packages() {
test_pkgs="$test_pkgs mono-csharp-shell libevent-dev tcl libtext-csv-perl" test_pkgs="$test_pkgs mono-csharp-shell libevent-dev tcl libtext-csv-perl"
test_pkgs="$test_pkgs xterm libc6-i386 libcrypt1:i386 vagrant virtualbox" test_pkgs="$test_pkgs xterm libc6-i386 libcrypt1:i386 vagrant virtualbox"
test_pkgs="$test_pkgs libtest-nowarnings-perl xemacs21 pv zenity" test_pkgs="$test_pkgs libtest-nowarnings-perl xemacs21 pv zenity"
test_pkgs="$test_pkgs lsh-client lsh-utils torsocks net-tools"
# Debian package # Debian package
packaging_pkgs="dpkg-dev build-essential debhelper osc cvs automake" packaging_pkgs="dpkg-dev build-essential debhelper osc cvs automake"
@ -142,17 +143,23 @@ setup_virtual_box_network() {
sudo tee /etc/vbox/networks.conf sudo tee /etc/vbox/networks.conf
} }
start_vagrant_servers() {
cd testsuite/vagrant/
ssh-add -L >> authorized_keys
parallel 'cd {//}; vagrant up' ::: testsuite/vagrant/*/*/Vagrantfile
}
add_server_to_hosts() { add_server_to_hosts() {
add_ssh_key_to_authorized() { add_ssh_key_to_authorized() {
(cat vagrant/authorized_keys; cat ~/.ssh/*.pub) | (cat vagrant/authorized_keys; cat ~/.ssh/*.pub) |
uniq > vagrant/authorized_keys.$$ uniq > vagrant/authorized_keys.$$
mv vagrant/authorized_keys.$$ vagrant/authorized_keys mv vagrant/authorized_keys.$$ vagrant/authorized_keys
# Problem:
# https://developer.hashicorp.com/vagrant/docs/v2.4.0/vagrantfile/ssh_settings
# says:
#
# (non-interactive SSH connections use the internal SSH
# communicator which is unaffected by this setting).
#
# We need to force Ruby's Net::SSH to use ~/.ssh/config
# or -oKexAlgorithms=diffie-hellman-group1-sha1
#
# VAGRANT_PREFER_SYSTEM_BIN=1 ought to fix it, but does not.
# Fix: # Fix:
# could not settle on kex algorithm # could not settle on kex algorithm
@ -181,7 +188,7 @@ add_server_to_hosts() {
# skip # skip
true true
else else
printf "$@\n" | echo "$@" |
sudo tee -a /etc/hosts sudo tee -a /etc/hosts
fi fi
} }
@ -194,7 +201,7 @@ add_server_to_hosts() {
grep 172 Vagrantfile | grep -v '#' | grep 172 Vagrantfile | grep -v '#' |
perl -pe 's/.*(172.27[\.0-9]+).*/$1/'; perl -pe 's/.*(172.27[\.0-9]+).*/$1/';
} }
insert_in_etc_hosts $(vagrant_ip $1) $@ insert_in_etc_hosts $(vagrant_ip $1) "$@"
} }
export -f add_single_vagrant_to_etc_hosts export -f add_single_vagrant_to_etc_hosts
@ -202,40 +209,44 @@ add_server_to_hosts() {
insert_in_etc_hosts 127.1.2.3 server insert_in_etc_hosts 127.1.2.3 server
insert_in_etc_hosts 127.0.0.2 lo insert_in_etc_hosts 127.0.0.2 lo
parallel add_single_vagrant_to_etc_hosts {} parallel-server{#} ::: centos8 freebsd12 freebsd13 rhel8 centos3 parallel add_single_vagrant_to_etc_hosts {} parallel-server{#} ::: centos8 freebsd13 freebsd14 rhel8 centos3
#centos39-oracle817 }
# TODO alias
# 172.27.27.8 centos8 parallel-server1 server1
# 172.27.27.72 freebsd12 parallel-server3 server3
# 172.27.27.108 rhel8 parallel-server4 server4
# 172.27.27.73 freebsd13 parallel-server2 server2
# TODO
# $ cat /etc/vbox/networks.conf
# * 172.27.0.0/16
# TODO
parallel --ll --tag 'cd {};vagrant up' ::: vagrant/*/*
parallel w4it-for-port-open {} 22 ::: centos8 freebsd11 freebsd12 freebsd13 rhel8 centos3
vagrant_up() {
parallel -j0 --ll --tag 'cd {};vagrant up' ::: vagrant/*/*
# After this you should be able to 'vagrant ssh'
}
add_key_to_auth_key() {
sshaddvagrant() { sshaddvagrant() {
ssh-keygen -f ~/.ssh/known_hosts -R $1
cat ~/.ssh/*.pub | (cd vagrant/*/$1 && vagrant ssh -c 'cat >>.ssh/authorized_keys') cat ~/.ssh/*.pub | (cd vagrant/*/$1 && vagrant ssh -c 'cat >>.ssh/authorized_keys')
sshpass -p vagrant ssh-copy-id -o StrictHostKeyChecking=accept-new vagrant@$1 sshpass -p vagrant ssh-copy-id -o StrictHostKeyChecking=accept-new vagrant@$1
ssh vagrant@$1 echo vagrant@$1 OK ssh vagrant@$1 echo vagrant@$1 OK
} }
export -f sshaddvagrant export -f sshaddvagrant
parallel sshaddvagrant ::: centos8 freebsd11 freebsd12 freebsd13 rhel8 centos3 parallel --tag sshaddvagrant ::: centos8 freebsd13 freebsd14 rhel8 centos3
parallel ssh -o StrictHostKeyChecking=accept-new vagrant@{} ::: parallel-server{1..4} centos3 parallel --tag ssh -o StrictHostKeyChecking=accept-new vagrant@{} ::: parallel-server{1..4} centos3
cat ~/.ssh/*pub >> ~/.ssh/authorized_keys
# TODO find ipv6 # TODO find ipv6
ipv6= ipv6=
parallel ssh -o StrictHostKeyChecking=accept-new {} ::: lo localhost 172.27.27.1 127.0.0.1 ::1 $ipv6 parallel --tag ssh -o StrictHostKeyChecking=accept-new {} ::: lo localhost 172.27.27.1 127.0.0.1 ::1 $ipv6
# parallel sshpass -p vagrant ssh-copy-id vagrant@{} ::: parallel-server{1..4} centos3 # parallel sshpass -p vagrant ssh-copy-id vagrant@{} ::: parallel-server{1..4} centos3
# ssh-copy-id vagrant@parallel-server1..4 centos3 # ssh-copy-id vagrant@parallel-server1..4 centos3
} }
install_rsync_on_vagrant() {
parallel --tag ssh vagrant@{} "'
sudo apt install rsync || sudo yum install -y rsync || sudo pkg install -y rsync;
sudo apt install perl || sudo yum install -y perl || sudo pkg install -y perl;
'" ::: parallel-server{1..4} centos3
}
shellsplus() { shellsplus() {
shells="bash sh csh ash dash tcsh zsh ksh ksh93 fish fizsh mksh" shells="bash sh csh ash dash tcsh zsh ksh ksh93 fish fizsh mksh"
shells="$shells posh rc sash yash nopathbash nopathcsh" shells="$shells posh rc sash yash nopathbash nopathcsh"
shellsplus="parallel $shells" shellsplus=$(whoami)" parallel $shells"
parallel -k echo ::: $shellsplus parallel -k echo ::: $shellsplus
} }
@ -282,6 +293,9 @@ create_shell_logins() {
(shellsplus; echo withpassword) | (shellsplus; echo withpassword) |
parallel --lb --halt soon,fail=1 --timeout 1000% --retries 5 --tag -j1 del_add_user || parallel --lb --halt soon,fail=1 --timeout 1000% --retries 5 --tag -j1 del_add_user ||
(echo Creation failed: $?; false) (echo Creation failed: $?; false)
# Homedir must be readable by others
umask 0002
(shellsplus; echo withpassword) | sudo parallel chmod +rX ~{}
} }
copy_ssh_keys() { copy_ssh_keys() {
@ -340,10 +354,11 @@ copy_ssh_keys() {
# Remove env_parallel from .profile # Remove env_parallel from .profile
ssh nopathbash@lo 'perl -i.bak -pe s/.*env_parallel.*// .profile .bashrc' ssh nopathbash@lo 'perl -i.bak -pe s/.*env_parallel.*// .profile .bashrc'
ssh nopathcsh@lo 'echo >> .cshrc setenv PATH /bin:/usr/bin' ssh nopathcsh@lo 'echo >> .cshrc setenv PATH /bin:/usr/bin'
ssh nopathcsh@lo 'echo >> .tcshrc setenv PATH /bin:/usr/bin'
ssh nopathcsh@lo 'echo >> .login setenv PATH /bin:/usr/bin' ssh nopathcsh@lo 'echo >> .login setenv PATH /bin:/usr/bin'
ssh nopathbash@lo 'echo $PATH; echo 1 | parallel echo' || ssh nopathbash@lo 'echo $PATH; echo NOT OK | parallel echo' ||
echo Great - this should FAIL: parallel should not be found echo Great - this should FAIL: parallel should not be found
ssh nopathcsh@lo 'echo $PATH; echo 1 | parallel echo' || ssh nopathcsh@lo 'echo $PATH; echo NOT OK | parallel echo' ||
echo Great - this should FAIL: parallel should not be found echo Great - this should FAIL: parallel should not be found
) )
} }
@ -382,15 +397,16 @@ lsh_setup() {
# #
# There is no longer an overlap: LSH is unsupported until there is # There is no longer an overlap: LSH is unsupported until there is
# a common algorithm again # a common algorithm again
shellsplus | parallel --bar --timeout 5 export_key_to_local_users (whoami; shellsplus) | parallel --bar --timeout 5 --retries 5 export_key_to_local_users
shellsplus | parallel --bar --timeout 5 'lsh -l {} lo true || export_key_to_local_users {}' (whoami; shellsplus) | parallel --bar --timeout 5 --retries 5 'lsh -l {} lo true || export_key_to_local_users {}'
shellsplus | parallel --bar --timeout 5 'lsh -l {} lo true || echo Fail {}' (whoami; shellsplus) | parallel --bar --timeout 5 --retries 5 'lsh -l {} lo true || echo Fail {}'
} }
add_freebsd() { add_freebsd() {
echo "# Add public key to freebsd7.t" echo "# Add public keys to old servers"
ssh freebsd7.t cat .ssh/id_rsa.pub | # freebsd7 is no longer supported as virtualbox
ssh parallel@localhost 'cat >>.ssh/authorized_keys' # ssh freebsd7 cat .ssh/id_rsa.pub |
# ssh parallel@localhost 'cat >>.ssh/authorized_keys'
echo Add: echo Add:
echo HostkeyAlgorithms +ssh-dss echo HostkeyAlgorithms +ssh-dss
@ -420,7 +436,7 @@ tmux_versions() {
cd tmux$1 cd tmux$1
git reset --hard git reset --hard
git checkout $1 git checkout $1
./autogen.sh && bash ./autogen.sh;
./configure && ./configure &&
make -j2 && make -j2 &&
sudo cp tmux /usr/local/bin/tmux-$1 sudo cp tmux /usr/local/bin/tmux-$1
@ -507,6 +523,28 @@ misc() {
# Build locale for LC_ALL=zh_HK.big5hkscs perl -e 1 # Build locale for LC_ALL=zh_HK.big5hkscs perl -e 1
sudo locale-gen zh_HK sudo locale-gen zh_HK
p=$(goodpasswd)
echo withpassword:$p | sudo chpasswd
echo "export withpassword=$p" >> ~/.passwords
echo TODO
echo ssh til egen IP-adresse 192.168.100.94
echo sshd_config
echo HostKeyAlgorithms +ssh-rsa
echo PubkeyAcceptedAlgorithms +ssh-rsa
echo KexAlgorithms +diffie-hellman-group1-sha1,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1
echo Ciphers +3des-cbc,aes128-cbc,aes192-cbc,aes256-cbc,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com
echo MaxStartups 100:30:1000
echo
echo freepl
echo 'set $withpassword'
echo 'set $mysqlrootpassword in .passwords'
echo '/usr/local/bin/parallel-20120822'
echo 'permission of ~shell/ must be +rx'
echo '~/.sql/aliases'
echo 'python install python-is-python3'
} }
run() { run() {
@ -515,8 +553,9 @@ run() {
install_oracle_client && install_oracle_client &&
setup_databases && setup_databases &&
setup_virtual_box_network && setup_virtual_box_network &&
start_vagrant_servers &&
add_server_to_hosts && add_server_to_hosts &&
vagrant_up &&
add_key_to_auth_key &&
create_shell_logins && create_shell_logins &&
copy_ssh_keys && copy_ssh_keys &&
lsh_setup && lsh_setup &&

View file

@ -5,7 +5,7 @@
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
echo "### These tests requires VirtualBox running with the following images" echo "### These tests requires VirtualBox running with the following images"
SERVER1=freebsd12 SERVER1=freebsd14
SSHUSER1=vagrant SSHUSER1=vagrant
SSHLOGIN1=$SSHUSER1@$SERVER1 SSHLOGIN1=$SSHUSER1@$SERVER1
echo $SSHUSER1@$SERVER1 echo $SSHUSER1@$SERVER1

View file

@ -620,7 +620,7 @@ par_jobs_file() {
} }
export -f $(compgen -A function | grep par_) export -f $(compgen -A function | grep par_)
compgen -A function | grep par_ | LC_ALL=C sort | compgen -A function | G par_ "$@" | LC_ALL=C sort |
parallel --timeout 1000% -j10 --tag -k --joblog /tmp/jl-`basename $0` '{} 2>&1' | parallel --timeout 1000% -j10 --tag -k --joblog /tmp/jl-`basename $0` '{} 2>&1' |
perl -pe 's/,31,0/,15,0/' | perl -pe 's/,31,0/,15,0/' |
# Replace $PWD with . even if given as ~/... # Replace $PWD with . even if given as ~/...

View file

@ -84,35 +84,6 @@ par_retired() {
stdout parallel -Y stdout parallel -Y
} }
par__plus() {
echo '### --plus'
echo '(It is OK to start with extra / or end with extra .)'
parallel -k --plus echo {} = {+/}/{/} = {.}.{+.} = {+/}/{/.}.{+.} = \
{..}.{+..} = {+/}/{/..}.{+..} = {...}.{+...} = \
{+/}/{/...}.{+...} \
::: a a.b a.b.c a.b.c.d a/1 a.b/1.2 a.b.c/1.2.3 a.b.c.d/1.2.3.4 \
a. a.b. a.b.c. a.b.c.d. a/1. a.b/1.2. a.b.c/1.2.3. a.b.c.d/1.2.3.4. \
a.. a.b.. a.b.c.. a.b.c.d.. a./1. a.b./1.2.. \
a.b.c./1.2.3.. a.b.c.d./1.2.3.4.. \
echo '### Test {%...} {%%...} {#...} {##...}'
a=z.z.z.foo
echo ${a#z*z.}
parallel --plus echo {#z.*z.} ::: z.z.z.foo
echo ${a##z*z.}
parallel --plus echo {##z.*z.} ::: z.z.z.foo
a=foo.z.z.z
echo ${a%.z.z}
parallel --plus echo {%.z.z} ::: foo.z.z.z
echo ${a%%.z*z}
parallel --plus echo {%%.z.*z} ::: foo.z.z.z
parallel -k --plus echo {uniq} ::: A B C ::: A B C ::: A B C
parallel -k --plus echo {1uniq}+{2uniq}+{3uniq} ::: A B C ::: A B C ::: A B C
parallel -k --plus echo {choose_k} ::: A B C D ::: A B C D ::: A B C D
}
par_file_rpl() { par_file_rpl() {
echo '### file as replacement string' echo '### file as replacement string'
TMPDIR=/tmp/parallel-local-1s/" "/bar TMPDIR=/tmp/parallel-local-1s/" "/bar
@ -246,14 +217,6 @@ par_results_compress() {
rm -r "$tmpdir" rm -r "$tmpdir"
} }
par__I_X_m() {
echo '### Test -I with -X and -m'
seq 10 | parallel -k 'seq 1 {.} | parallel -k -I :: echo {.} ::'
seq 10 | parallel -k 'seq 1 {.} | parallel -j1 -X -k -I :: echo a{.} b::'
seq 10 | parallel -k 'seq 1 {.} | parallel -j1 -m -k -I :: echo a{.} b::'
}
par_open_files_blocks() { par_open_files_blocks() {
echo 'bug #38439: "open files" with --files --pipe blocks after a while' echo 'bug #38439: "open files" with --files --pipe blocks after a while'
ulimit -n 28 ulimit -n 28
@ -538,17 +501,6 @@ par_pxz_complains() {
stdout parallel --compress --compress-program pxz true ::: OK-if-no-output stdout parallel --compress --compress-program pxz true ::: OK-if-no-output
} }
par__test_XI_mI() {
echo "### Test -I"
seq 1 10 | parallel -k 'seq 1 {} | parallel -k -I :: echo {} ::'
echo "### Test -X -I"
seq 1 10 | parallel -k 'seq 1 {} | parallel -j1 -X -k -I :: echo a{} b::'
echo "### Test -m -I"
seq 1 10 | parallel -k 'seq 1 {} | parallel -j1 -m -k -I :: echo a{} b::'
}
par_result() { par_result() {
echo "### Test --results" echo "### Test --results"
mkdir -p /tmp/parallel_results_test mkdir -p /tmp/parallel_results_test
@ -682,608 +634,6 @@ par_too_long_line_X() {
seq 3000 | parallel -Xj1 'echo {} {} {} {} {} {} {} {} {} {} {} {} {} {} | wc' seq 3000 | parallel -Xj1 'echo {} {} {} {} {} {} {} {} {} {} {} {} {} {} | wc'
} }
par__test_cpu_detection_topology() {
pack() { zstd -19 | mmencode; }
unpack() { mmencode -u | zstd -d; }
PARALLEL_CPUPREFIX=
# ssh server tar cvf - /sys/devices/system/cpu | pack
}
par__test_cpu_detection_cpuinfo() {
pack() { zstd -19 | mmencode; }
unpack() { mmencode -u | zstd -d; }
export -f unpack
# ssh server cat /proc/cpuinfo | pack
cpu1() {
echo '2-8-8-8 Xeon 8 core server in Germany'
echo '
KLUv/QRYbRIARmlzIxBtqgDhSWTqT86MkL9zqf+EhavXzwbElKKZVR0oAgBg5J4gcQBiAGEA
sLnXDwczA4YzTNLcWTvx+utwzbFmQQYUDEZyZ60JhQYkubMk+Zi3NptQSECQAeUFvwJhFAiH
cDh4wAOAnBvxgAeAO2tjk1+UO2vBhWZkzZ31gC+26BM7BrfKhZVvkptwZ0HvoROSSzHkzqKz
e92kzALNss2vjU/N6N5c/Ep8Sms8b5+gcl8Xv41PO951/TZ/oW+kPnF0Z62WGmQJtiR3Flxq
4aE3sZPzVV5X7TNxxHofd9aaOGLIncP26pPPPW5Lp/vEbkHvS6djzJ3Vknyw8ZohD81Bjw7i
U67Vm6RyX7a7r8T6KlKH7J6GTmd9csYzTW+F/iQfmlN6eOm7Nt6N5csZI7r8OBxtd12fKltt
Od0jfCUPYXP96G+DH+ur491XtvvbfdpV9CrGP3btXaE7eoIRdA/MYrEsFE2jNIxCkSgUhkES
ZlmWZVEURUGSJEmYU+XGlZps8XQlJjPYpkofxVzgXV/jBN1LIagxprmzqtwopQfbw7AFMoAw
GMud1fzilGaDPeqj81GuFkZ/UVKXmFBz9EO5PsIncjT4pVpXTx5mux83IFADQJsOKpW46nns
Is7U2ZTFVYV3C3OmxEovTmU8sZyTYlYqcdTzmEUsR6PYOlV4tzAnSqz04lTGE8s5KWalEkc9
j1nEqahrvJxROjsHSSvQhQq1tpf4zCUJFtpLU3TfUioW5HyRY49kj+F7XHNrWzFtIuMXRNui
cMxHAZLOSIU=
' | unpack
}
cpu2() {
echo '1-4-8-4 Core i7-3632QM Acer laptop'
echo '
KLUv/QRYBRkANvyjJDBtnADAQSgjJ0We2YiUIhYo1GYrjfN9LZSRbXi0c1gXhgBQJaUAjQCQ
AFstjEt/y7WLjrldy3NJYZ2SHbJMae46JVsalxR2RPcoxwvjbzHHk8cuBwx/Hia6pGiF4+uD
LbZEjWjxPA9zSVEqFBoYjYRxSdEmmZzMwaXgkuKIbleblwqFBEazaG5wCQeENzw0TuQMELgH
NEQA6JQID4AAuKQoXPEN6JKiPG0SLtElZfIcXNUhy5anHRc0OkjUhEtKc9OULWpkYVxSpmRW
JucuAfLJlS35WxnfpHRMq/Pc1JnSfZSwmrrTg811xj11XM1RssP3ZdxtXhL/3mI84Su1h/1+
nPmNMl+ZP1lSXQLh3bJ17vYHQ1712CNHed9rH5GQfTF4deznbPhVfkPCrgxe134yPOO+8l7b
FUYO2eqSorBjvaVYHOaS8jSi781BlkXpepVJdIJstbBOLikKJA6u3txG3quftJvSzZXoq+5g
jJxCtvXgaW5/Kdd8ail3npR7o5jvek+tvh9kVRN8U/VY7y2u2eZZxFSXRNY1slhy1vWp0PWk
0b22tE2M+x3Zyj1zuxrJG2Z6lPnNsT1kbT+3JY8YCbujzPwG9pv1Ehj5WzZx+5TtooR/ItZu
n2gTDwIf27u4r6buWtkcZfzEEQQETgMtGA5BFDlQg1k8EBRBEEMALSDoeZpGAbRoGo/jNAWN
RcHjNA3DMNCCYZ6GYSDoWTCPwyxSR4XqWHHBT6WQu7wF6ekijecC53bUI+eSwsw6W1vLE11S
OiqMDvfW9CxPs2AUOOugdEhqqZp5Z147oSadsnlqmMiks5kuP1LI1k/hBFkGoZbGvOnc+/j2
veb6au5w6qPbeyWc+lXIV14UBzsgIKMZ0jAPK+HdMhUFdRtVjCeXO5JNULexYjxRJq2g2EaV
8O7CRoIUlGysjsfKBCko2ag6HruIkWyCuo0V44ky2YRS1xX8jOLIPpdShdsmd5zFkNBhyRjs
jWqiDxsGiQbeb74N2hniRTgqfc6PK/sOQHV9UrS1UtKWyvnmCMjuOeEbaVqYTWLEy8KHcwab
fNdt
' | unpack
}
cpu3() {
echo '1-2-4-2 Core i5-2410M laptop firewall'
echo '
KLUv/QRYTRUAdrWRJCBtLACzSvaJv8mdRORLLoVMJ3pdprIRArYowWEZLgRCIHoEDZEAfQCA
ALM94qbc+9LZVuOOaol8MPJ6MQ5Ze00x4WWw8MXBYO6orXj9nTTWluJ4LCCQRrmjVEUCA1Mm
xh21brZJ24vLcUdJ5GPe2qsiAYHBLJYXHKLh4AwMpbEMELwHMDwALJ0HD3AAuKM2MvmlcUcp
uG7G1dxRFPBFBj3ituBWqbDyRXIR7ij3HjqdXGkx7ig6u7dNyitytkd4bl0d/SQPIWtN0d8I
P9bXybu/bPe3+7Qn6FOMf9zYu7pPOoIQbG+YbX5lfGnGdtbiV8KntMbz9h9T+7b4ZXza8a3r
t/nrvlF6xNAdpVrCIE8sRrmj4EoL717ETc5Xedu0T8TQ6qW4o1TE0GLcOWSvPvnaY7aWO6qX
Bo/wgSYMfpLYV2I9vZedbnz1WfmgY+ue1vVVNp789pgt0xflaWz33Wv82Byfcp3eKFM7s939
JdbX3k9ROuT2tDud9ckZ32h6q7uEk4BRhI3/JD9iiK6E7SG6zLO2nPIUkgknzzod8pR3c0oe
XvqukXdk+XJGiC4/k0bZW9enSlY7DONoIIvFQcAsiwJhIAvHY1EUAgZj8WiU5VS5cSVMsni6
E5MXZFGlT3o0LvCuL/KGuaO6e6lzbDWaO6rKjVLyIHsazXoQLCAPAn5xSmZkLYr0LK1tuS8n
pqtw4xNxiyKrK19CfmWUnbn3SHdS3StP91h65T1FfXQ+ytNC6C9K6RPTsUk/lOvp9mMRj/AG
JSDQIqIi7LRUwrvFZJLUAVuxPLHcLdUEdcBUDE/UqSanrs9zRmXkcaNU+bZlG7hrcxA2mUBy
T8tuUnd4augwnjSRdwOqb6To3FJWLMn5yBHIbnjCtm86kCEx8rLwgZ4B68GiZg==
' | unpack
}
cpu4() {
echo '1-2-2-2 AMD Opteron 244 dual core laptop(?)'
echo '
KLUv/QRYvQoANtlJIkBprACDMMQtkTstiphu+tF3RsomRkcLaiECKgDo7qgtvyZCAEQAOQCP
WWerZUFc4QE7AaJ0dHLCDRiLr6TL4r9SgsrIVQLJV2KAb5n7w00ZMBbtzaiO+Sy+EvMajmSi
Qgr5So7s1iYdVgErQYUUnnkPtyjfZG2RNh52qpXhK6WHHVvZHIK4CR1Kxq/UPAsN6DFOFSB8
QWjD66ujsaYGFOWgQBTJV0oNBwwk+UpNDE5H7tHuHf1AB9sTijZ/Mj4kt521vTZ8x5l71n57
zK6I2rXtlfGd3ree1+Yrc13oD7uvlLphkB8qeQvBIZEonvPMg848955fM+pqwyLbO/qQrJaE
GlAOBElC+UrNb2UjF9SM9CEjo3zhZ6TR7qN4CFlrhj5Cu6/dDxAAAieJgnrpvudbNgNUIOzA
MqSoSuBmxjF3/rkp5oAwr3m0DVcImxgIDpyVKKrENj8=
' | unpack
}
cpu5() {
echo '2-24-48-24 24-core (maxwell?)'
echo '
KLUv/QRYdSQAGkNoCyQADcMCI0TLks4mlR/lnQWq4v01q/9MCZihKMz3R7P+/yfjrxe5AKIA
pAAKdnLCyuueNSgYcfRSeGMYCkYcyJs7DVYooYPcjoTeGL10uivYGQ9+6XTHSm+MTkjoHGAf
yJ3mYFNY4MMAgyNJQdQbYyvA/i645o6FGAIMk6Q3hlFBQYNkIeiNsW+6SR2Mx3pjJCRk3tpH
BQUJEIVAeoGnxRUmSQMYgkNwcOABHgCQcyM8wAMAb4yNTT4lbwzD2TfjkbwxKDgwNsQV7A5n
q1ywEirkJnhjPGig88ldHMgbg87udZPyERXKGb+S3vou4UlwFNFxfCj5CkbQTbQ9gi7zrC2n
PIXEdCbP+vzNmTDw0nc9vA/LlzMi6LJhwdF219VQZastp3t0zq7roz8k0PLjP/KO01xT6O+B
H+vrwruftvvbfdoP4k+Mh+zau74vtMJBOO6J2ubXxl/M6N5c/Cb4lNZ43v7yuK+L38anHe+6
fpu/7xsXVzDijWF0ojk84VDojeHsYp0/GMdK3hhVbpQJ6DRDcqSFAMMo9sZohnEm5uHoSPe8
sb/dDp1oxB/kxSvvKVRIJ6T8rIM4jHLxCfO1hTZQrl8Jncl16WHlR7oL9b0rXzr8yvPA+9po
e3vw0TEgFprzJxt99C5BiD+L9l20ft7bTjfCalgJndf2GVzXV+l48h3klp4nZFjb/ebeH3T8
6B6fcn2eoMddbXc/xfra+yf2n7i4w87Q73QGDGOYojCFJYwxxpZiii3EEGMUwyxJKYbQQmsh
i2EUoyhpUQohRSmFEiUpibHE0lJJJaVQQikphBikEFoQhRjDMGtRFKUwlhKFkIQQsha2MJWw
hKXFFkMpscSQhDCEMcyyLEtKTEEWslayLIolSVprIbUkpRCEUkIpIYSYlNCCEKMgtCQIMbYs
ayWJUmullBJCR1Plxk002eLpTph8OE1RKVws6wLeFR6erDdGdy99rwWA56ixqCwgIiKDAAhC
MCMAACxsAhKoQBgGIBAIxsEIwTkOEfxPwgUfLJZYP9vKZrhEZep2u7k7XFK1ZLTlxfNql0Dp
yIyLNj3Wy9LeMRJXK8cgHu09Fq1Yq8b0XW09VsBqLc3ckYn047pXflSABeQzkYdcPcePl78l
oEW3htyWDCvcopK7b0uGSt6uFhO7XBKlKikuaCWPOa6tcXOiBR1jXNPFta0FfQxn6O1mJGr5
2Luq5WO+pnaPdalaeiyWdukXgH8mpTAUl1kS47K2M8j8mHlcElJyq2RtiZDCbSm5+7ZkGJQZ
l7eixcwul0SpiowL2tRYJ0t7x0hcrRyDeLT3WLSiVo7pM9pyrIDRyjFUlvv8H/M+JvuQKzUY
kM7MMXFBQ7TYyblwJnts2KkJO02wk27ZTOpjv06V+jple920PkaXcca67lrtscV1V9y9WuCx
xLUirn8t9NjMkJcZXC01dpO13hjFq01jyqKWjd272jEWZke+Xv7966LvqzZTC0zEIma1yNpX
ketyZer/0g6AFe7sFs2nePnngUV+Cv9cPO6zftzOuDDzXMWe+8I/vwr+ll9K
' | unpack
}
cpu6() {
echo '1-2-2-2 HP Laptop Compaq 6530b'
echo '
KLUv/QRY1Q8A1iZsIyBvqwA3o23SyJIQjJ06dkMYGMYDOkA5MLcI3iHqFTCAyKAwaQBhAFkA
BstXShcNEAYKi5SvtE7UKLU9pSxfKQIb885WFw0MioNgOcKvKEpj4hQRCl8ZFQYcgxYeIAEA
o1y3Cl9pH4NvML5ScuvEp5qvZOHaY88hVuV2QoeFDYLL8JWc9pDRgTtRyleSsXs1SlYBy/iy
37Xnt/nrfN/kED9fKXWEOa5QjeUruZ2su9MgVhjb5NVoHxA/qtfiKyWIH6V83bE2G2zamK2M
eog1Oe0royrGV+oIbA7SWil3TFtbSFglPJxh7EXrr0SZqoVhCAoOAjudN8h/5DK74wjfE/KG
LB/G98jlh0Qlu/Z8TMhmw6h/7hG8c0zbor8Q/pufknefsd3f7suOnkfvvbGy93Quacg9Tt80
tvmT8Sfx6Zm+b4Qv5Xzn7Tsi/ep7y7Isak24byMMsne5FZGVY9CUbeJgLvCeDfKme6XjMMU0
X2nCfTDSHHswjXI4CJSDgsZXam4vRiJEQRD15Eqm8+cej4S574R19KcOX/KM3iyRvrHdfcab
d6yPdi7jbDC+M00HGgDJQBXgHVgYGFDCduKMmpHxiUzAByptDXwxQm8Orkb8MKwzCJ2GRGOh
S1UsIOebOfYk2efwPdf8XqtmFQx7uDu4QYQPJQq2DBQj
' | unpack
}
cpu7() {
echo '1-8-8-8 Huawei P Smart Octa-core (4x2.36 GHz Cortex-A53 & 4x1.7 GHz Cortex-A53)'
echo '
KLUv/QRYZQUAwkkgH1BnrABA24MVyJENxj4WLhwSzxygdYSSvS59MzORDgyGAoEto0jsDTHx
9XOWl0pYpXrUG5qMPlbneFtuptv5FMdasGcns3AXCd8HEEQylmN3Q5V+oUp/WRoo36uHPHs6
+wS+1kuCN9TLzdRNJHYM1hsSQAACYkE8JPWGOHaviyxTDgAkQAkMUAcDFIMBSmCAOhigGAwo
4Wbu07xD5gw177vZqo64sbtwFDXaE3w=
' | unpack
}
cpu8() {
echo '1-4-4-4 x96 quad-core Android TV-box'
echo '
KLUv/QRY5QcAhlE1H1BnKwDIkoetw1FHvrd6TW5nqI4+EQedzut9ABQptb4rACoALAD72HTS
yk/im3vpzs7kbugyATqUkc6ORAG7AF+v3P8qKK0RiLPTzJzcmE4E9W9C+qMuDC+XM+FLV09h
E+lcd0VsFHoHV7lcXB2t29Uq88Yq8xA2UX5yb77KfaSkV6aEdHbosq+3Gs64G9qYPqX1GiuB
6cKRoYzvB4kBdLr1Je+rShcoKVYc2jpeAaUQZCHItkI6rJSUYZOhzs6B+5oNUHsIDIyIs8O9
i6S3AKF1dhYmDgA0xZA5Q837braqI67uHZjSlgNrgIOBQ8Q8pCcNnhe5YjIBX0edag==
' | unpack
}
cpu9() {
echo '1-6-6-6 Kramses 200 USD laptop 6-core'
echo '
KLUv/QRYlQcAgk8uH1AJrABITeNdwrPRAqt9X9oa+rr/FE0XsNM0A4oUUSIDBmKowyiQcm/F
1bpHYhKJN2Fil2uzj1AMCHmi+/CivJxl8wjF8EIlVtlpUwbbQgjFcONYdrmRTnyRTjxjT4OP
mm/LkVuvCdm5F7OevZiFVEfGPxo2fffUHUZGD5s+s6dxzOYK7XH4DUsn6j6caoBSEkDUkz9B
OTi8hVeAAhjSAFdvXeVIHxAInlxbujNlXkPpyffFqMtbiAIVAC1AFUAfSJgbUAKU9wNU9gNU
+QH1Gq2EwfCdq39vKWe7c6q/wBoyA0HbuS0w7lMlg1sHMAcaacWR
' | unpack
}
cpu10() {
echo '4-48-48-48 Dell R815 4 CPU 48-core'
echo '
KLUv/QRYRSEApj+vIjBLLADDcJR4ZOmSMcbRLoFyVLE7QWmYAUkyhG4uXRgCwJ2sAJ0ApQDz
j2zYCFV5LceJnYZVIM0Qb46jYRWIevMJ5ZWQjNJCjmp8w8bjkeeoRoStN0cvIDkTshH1CaNs
CIZFChDO1ntzcITsMyPCiDSlBpRi7M1xRBwoMI9SSq1JvTn4qbFGUVJkvTkWkLSWbyNOWckZ
HkAvAFQjvnbhBgoEbw6mEDrz5jgmP5UiyXpzQExJoeINGxEDBYIoL8SM2yB4czzSieoDsYSo
N0dUuznWyCIBh4hwwdOxNJ5OR8GA8xeKttona4qP6pVQpZeQPY2P81B457kT23obqtCnrdCf
WheO5eixr3MheBuq8Xfihwo97XTexr5P9MRisX3sr63OnXii9BP0OWFsiP5lnHH3uftRT4pP
lJ7RjamY8Unjtr/QXqo0HkZ6XthH0aW33F+meI70DO2jpo99z23Pz5lKb1jFm+PoBZz2AXlv
jskSB7BxIykJvK9MfOnm6Hkg4pI3x4WYOi5BmhfQHsHdMbUKEhoQ594cbSWti5pA2JIcjm5k
219wO3M2oHd0L3S6nctRQ/QdIE+HJdiT4ox4IaVOYt5GAon4TqngbkB7lmA7VkbQHWKdDpX6
UpSYv5ZS6Xzhbes8MB41dR7JT4V+n4dfCUmHfifkH6SuZ8TLCo4sd0MLOWFLeui4+zQBlyg+
SgvvxKdSB4rylCRxyXvtOcdca6sxpthabymmmFOOYRqzLGxRlKUkK1lqJa29x5hza7WmnHKM
Mcxay6JUU5THJIlb3muKcyxpbT3GGmuKOYZ5bVkcU5S2koQp9t5inFNLa09hzCWvPfXUY865
1dZizqm23lpuMUxjloUtirKUJFHJe+8551xrrTHG2FprIQ+Mt+XbEQyq1Hq8fXpv733fNxdi
ygsIQfqIH6pFZoDlqEGwFQAEQA4AEAACcBMAAAgGEshgGAgBCAKCSSQgOCYK/2sGH+oAS++e
VqS/F4zU7z0u9T1GSvVeu1K9N6t0c0/yY6Xag3up98Qm5T0PSZX3+IzOLfeqIuUexEu952Ap
4T2fk3T3ICSle8dR6vZaKf29IEi/53FS7xlISvesJW0mAjIpo27dS5JU7yEm/T1VkH5vEJK6
vYOlfc9AqdxjqzT3ZpSK1AAym0h99z5VpS1TIwAH5ABuGkB5CC7/HDKKQAjgbgBaw+LsTyLv
1Z/UMvrTdJ7On3T45E9q/GnKFP7IHmOV1p6oStVeqErXXlRKa0/USmsvVKVqL1altScqpbU3
qlJbGwD2iO3o4vIdhC9r3/gEqm4WaLhveaVn2a/WmtxlZf1r5amu/n8Oqy5VPeifi7Z8D+pV
HtHLu3cB1t7Q82P9mJ5lzZxZiTsc5NfnI+/+/t8Hj/tsF7ZZhZabKpETW3DxywH3CuPZ
' | unpack
}
cpu11() {
echo '1-4-8-4 4-core/8 thread Lenovo T480'
echo '
KLUv/QRYvRIA5mt4IyBvKwATk8iUn9xdIuJLbC8JrUxyQsMubiQkFCUoEAiB6BE0eABoAGcA
qSHywcdrlRyy9toiwirB4QyjNF9pL15/I401lSQJQZIYXDA8JMpXgsjHvLXVBcNC0hAoR/gE
hMInksZiMNB4D3iQAFg6FR4QAfCVNjL5hVG+UoLrZlTNV7KALzLnDzcFt8qGle+Ru/CV3HPQ
6eRCKvlKdHZvm5RVjxt7V/dIP9CB7Q1jm18ZH5qxnbX4hfAprfG8fYOofVv8Mj7t+Nb12/x1
3wj9YecrpYYwyBVqWb4SXGjh3Xu4yfkqb4vW8bCjei2+UnrYUcnXIXv1ydceM8V8pV462x9u
yb0vnU0ZfAX8yvPB+8ooO3PvETqcCIN3klFH3xrFeQSxnl+IdfRe9iobT/4+oBnfHrMl+qI4
mO1+bI5PuUZvlKidReeM7e4vsb72PorQITdHu9NZn5zxTNNb3Z/k74Mf62vk3V+2+9t92pHz
KMYHBQUFTcNoGo0GwywMg8FYFmVRFEWtKjcuhEkWT7disoLsqfRBBswF3vU9fsD4St291Dmm
mOYrVblRQh5kDkZVnsxiP3LsbrcdfcTx7jWG5HtHul9efJw39pcIYldefLz2Q+GYgz0a0s4j
3Uh178qXMC8gICMhGnYpKuGdGMVqqIR3FoZMSQ3V8ZiYkhqq4zGLIFFXQ8V6IkZdDRXzxHJI
FKuhEt6JTTFr7sHFkbEspWq3gcg4GEnCDRHCLERgJRyDNg6inUEsukGicXWpWC7nkyOR3f6E
T9+IZeJitNtyLQ6A1ShkK/65
' | unpack
}
cpu12() {
echo '4-64-64-64 Dell R815 4 CPU 64-core'
echo '
KLUv/QRYfTQAqlfIDiMgC6MHf36aIdkoVm9EUO0Fii2nyR1YSqSyqftWBncCpDxDgOwA4QDk
ALuIcRGfcBrnLWv/udXNVcj41r24fphLaY07/TdZvPUX191c+nHf1/Wf68x6VGxiNmswjD84
ZyIczWswHFe4swxMzPdIWKe/hSuJ2RzvCWswjMRsDrSGdRys8IEPTnckazDeqXybmM9g4DqV
72C8BuMPD3QW+Adaxz34CYh5EDiwiUJpDYY/gL+OeO4dzF1IVD8wkCCtBCHEFmgNhjPySfpg
PDxwTq9/MKTZLtgAsQJ4JPU6FWyBBAPWYHh0z6Y1GIbjjIwHpzUYCQ6MrtnEfEeBBAMerI8j
amLAGgwGKlQyjysOtAaDyn9/ks4jyzAuMSp2mQtcZvlfr67+VBAQu8y3y6PQ+hrqc+vC5ZR1
41KXflQY6Ix81l9d5WKzlUHYCh/Y4HfKxf4CF0HxchGveuN0IsiH6fX/5wAd9zCui4tL6NsH
p6sL36j4TXju4I4y49voKA3COfsYN7tQuHWF+8W+u63Pm3JuYkX5/zJevHWx2fb/XyorfGRc
B4wDJxGdNxc+cxvqMzbUp9v4GIWJbhWmLnzK+o981pnyWUbKgzKd7vuq1MfVf+Tb6Ox8Xxm6
y4F9MnPrlEpd+CLGXTzrOO59wm9FbPL/9f+lv2gCzIo7UcwpqcStcUsSlFiCIEhLCGOMJbbW
4l5KKdSqu1OnlNRKE8Fh5m6JD0kVB04bpWl8l/kQEPvT6z9ARIR4Y91Z635dQ308+sE9Li51
BDkPxyUqhQoB+xUum/w7ZRh3KLYGoz4eFcWO94Obe0At68UEEDA4uBVaW2oNxk8Y5UEux7+b
CYviVNZXEisUp/X5/D34K46TePZprU75V6rTT/ht4NxREsvBOBLxThG1mUu9OrDxT7i5Xx/+
O2fkc2YZ+C5h2ce585TlRcW6494r76syIX22wZOOEhW/Cro4W+ez1VEXrSGsk4QlCUEWM8YU
Ymt1UyohnHQzkhJKjBlZCEGIam2h1EmiuhOCdC9ejCW00GKLceLWBdSQYoqhpFgVUIIgSDPC
GGNrLWQppRJCBVbdjVollVRKrFgxglCBWSGFFGIIFRip1pDubsaotQLq7l6cWiug7m7FrYC6
u5uTVkDd3YlR0gqou5u5Ja2AursRI0kroGak2UJQt7YQ0pJEtQRBuhnCWFJsLU7IUgoxprqR
1SmxJDGvhFjxQqm1Xi1JUkpa41ZdSIsRKiDEWkONVhfSYmZmZilx9+KBjqiRnAhgAOQQAAQA
AOFGICAAIkADEgBwGAYCAIKAYAymAAITpggeYgACwQNAwEIftz9McmKBf6m5EydOLu/tYGMY
IBGpV9IBE63T3JCc3AVplFs3yQM33suRBN9v6YVSg2SBf0m3Euv7I+1JMnUzI/GAhX6lTaiE
OGZMssQpNWUkDLjcNEGiiFNcsyW539bf3yGYTAsR8j0D+hgZpv/g39JPr3Jc6ocmHqeaIjHg
8nKzDppygUSJry/JyQX+pRb20YlLSwT38Uj93jQAT2OZ4YMjbmt0o/oI/nYyauQ+bvj2zuWx
mQBhH52/ACgXgPhO5YfY5xU4AKEJIEFV0xDty/srgFsD6CYGMp6fHDK+gsADqEWAXA4hBjG+
gL8EuFWAboboh9jnFbgAoRkgQVXTEO3L+2uAWwfoJmh+iBJXY26ZnxkTP+IDnAh9CWAOBQJ4
fTxJZLjanDMkDrhrDsbEEXcYMYfkgHPN4JgccY4hZkgecJcZMySPuMsMiskB7xiCMcne75+5
pFdGclZ4hEXxmQP5+l8c4H9WkJlkIInRnKmTZaakI2r2CXKLzZwTI65MIr1REifEWozm1a/+
hdI/pI/F8DH/bHyx+eSfdPyTSYXWD/iXJv7+FN2fUsIto5u0PxVw9iey/pCeiYn6y9M9/dnS
Gw2pmzkm5y8L3PzplT8ZrBcDZ0L+qhEff60Qf9YjpUn4owUHf63v968gX+L9YLhh9sDNlXci
ub812iWRwPDeymyS+22cbIokDPesTJO836Npk0gIpHtlbunNKPvkqj5I44ZLIgGQWXfmll6N
NvYIcIIpc/K5NPJrBfkj7Si4maytfAjJm+YcYWAc+VVSROp8G14mGf99RvzHPkzk825e3oH3
T/vHMwUoWC5HxGLJBL8rdMuvH5MVPCZwj2s2xOTH+BCLNk1zycfB1vqgdddQ4DjEbMd6oD/T
/q05b9gEeqJ524Ixfxz8jbBi
' | 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
}
cpu14() {
echo '1-1-1-1 Intel Xeon X5675 (mandriva.p)'
echo '
KLUv/QRo1QwABt5WJBCNWAGjFDHykUWSQEvNjTGJMp1z5pZCA7MA9TKhFAAAEwwAAlEASgBI
AI5SkwOF5Y6KYGPe2WtyYNBQJBYf+BmNhuHwhoUCGNfhAQwAd9Q+Bs8wd5RyC8W3mjtK4tpj
j0usy+2ECAubBNfgjoLaIyMEN7IUd5SM3atRcmcRX8r5ztvXxuyOSb/6vowv+117fpu/0PdF
LvGjI+Y4YiluI+sONYkVxjZ5ddqnVyLxYxEk3OFYFuWO2knrL0SZrsaiSTgYisUD3X0ZZ4Px
HQKCcNJzym+QOcJLougixzkdijF6eOVZuvZ8JmSzYdQ/d9aekPwE7xzTlvQn5Mt2X/b0+PTe
IS25h9M3i8n4kfg0azkT7tuIQfYuNyLyckyaskUczAUc09YSCL9ne7iC6V4JQWzCfTBqjj1M
sxpLoqEozR3V3F6M4sN67nlAmHsv+4TKkb8oD7Pdb5RJv9gYKBAixjTqEIhm1AHKWTCgrkEE
YstArr0BOSgXJ4Xmpu4j9PRpQcgRCckdf4fcSFol9GuGecuj5uBxngHakML8
' | unpack
}
cpu15() {
echo '1-1-1-1 Intel(R) Celeron(R) M (eee900)'
echo '
KLUv/QRo5Q0ABp9XIkBrqwCI2LZJIts7o1loU/RrgCM1Bkm4qbLeX6WzKj6uMAFQAE8ARwAL
JHEgV0hbZFGyfUlxhRq4zDo7PSwsEOTgX8Ao1WnCAxwArpC+BU+AuELIaYsvGVyhh9u3mDvM
ktMJGRSuA1XhCrVVZGxQn4RcIRm7lUXJAdxIyRVy+qh7W4cZjDtZmUOV1ofD60XGIAiTIrxC
jbMozzbmbu1cuGx5XSGVkSXEFeoGrlu2294ttv1gcEJoeIJIPGxfGWyxlEiQAYXQw0KHjdim
06c4zJwl7eT3XO6A14X/5rufaPdlO5g73vsyW+/ZzmjHMY79iY99NXwp5ztrX+FgV/auiy/7
nfW8Nl/b9T13mOlmuSmpCfVps+B6l9qInNxyptxH4D13eULQrbK1NaE+2KxbSoFBSiADCKLg
fbGJS5rL2Omcpyxu7rvh1eh3e2cmwr178WNRVMbZSoJ4FJWTKXcnKADAIKuqBxBI54gcFYp3
xUIMqhrUyHoLjYPwgszI7eGRdSUOFMYQlpP0pOoEAV0WM1zTXUey4OeJUEZtb+UNcgLSAYUj
iyXJQ3TVfIX50ANedGFbHwEc/JQzJup4YQ==
' | unpack
}
cpu16() {
echo '2-12-24-12 Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz (vh4)'
echo '
KLUv/QRoXSQA2kAECyUQTWMdEfORapSl6hpfhdTvIB2fCbydyAB94J9MxTuCiACAvIMbrACZ
AJ0AsZ09tMbz9g9R+7b4ZXza8a3rt/nrvhF6PwzyggEXWnj35HyVt0W7ehcKRhyyV5987THr
pbMZ/cgHndfuHbL2epFg40CDHwuibIXX30RjzViOxaAgKlVY4KBJonWzTdpeNNQLAHjkY97a
RoUFCo7EoG7gCPRDLYqAkuARHiCQcyVcAIQAG5k8AgCum9FYFvBFhriCmwG3SgYrn0KuAvcW
nU4uZBwvAIDO7m2TcisfdGzdal1fZePJXweaUUVXaSXbfdbc3Wv82Byfco2+pKidRcQfx/WR
7d5HsR9F6JDbanc665MzPll6qzsFRwEqImz8J/mMp/zimXDyrNEhT3k357N46bs6b2f5ckYE
XV6JRtmqktWWsz3Cc+vq6J0nLTt+JA8ha73or8OP9TXx7qvtPu0I8SjGP27sXd0TrYAI2L4g
lfGhGe/9MFvot4tH1ATfzXjhzNpLJWgtrW25Lxemq3DjUjiGS3CdsoVtufiufAkpO3PvkW6i
Ola0NhuEq/KMFNo70r3ijX2VXnReWzGBOf004o4t9xh65f2iPjof5Wgh4i9K6AvTsUQvyvW1
77Dz3tR5d0731/ur/IWPfL0g+e7wvkIFQ6zosEe4EAkG7ySjjr4tCfEIYl+IdfRedrrx1RXM
0SyIUphGKSQxKh2KMjSHapLD0iSGORpDWpBDUhTTNEmTDktiGKRJiqKWhCBJWZCUlDKkRKm0
KAlRUpIgTHIkhTBKo5Q6HFJKSTFMYzgckJSOdCyIoWGQJSUFORblcEhSoyTLgjDHgiSJUkql
hlEMhyYlwyiwD5Msnu7CZAMyRaUPOiQf8K7P+dK91DlW5Ub5PMhWstw4NAakYRJ+cT7TMVhl
bi1ktdd8Mb6+xKtQEZcDa4DDqMFgxYzIjEiSgiQFSQfARoZG0yQHYsA0SQAhCAFCcIYihEFI
eEU4FDgnBg/CvfDTFEdfCnzKp/dGFGcRJTBac/VP682IZ7JNS8a8Qlfee2qAsyGbznwFCy/m
U1ALcxbXtKQvWrgyn3pamLNRTRuTMDy3ws1ZhXNbn0zs/KfjswDmAk60ueL78UwnwrzC2pwG
8XKdA8G4QlXzjctfmU6/IHBeOaU+Mi2DiV5xvoW/1lQ9L8N6AE/hzUXgVu/lIk5iDv1pu4k5
RtkHE4KPT2MhGjqcCQQPp9nTTpOA087fSVowhrBufLpp4ppGv6jkrAkYzqNwbyg8FOzwJTe/
uFlcfjE0RytY1n2BzX1wHq3S3EPR87qJk8A3bdEymQU4if9RYRQUH0JH1v4o5Y+HZ4/Jcx+p
6C67cHK/roV6KRX5eh5fZ5zfBAGIcypOQhRdDjoqorlsIRh4MyFFCa/+w9rnqQ9IhTJSxUEj
J/m5uPWXdiT61TaAn85i7vm/JHEVLykNoOaGbE6PZXMCHEOy4iJ6P6vgAOxE/spU7N53w3RU
pvPDpg6++vY602wMoPOM5mjPE/5E9C+1WNOag5ef9fYNxh+A4wfWolSv
' | unpack
}
cpu17() {
echo '1-6-12-6 AMD Ryzen 5 4600G with Radeon Graphics (ai)'
echo '
KLUv/QRoxSEA6kH0CiUwS1sdaPiIsqmQTVuLLykLrtQOna/tY8caFQPfvvvkgYUF54EBqgCc
AJkAyXde06cCxnbefuLRr7Zv8mG3a8dv81d9m/NWJGPGgWDrLLta7q3Iq8+i3saCmbNccbml
i/NALHx6KM3SarXOUlc3Gj4KJLiSHCKs/jaaeiAIIgBBDEkEBAsUkCTx6IO62pEo3GLe2Efr
ajjhgbu3Khm8iYvxAwiCMPxwtxEaDL4t3REKANiq145FabDVkvmC9TCwgICu6LaJCwJqIfiU
W+dAPgAAfN2rD3LJLXyKYNTHL341PirGIfQ7rTOcfm80LrOQGc+p5dvtFItlr/ZsKRNQm9Nv
aCqWIW6IaZJduYQKXhGJk18n+3lvPjrlx9+kPFcSZEAkjz4b82X7xeVe+4JaYIvGlL8cn3HC
NwYu55Hi5874uav3FIgXougytnv6xs7aUcEnRbKs+JEfis8+7oyldqMfmyvbfdgP86e1N71g
DNMjlhgOcq7LySv2ml7YRIYPN7LFbC+S37FXd656uupqdTbSXS5TlLQ5X5baSDse8YLuEJy+
AxN7ZPeYMK/MeuW49VxifAFZwcPIcOH6gxuB6WMs44uopcYL1Zc4Ka7iuS6HsuknBlPO1n9U
Xu12oragV3hbX0lWS9/O1IpmWnMe+4kbpvVM7SrFjM2I0bDSLwzF1CfWP3Elo10Z4/RLkiSH
REEhQeFwSCxLQpIgCMQhSQ6HBRFwQCyJIZEwLMoiAFmSZTEYFEVRkuQ4HhgeLImDP4gWFjKI
YZbRvMVzjO/4AS7b4TIeHywXES4nwDuu9IShe6FSGd02ZEAcvYrkJzBcSUCWAgoaHAqJhObV
nuKl4zXsp4YotmYpLnx3ciO92EhJYHzDGBN1o7iwG71IR2rrw6e66DtPFyLGYwxc510tXm1x
BqMiXW5mKZyrfKwFgKGowTykkDGkRkRGZKRJOoBExqg4GQ5COUGLMEUERrgzJMbE/0wgQaYH
7rSgB1fM/kMSWx8VlA5S0OKNuWI8OR/359dtGFxgAconnVldLp+9a9V7SFk+bs+OtlyqzwrK
xcHda6arrSv0SUHpjILKezeeFaB80pjp9b4rw/lQiyR/K5yP+vP9LYeOwRWAt+ciFnSiLUur
rq4cAM/MprXU19jHLpLvmiWBe6zHzaIqO1sZ35yOXlqIa29j88LhLeMSOPNflUdcL2cNG6ti
NPWjEbKXtIVeflMMLyjsWLuCUcxPFBWGmna3DgpIJmairUxU9OPb1XINMjCrs+PJbgrQARvc
19rY5t2tN8ulUxMyLr9RA4/vay9o8CfTq00/5AalMO6Kxg8B8HlNZ18ej/83Xw8IP+brlaoW
nemRDRyMrTRoNR6FdbT66kV1nQt2zfQ7krZmj6IJ9/O6aXGMPXcancqeawY7QJtwnNUtOMQ0
DPeXb9dzDOgUh0ST3w==
' | unpack
}
export -f $(compgen -A function | grep ^cpu)
test_one() {
eval $1 | head -n1
export PARALLEL_CPUINFO="$(eval $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 | sort | parallel -j0 -k test_one
rm ~/.parallel/tmp/sshlogin/*/cpuspec 2>/dev/null
}
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
}
Venter_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
}
cpu14() {
echo '1-1-1-1 Intel Xeon X5675 (mandriva.p)'
echo '
KLUv/QRonQYAwsolIjBpzABoi2gVcBKev0FN8WI7YcCuNoTmTbB1dAmqC8N6MAf9xOhcS6B+
oOLc0Qb145avJCV9NqgRCTRE5ZAsLCJ3UOm9nwP6Pbd+2qihgkUvysD6XJ2vNKuvSDiO7aw/
UJ2JJoBuk5QfQVrssW26Wen4rx+YManHlUC3TAuQBw/M+Gkv5FqfpKYfJIAxwZfHWZafaSUx
ExcgQEik8g6fj08zd4EHssVA93AJ8C7xnA3qlYxXshyLBYN1XHECyZgjRUkKjzkkLOUQtuV4
YQqnBNP0ggo=
' | unpack
}
cpu15() {
echo '1-1-1-1 Intel(R) Celeron(R) M (eee900)'
echo '
KLUv/QRohQoANpVBJCDJVgAHS35yk/0LNr7il7y4NiXZTi5J2xh8EMPkH0ICUAugATkAOAA5
AFDzg//KBxEyshyKJFqSPScHvrD7GRyq62rk2xnH6ldBJBQHNqybEUHnKZJoMR7GO7S16rb9
LK0GBJfkrAs3+uHAsJHJKw7BdVNajAx8kU1wW0JWvkpugQDkdTq5CcuZ9Cq0yVtntJzZXpc6
ttWCsJoH7dvil9FXjm/cX6Zf942XV3RiikGCtXiciQQiTWo61iLRADRNY+EhPZR8lG5P1sJD
appGnczbZqUB6zW9exVt564cI78V+thnfmKZXxkzHRPjH23s3O4WruAE2y8ztjOKvtaOp8tv
j7I/mB0gQIaMujr8eNMPYIxoDLDgY+WX46hwjTmVzU7HpqEtYHxLTLzqx8jKta+0nIvY4e1q
oiCpQLqitFXU0Fyo+a4q4SvbmVMCr0burQ==
' | unpack
}
cpu16() {
echo '2-12-24-12 Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz (vh4)'
echo '
KLUv/QRovSMA6kiMDCngcIhzFH4Td8ruJqLZFq6rg/LAmM8J4PRtw8ZYAfijNgkAOE2YISXG
hNQAwgCwABJRul4TTmKBFGhoFCDgoDw4TGQkJUx0jAYGo2lUCw5oIA2QAgwz4WDSRNHtalOW
CQcNGI6G5gfeoM5oHs1iwIIotcIDQABQuOIbT5ucLI/Kc3BB144OGt0UtYECh0/ZokrEI5hM
iLA0lOXReoFJ1ikTLI1kn7pt6ZQilkazYDS792t0bxElLI7mramnoyCOK95ijivSnts9fzhY
JxyfWWdrCJa4XIsLrq/bQZjapoRrVySL43FFu2fRNAIwAG0SLlZ+wkOCxfFwHpDqEZ1TM20n
sYkgc67nHO3KwAIqK9lUniIMdZ29UDKm/BbXX7O5X456Y9cuoVwp1+tNEea1lec6ZfOZLqWp
vqcVIqJvNV866JBBtn5qgKdC0PTMpS/BI9wm+qhHTChXsEo8PehvuRYle4WJBE+losMXRDzc
ANQMBNZo7TWapC8lcu0mj0wkHjjJ9Zvgn9cOTZspBK23jPAWLv7q1T5V6tXglXbPPWtqfJME
hFEwzOLBEGAWDaMYsGCcwWhM3jiJe3AHpKESW+yNgbBUi4h3PFi7HUPD8Cb42N7F/Xpz07KV
8ZVIPrmyq7+V8U3KyFmd537Oj+6jhNDUdSQ2l9NxNcP3Zdxt/okY3bav4t9bjCt8ffaw39KZ
3yjzJ1fQKwjvlq1ztz/2R6PXnpKQfUX7ORt+lc/crkMqdmXwuvaT4Rn3lffarpD6tNAjHK3H
INJTPussVni94ohn6kLycMVz0CUUiAjKFRQYOBQIyYPEIbont2kXF39qRyf3jsNTXUtjnsOc
Bs+9j2+ur+YOp0rddmJMsvecXgkxsDOc+mYV8hvGwefNk4W2lNfDEUNvy2luqffqlG5upQ+6
g5F6BtmWxM7cfvOffdx5Pu7tYX50u867672+KDp2qOj+rL7ftCAHPuvwOZC03mzz7MFAr6h1
pRZXZ12fCl07bWlzOrKVe30oCZvqDeM4lPmLtTfH9pC1/dyu/mAq9gWhR0/jN5RZ+RWk/pY5
3D5luyhhgIsgQIQYg8joAUWIgGFyHo+2H9H0VAgUhrODQJiKFAXV8DW+RBm3SVsDCbC8Bq07
KGXGx0zhrEhoL0TC+UumTeUY9jUCrBkKh/0502187xaJLlwUWm0uUXXytESfDgGEb4NkqRnw
hh6SeWGWHUwwKJLAJgOwcJUAICETFDQ9MStQHwsQlNeVyIXBLgwRq/f1bAUN4i6zXZkAGNbF
r4UWmZ8oYXG08h4R4SqgQ6xUaE5ULo1bw9Cx8rk6OS10SMFLxNtSqZeTOx8HMOMzSrwtUXV6
BdvV5WraGwmfuVpoygqX6zRBbFeLmaObBRLPgJFBqKCMJobTUMYomLcjxSwECvUOqMBBukMM
4bbPXtAAm2D9K7ytqjEnBktqmyprOEzwz3FpK3A7w6IQoSGMJHxRorxI5ZT116mlsbsI0wBc
tYwCxsaqkbWS1O8AhakwClACiAG09g==
' | unpack
}
cpu17() {
echo '1-6-12-6 AMD Ryzen 5 4600G with Radeon Graphics (ai)'
echo '
KLUv/QRoDScASlLADSnwjGjbQLXf7SEiYhXDl17bzy9x/Sd+rgMwdzVDfBFY6exTLCwOI7dP
BeMAxADHALmu6P54Pbmv7K7puqJDzmEKqgUMAw4FJhIRkkZpEA0NtgwCGBgKPCIXDSS34Eqq
GmTa3FrzSzKFLPQteITC1jntCaMxYUBaK7KxvoaA4Wj5py6hvoeCATHwh+OidqHDuY/Dx+Cs
acKJP72VM2BggDScwJleXCauC9mVpiZhJJA85DbTp6GHBBF/LTGdwGg0FhiaV/3KVi2wCAxH
g+EmpuCquvfB0/QiXPsCwVAI9dtIQWEuXx53vkMD68XymfWl9MBogFyht1lwPAIwAE1tLbh2
CRIIGA0QBuJgeUQf1Km9T76HTGO+cXlLL1bWUynXvGH6WjKvs7nW1+x3qryXbQWfm30l4vYn
Wx19rtJYelyZGWUV8q7jatDh5Yr4l0SKKsYtxnlQPTF86T0hjQivEbLlrPhm6Zq7Ng7LHQ2m
AdKw5HE5fyi3XtbWLZKFgpZK92XuyuH7cp46ZFJb9Gkhl66xK9fYU2sUxuljmmEza/ml7pI7
vTeUhrrk3q4xbVELu1KYfOH3c4cy/7HFuWWtPwwpR+Uhj0b3qK08Utzf63Wn/FyHd7DkNY4N
wJp7CIBDrIM7DOiTmE+NB4wJC6xt48VOYGCuTIgftdTHVJpynkbtad0u6Op1MqmOnaVET9jU
ipjouRE+qfawvqcd96et1lGG0J2blxk1tdT0tIyX5gxVJdPkiq4KkxnG7WOviPjRa9TbsTc+
fDqXTxHbxprKoefS+2v39O3b0wuVTSns1sxqloMyWyNqWimW5zIGH35TUelw8S0Jn1Q5vSOz
LPIOp4vvaOxqrowNU9hZK3ozv2aPzXpqmK+NzY6pPC7lHyqRfq3BJ7sw3sIUzZtE6AKExBXU
OoeYTFyBtQW+YEWhgsJNrOUhrsDKVjXn6GXIf9psmzvD8NN9D5szxWGFB1xcy6ccaUTX1261
TOUnhledzx034k2HmFyjbVQQo7s019eaKRRMXB3kSEVi83uqm6R2e+4SEBEUEwrJ5AcqGPT0
2YNa35OyxdcM+gHK9kqSqmpaJyKqsPltV4RVWmqlj3CSON14sM+2gtYb1RFJO9Vx8N0gKLeQ
j43pT59GBr/0qm3wKVPQGRo/+4NEAgSHw0PyxwOAmCBQhAwZGbcBSJYmAyLVG/5ngAQMQSDK
NQS2pztrYwEu8wFcfeyBYD2uRC8cu9AcDJpOjLQh7rL0Fa7gA0e/PKc048NKtpjWvTy15IMc
q4uFsqler/RyxCH4EQ5D3JoKmIAzHQMGrkiUOpngtr7yKtD1Ck60jerH1Pl5YDli1yPO8eqT
dYGslS4vjnB2tgEI3t9gKaN5ajSqBQofOAWAYQioyBfyMNvbjJC3koCWTuO1A+XEl66LWhlg
zo5pwC8w9OjdaAMFpEBr8cSA+xrfFV0kAXQEhFBoqWCE5A+s4GostEFs069Tkyc460L7alvL
t0B7CQA+l6gZpkZywzEQATxYpIrZvtZvFY+NmLQ76NZvhd72aVyhHWrGgMXCoonW7dgxy4Bi
wCsuGJB+NTPEBrEagkv08IyA+ScYD9t1ilA7hp3bMj0LvwaAVXZjIVR3U0thpwhTAXBxv2tg
gAplMV0DrnilFovCKIxyldJcA2k=
' | unpack
}
export -f $(compgen -A function | grep ^cpu)
test_one() {
eval $1 | head -n1
export PARALLEL_LSCPU="$(eval $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 | sort | parallel -j0 -k test_one
rm ~/.parallel/tmp/sshlogin/*/cpuspec 2>/dev/null
}
par_null_resume() { par_null_resume() {
echo '### --null --resume --jl' echo '### --null --resume --jl'
log=/tmp/null-resume-$$.log log=/tmp/null-resume-$$.log
@ -1316,20 +666,6 @@ par_block_negative_prefix() {
rm "$tmp" rm "$tmp"
} }
par__sql_colsep() {
echo '### SQL should add Vn columns for --colsep'
dburl=sqlite3:///%2ftmp%2fparallel-sql-colsep-$$/bar
parallel -k -C' ' --sqlandworker $dburl echo /{1}/{2}/{3}/{4}/ \
::: 'a A' 'b B' 'c C' ::: '1 11' '2 22' '3 33'
parallel -k -C' ' echo /{1}/{2}/{3}/{4}/ \
::: 'a A' 'b B' 'c C' ::: '1 11' '2 22' '3 33'
parallel -k -C' ' -N3 --sqlandworker $dburl echo \
::: 'a A' 'b B' 'c C' ::: '1 11' '2 22' '3 33' '4 44' '5 55' '6 66'
parallel -k -C' ' -N3 echo \
::: 'a A' 'b B' 'c C' ::: '1 11' '2 22' '3 33' '4 44' '5 55' '6 66'
rm /tmp/parallel-sql-colsep-$$
}
export -f $(compgen -A function | grep par_) export -f $(compgen -A function | grep par_)
compgen -A function | grep par_ | LC_ALL=C sort | compgen -A function | grep par_ | LC_ALL=C sort |
parallel --timeout 1000% -j6 --tag -k --joblog /tmp/jl-`basename $0` '{} 2>&1' | parallel --timeout 1000% -j6 --tag -k --joblog /tmp/jl-`basename $0` '{} 2>&1' |

View file

@ -8,6 +8,713 @@
# Each should be taking 3-10s and be possible to run in parallel # Each should be taking 3-10s and be possible to run in parallel
# I.e.: No race conditions, no logins # I.e.: No race conditions, no logins
par__test_cpu_detection_topology() {
pack() { zstd -19 | mmencode; }
unpack() { mmencode -u | zstd -d; }
repack() { tmp=$(mktemp -d); cd "$tmp" && unpack | tar x && tar c . | pack; }
export -f unpack
# ssh s "(cd /sys/devices/system/cpu; tar c cpu*/topology)" | pack | repack
# repack due to: File shrank by 4093 bytes; padding with zeros
cpu18() {
echo '1-4-8-4 Lenovo E540 i7-4712MQ'
echo '
KLUv/QRoHAsAMk0mHWC1cQMAQXg43q4Vap89AAAg2t0lEnmtAQSEjEgBuozI2UgR9pHWQngK
UfLvBgNkXYcUWANgzlhLksiMpACVFKMlxdyBoBzuH4wVNf////+DNYGsu9jxACIOmi8qcyr2
VfXPsWY4Y1lN8enTCG1xQJKWKMlrxfx2gQyKKgT/Qgrp3ZglPWf41zw5MfGL8iTqruZzO4/Y
+EIQQ6CBmdKUxKC0WjPxHREMiWQkoKo7/XWAkGfsKr9OCaDqVAANMEBgH9mALjUBaAMWTA3I
p9MAD/jUHrIBUfUMMDmtwGw3FJAlZAHuHzs1ecDClAH4j/ZPIPoaoyYTGycHGCDoH1PVBxQm
D6eGIDdlgH2SOdU8IE8dsCeY/wFy/2RUmKA34QDfT1btMe0/ZseAzCMr/ov9gFFnADBAHKD8
BCjyBpgCQHO0WFkAwM5sJqtVlUD+A0wsE3rcMFDlzfe5NYAA+dSJAeQEANBjb3I0MjUxczUy
NTMxNzQyMzQ2NTEyMjUyMiSgQG8HYaHQCE8JFPQO/QF4sgGZeoiUAGw7sgGbOojUaFaBACVt
QOyrgAyQDSUAD1jaSYa6mwJgG0nAAIv1RDYgUPMBCyb+boABgr2QDSCk4hKrCHjA3J0xVPEB
LJQMyG8DDLCsD9mAZbU7oLFTSUC/JzED3IdsgMXV71ONGjTPqnwDAGAyMjI1MjIyMjIyMjIg
6LFO/Ew0swcR/P//P9cM7w78Gy4bwIZDFgAPsgFLB1EA2sgGWPZBhGnxAHoTMgH4ywYoEh4h
AMPIBsSABFpUSAKQSDZgojwsAD7ZgFSFQABc2QB6+pEAsGUD1iXgCOd3TRQEAJgyMjIwNDAz
MDAtMDAwMDU3MDAwI+ihWvxMMIHZARH8//8/2Jygdgf8BZyNZANcJiE8ajGAw/cw5bQYYFd2
GABR5kEIAIHZAJv3AAD8ZTYgw4MEAFjK/S+AsZINmDAhRzMQhAYQHwCjzQZMsg8IAIBsQGwI
CEAhG0A4IICAOv0hLxw0AwAoMDAwMDAb6MBS/Eya2gYQFOH//9+WaSwO+wHMPAAkAQMsFrIB
CZAkAItsAEEMkaEWD8i4HkYArrIB9PEDJLUYwEAVbDTAA4Rh2YCV9gAtyH8BqbSyAd0Y6Azw
gA+2bEAoJEiAOsB8BACINjUyNjM2NjY3NjY3NjY2NmMk6JGt8FNmptQDETgE////YjYa3QH9
gcoG4P4FvxpggGDKBkygAsQGeMDnRzYgDGSALEQEzn8C0soGODsfSwCibACx8AAEYCobgF4Q
IgZIIRuQ+AECwMwGDMWPQQAWRzYgLx5VCoAHGK6yARzQA4K0ARitRyDa/QATcD7AAzwDAHA2
NjYyNjY0MDQyNDQtNRv4EBTh///fpkFqHPonRNkA+KoPaNIGJHsfMdqAAKQWDwhLA1iXgAGW
h2xAPMQFIEI2gOBBMABOWTZA/zxAARhPNmBRHy0C8F+AF2zZgKdaATSA9v40/AIUBABoNDQ0
NjQ0NDQzNDA0NCS4YB8RNAT///9zyWDmhQP9B2QDvBkg/moxgLX+ES0AA2orkw2wUAZaA4xQ
NgB3FKw0wADBKdmATgvKNsADPgrZgAxIFQDGsgHOYg9TLQZwuMcMAGk2AL1/jAAwJUMPLQC0
sgG2fFwBOFo2wFDjYQT6d9wXvAIASDQ0MTQxMTExMRr8/AWYDVA4PDoARs0G+L1HXABe1QZA
NIq/BcADaqiZDfChekClDbioCoGWNuDYfHQE4JDdAKwEDLA8ywZIWB4pAHOyAYQB0QqAavEC
DAQASDE1NzExMTExMSW4oG8RNAzh///fi0bTwgH8BTAbkHoBYEvAAMtHNiAA0QIQlQ3oHIeN
LR5wRh9FAFKzAW1nR60s/+eyARBfwbkBlsoG5OECVAYYIDizAbhvwfcCPOBDZi0kaAAM8EHV
bEAN8sMqtRhA/jwCAVhANmACObbv/94XLAMAYDc1NzM3Nzc3Nzc3Nx7sQCc/k1nw/SFANiCB
aAFYZQNq6EcLgKc2wBlEoQEgmQ0wQXpUALBkA8IQFQCX2YAheHQBGJUNoMYf7gLwAIuosgEc
OA+MtAEXEX4g0gYcqx9v9Geq0gGsAwBgNzc3Nzc3Nzc1NTM1IOhRnvh3Zh8RNAT///9z1Wh2
B/2bywb4oHiopQ24qPcQ0wYc2w7RRC0e8Ho+IgC6bIAzxMMFoJYNcHw/VgBeZQOCQB4sAK1s
gOzrUQFYzQbEwR2aAFzKBgBKHloAUmUDJvjRA/19vhiEAwBQNTU1NTU1NTU1NSDo0cbfhBPU
HRE0BP///1NVwQRtB/2D2YA4BEcKwHPZANz8UQGQygbwYh5AALaRDUhBWgDIsgE18MMEYFAb
4AwoeAAYZgPQ+9EFoJQNUJg8LACDsgE29OACMFg2gJp/OFb/RAsU/QEAKDU1NTU1EOBQJ/9t
6f21XxYPuNOdB1UA3pcNcIb6I1UAvCcbQKgGQgnA3csGBKGqByUA1C8bQP/qDygC8AUI6jiN
2w==
'
}
export -f $(compgen -A function | grep ^cpu)
test_one() {
eval $1 | head -n1
export PARALLEL_CPUPREFIX=$(mktemp -d)
cd "$PARALLEL_CPUPREFIX" && eval $1 | tail -n +2 | unpack | tar xf -
echo $(parallel --number-of-sockets) \
$(parallel --number-of-cores) \
$(parallel --number-of-threads) \
$(parallel --number-of-cpus)
rm -r "$PARALLEL_CPUPREFIX"
}
export -f test_one
compgen -A function | grep ^cpu | sort | parallel -j0 -k test_one
rm ~/.parallel/tmp/sshlogin/*/cpuspec 2>/dev/null
}
par__test_cpu_detection_cpuinfo() {
pack() { zstd -19 | mmencode; }
unpack() { mmencode -u | zstd -d; }
export -f unpack
# ssh server cat /proc/cpuinfo | pack
cpu1() {
echo '2-8-8-8 Xeon 8 core server in Germany'
echo '
KLUv/QRYbRIARmlzIxBtqgDhSWTqT86MkL9zqf+EhavXzwbElKKZVR0oAgBg5J4gcQBiAGEA
sLnXDwczA4YzTNLcWTvx+utwzbFmQQYUDEZyZ60JhQYkubMk+Zi3NptQSECQAeUFvwJhFAiH
cDh4wAOAnBvxgAeAO2tjk1+UO2vBhWZkzZ31gC+26BM7BrfKhZVvkptwZ0HvoROSSzHkzqKz
e92kzALNss2vjU/N6N5c/Ep8Sms8b5+gcl8Xv41PO951/TZ/oW+kPnF0Z62WGmQJtiR3Flxq
4aE3sZPzVV5X7TNxxHofd9aaOGLIncP26pPPPW5Lp/vEbkHvS6djzJ3Vknyw8ZohD81Bjw7i
U67Vm6RyX7a7r8T6KlKH7J6GTmd9csYzTW+F/iQfmlN6eOm7Nt6N5csZI7r8OBxtd12fKltt
Od0jfCUPYXP96G+DH+ur491XtvvbfdpV9CrGP3btXaE7eoIRdA/MYrEsFE2jNIxCkSgUhkES
ZlmWZVEURUGSJEmYU+XGlZps8XQlJjPYpkofxVzgXV/jBN1LIagxprmzqtwopQfbw7AFMoAw
GMud1fzilGaDPeqj81GuFkZ/UVKXmFBz9EO5PsIncjT4pVpXTx5mux83IFADQJsOKpW46nns
Is7U2ZTFVYV3C3OmxEovTmU8sZyTYlYqcdTzmEUsR6PYOlV4tzAnSqz04lTGE8s5KWalEkc9
j1nEqahrvJxROjsHSSvQhQq1tpf4zCUJFtpLU3TfUioW5HyRY49kj+F7XHNrWzFtIuMXRNui
cMxHAZLOSIU=
' | unpack
}
cpu2() {
echo '1-4-8-4 Core i7-3632QM Acer laptop'
echo '
KLUv/QRYBRkANvyjJDBtnADAQSgjJ0We2YiUIhYo1GYrjfN9LZSRbXi0c1gXhgBQJaUAjQCQ
AFstjEt/y7WLjrldy3NJYZ2SHbJMae46JVsalxR2RPcoxwvjbzHHk8cuBwx/Hia6pGiF4+uD
LbZEjWjxPA9zSVEqFBoYjYRxSdEmmZzMwaXgkuKIbleblwqFBEazaG5wCQeENzw0TuQMELgH
NEQA6JQID4AAuKQoXPEN6JKiPG0SLtElZfIcXNUhy5anHRc0OkjUhEtKc9OULWpkYVxSpmRW
JucuAfLJlS35WxnfpHRMq/Pc1JnSfZSwmrrTg811xj11XM1RssP3ZdxtXhL/3mI84Su1h/1+
nPmNMl+ZP1lSXQLh3bJ17vYHQ1712CNHed9rH5GQfTF4deznbPhVfkPCrgxe134yPOO+8l7b
FUYO2eqSorBjvaVYHOaS8jSi781BlkXpepVJdIJstbBOLikKJA6u3txG3quftJvSzZXoq+5g
jJxCtvXgaW5/Kdd8ail3npR7o5jvek+tvh9kVRN8U/VY7y2u2eZZxFSXRNY1slhy1vWp0PWk
0b22tE2M+x3Zyj1zuxrJG2Z6lPnNsT1kbT+3JY8YCbujzPwG9pv1Ehj5WzZx+5TtooR/ItZu
n2gTDwIf27u4r6buWtkcZfzEEQQETgMtGA5BFDlQg1k8EBRBEEMALSDoeZpGAbRoGo/jNAWN
RcHjNA3DMNCCYZ6GYSDoWTCPwyxSR4XqWHHBT6WQu7wF6ekijecC53bUI+eSwsw6W1vLE11S
OiqMDvfW9CxPs2AUOOugdEhqqZp5Z147oSadsnlqmMiks5kuP1LI1k/hBFkGoZbGvOnc+/j2
veb6au5w6qPbeyWc+lXIV14UBzsgIKMZ0jAPK+HdMhUFdRtVjCeXO5JNULexYjxRJq2g2EaV
8O7CRoIUlGysjsfKBCko2ag6HruIkWyCuo0V44ky2YRS1xX8jOLIPpdShdsmd5zFkNBhyRjs
jWqiDxsGiQbeb74N2hniRTgqfc6PK/sOQHV9UrS1UtKWyvnmCMjuOeEbaVqYTWLEy8KHcwab
fNdt
' | unpack
}
cpu3() {
echo '1-2-4-2 Core i5-2410M laptop firewall'
echo '
KLUv/QRYTRUAdrWRJCBtLACzSvaJv8mdRORLLoVMJ3pdprIRArYowWEZLgRCIHoEDZEAfQCA
ALM94qbc+9LZVuOOaol8MPJ6MQ5Ze00x4WWw8MXBYO6orXj9nTTWluJ4LCCQRrmjVEUCA1Mm
xh21brZJ24vLcUdJ5GPe2qsiAYHBLJYXHKLh4AwMpbEMELwHMDwALJ0HD3AAuKM2MvmlcUcp
uG7G1dxRFPBFBj3ituBWqbDyRXIR7ij3HjqdXGkx7ig6u7dNyitytkd4bl0d/SQPIWtN0d8I
P9bXybu/bPe3+7Qn6FOMf9zYu7pPOoIQbG+YbX5lfGnGdtbiV8KntMbz9h9T+7b4ZXza8a3r
t/nrvlF6xNAdpVrCIE8sRrmj4EoL717ETc5Xedu0T8TQ6qW4o1TE0GLcOWSvPvnaY7aWO6qX
Bo/wgSYMfpLYV2I9vZedbnz1WfmgY+ue1vVVNp789pgt0xflaWz33Wv82Byfcp3eKFM7s939
JdbX3k9ROuT2tDud9ckZ32h6q7uEk4BRhI3/JD9iiK6E7SG6zLO2nPIUkgknzzod8pR3c0oe
XvqukXdk+XJGiC4/k0bZW9enSlY7DONoIIvFQcAsiwJhIAvHY1EUAgZj8WiU5VS5cSVMsni6
E5MXZFGlT3o0LvCuL/KGuaO6e6lzbDWaO6rKjVLyIHsazXoQLCAPAn5xSmZkLYr0LK1tuS8n
pqtw4xNxiyKrK19CfmWUnbn3SHdS3StP91h65T1FfXQ+ytNC6C9K6RPTsUk/lOvp9mMRj/AG
JSDQIqIi7LRUwrvFZJLUAVuxPLHcLdUEdcBUDE/UqSanrs9zRmXkcaNU+bZlG7hrcxA2mUBy
T8tuUnd4augwnjSRdwOqb6To3FJWLMn5yBHIbnjCtm86kCEx8rLwgZ4B68GiZg==
' | unpack
}
cpu4() {
echo '1-2-2-2 AMD Opteron 244 dual core laptop(?)'
echo '
KLUv/QRYvQoANtlJIkBprACDMMQtkTstiphu+tF3RsomRkcLaiECKgDo7qgtvyZCAEQAOQCP
WWerZUFc4QE7AaJ0dHLCDRiLr6TL4r9SgsrIVQLJV2KAb5n7w00ZMBbtzaiO+Sy+EvMajmSi
Qgr5So7s1iYdVgErQYUUnnkPtyjfZG2RNh52qpXhK6WHHVvZHIK4CR1Kxq/UPAsN6DFOFSB8
QWjD66ujsaYGFOWgQBTJV0oNBwwk+UpNDE5H7tHuHf1AB9sTijZ/Mj4kt521vTZ8x5l71n57
zK6I2rXtlfGd3ree1+Yrc13oD7uvlLphkB8qeQvBIZEonvPMg848955fM+pqwyLbO/qQrJaE
GlAOBElC+UrNb2UjF9SM9CEjo3zhZ6TR7qN4CFlrhj5Cu6/dDxAAAieJgnrpvudbNgNUIOzA
MqSoSuBmxjF3/rkp5oAwr3m0DVcImxgIDpyVKKrENj8=
' | unpack
}
cpu5() {
echo '2-24-48-24 24-core (maxwell?)'
echo '
KLUv/QRYdSQAGkNoCyQADcMCI0TLks4mlR/lnQWq4v01q/9MCZihKMz3R7P+/yfjrxe5AKIA
pAAKdnLCyuueNSgYcfRSeGMYCkYcyJs7DVYooYPcjoTeGL10uivYGQ9+6XTHSm+MTkjoHGAf
yJ3mYFNY4MMAgyNJQdQbYyvA/i645o6FGAIMk6Q3hlFBQYNkIeiNsW+6SR2Mx3pjJCRk3tpH
BQUJEIVAeoGnxRUmSQMYgkNwcOABHgCQcyM8wAMAb4yNTT4lbwzD2TfjkbwxKDgwNsQV7A5n
q1ywEirkJnhjPGig88ldHMgbg87udZPyERXKGb+S3vou4UlwFNFxfCj5CkbQTbQ9gi7zrC2n
PIXEdCbP+vzNmTDw0nc9vA/LlzMi6LJhwdF219VQZastp3t0zq7roz8k0PLjP/KO01xT6O+B
H+vrwruftvvbfdoP4k+Mh+zau74vtMJBOO6J2ubXxl/M6N5c/Cb4lNZ43v7yuK+L38anHe+6
fpu/7xsXVzDijWF0ojk84VDojeHsYp0/GMdK3hhVbpQJ6DRDcqSFAMMo9sZohnEm5uHoSPe8
sb/dDp1oxB/kxSvvKVRIJ6T8rIM4jHLxCfO1hTZQrl8Jncl16WHlR7oL9b0rXzr8yvPA+9po
e3vw0TEgFprzJxt99C5BiD+L9l20ft7bTjfCalgJndf2GVzXV+l48h3klp4nZFjb/ebeH3T8
6B6fcn2eoMddbXc/xfra+yf2n7i4w87Q73QGDGOYojCFJYwxxpZiii3EEGMUwyxJKYbQQmsh
i2EUoyhpUQohRSmFEiUpibHE0lJJJaVQQikphBikEFoQhRjDMGtRFKUwlhKFkIQQsha2MJWw
hKXFFkMpscSQhDCEMcyyLEtKTEEWslayLIolSVprIbUkpRCEUkIpIYSYlNCCEKMgtCQIMbYs
ayWJUmullBJCR1Plxk002eLpTph8OE1RKVws6wLeFR6erDdGdy99rwWA56ixqCwgIiKDAAhC
MCMAACxsAhKoQBgGIBAIxsEIwTkOEfxPwgUfLJZYP9vKZrhEZep2u7k7XFK1ZLTlxfNql0Dp
yIyLNj3Wy9LeMRJXK8cgHu09Fq1Yq8b0XW09VsBqLc3ckYn047pXflSABeQzkYdcPcePl78l
oEW3htyWDCvcopK7b0uGSt6uFhO7XBKlKikuaCWPOa6tcXOiBR1jXNPFta0FfQxn6O1mJGr5
2Luq5WO+pnaPdalaeiyWdukXgH8mpTAUl1kS47K2M8j8mHlcElJyq2RtiZDCbSm5+7ZkGJQZ
l7eixcwul0SpiowL2tRYJ0t7x0hcrRyDeLT3WLSiVo7pM9pyrIDRyjFUlvv8H/M+JvuQKzUY
kM7MMXFBQ7TYyblwJnts2KkJO02wk27ZTOpjv06V+jple920PkaXcca67lrtscV1V9y9WuCx
xLUirn8t9NjMkJcZXC01dpO13hjFq01jyqKWjd272jEWZke+Xv7966LvqzZTC0zEIma1yNpX
ketyZer/0g6AFe7sFs2nePnngUV+Cv9cPO6zftzOuDDzXMWe+8I/vwr+ll9K
' | unpack
}
cpu6() {
echo '1-2-2-2 HP Laptop Compaq 6530b'
echo '
KLUv/QRY1Q8A1iZsIyBvqwA3o23SyJIQjJ06dkMYGMYDOkA5MLcI3iHqFTCAyKAwaQBhAFkA
BstXShcNEAYKi5SvtE7UKLU9pSxfKQIb885WFw0MioNgOcKvKEpj4hQRCl8ZFQYcgxYeIAEA
o1y3Cl9pH4NvML5ScuvEp5qvZOHaY88hVuV2QoeFDYLL8JWc9pDRgTtRyleSsXs1SlYBy/iy
37Xnt/nrfN/kED9fKXWEOa5QjeUruZ2su9MgVhjb5NVoHxA/qtfiKyWIH6V83bE2G2zamK2M
eog1Oe0royrGV+oIbA7SWil3TFtbSFglPJxh7EXrr0SZqoVhCAoOAjudN8h/5DK74wjfE/KG
LB/G98jlh0Qlu/Z8TMhmw6h/7hG8c0zbor8Q/pufknefsd3f7suOnkfvvbGy93Quacg9Tt80
tvmT8Sfx6Zm+b4Qv5Xzn7Tsi/ep7y7Isak24byMMsne5FZGVY9CUbeJgLvCeDfKme6XjMMU0
X2nCfTDSHHswjXI4CJSDgsZXam4vRiJEQRD15Eqm8+cej4S574R19KcOX/KM3iyRvrHdfcab
d6yPdi7jbDC+M00HGgDJQBXgHVgYGFDCduKMmpHxiUzAByptDXwxQm8Orkb8MKwzCJ2GRGOh
S1UsIOebOfYk2efwPdf8XqtmFQx7uDu4QYQPJQq2DBQj
' | unpack
}
cpu7() {
echo '1-8-8-8 Huawei P Smart Octa-core (4x2.36 GHz Cortex-A53 & 4x1.7 GHz Cortex-A53)'
echo '
KLUv/QRYZQUAwkkgH1BnrABA24MVyJENxj4WLhwSzxygdYSSvS59MzORDgyGAoEto0jsDTHx
9XOWl0pYpXrUG5qMPlbneFtuptv5FMdasGcns3AXCd8HEEQylmN3Q5V+oUp/WRoo36uHPHs6
+wS+1kuCN9TLzdRNJHYM1hsSQAACYkE8JPWGOHaviyxTDgAkQAkMUAcDFIMBSmCAOhigGAwo
4Wbu07xD5gw177vZqo64sbtwFDXaE3w=
' | unpack
}
cpu8() {
echo '1-4-4-4 x96 quad-core Android TV-box'
echo '
KLUv/QRY5QcAhlE1H1BnKwDIkoetw1FHvrd6TW5nqI4+EQedzut9ABQptb4rACoALAD72HTS
yk/im3vpzs7kbugyATqUkc6ORAG7AF+v3P8qKK0RiLPTzJzcmE4E9W9C+qMuDC+XM+FLV09h
E+lcd0VsFHoHV7lcXB2t29Uq88Yq8xA2UX5yb77KfaSkV6aEdHbosq+3Gs64G9qYPqX1GiuB
6cKRoYzvB4kBdLr1Je+rShcoKVYc2jpeAaUQZCHItkI6rJSUYZOhzs6B+5oNUHsIDIyIs8O9
i6S3AKF1dhYmDgA0xZA5Q837braqI67uHZjSlgNrgIOBQ8Q8pCcNnhe5YjIBX0edag==
' | unpack
}
cpu9() {
echo '1-6-6-6 Kramses 200 USD laptop 6-core'
echo '
KLUv/QRYlQcAgk8uH1AJrABITeNdwrPRAqt9X9oa+rr/FE0XsNM0A4oUUSIDBmKowyiQcm/F
1bpHYhKJN2Fil2uzj1AMCHmi+/CivJxl8wjF8EIlVtlpUwbbQgjFcONYdrmRTnyRTjxjT4OP
mm/LkVuvCdm5F7OevZiFVEfGPxo2fffUHUZGD5s+s6dxzOYK7XH4DUsn6j6caoBSEkDUkz9B
OTi8hVeAAhjSAFdvXeVIHxAInlxbujNlXkPpyffFqMtbiAIVAC1AFUAfSJgbUAKU9wNU9gNU
+QH1Gq2EwfCdq39vKWe7c6q/wBoyA0HbuS0w7lMlg1sHMAcaacWR
' | unpack
}
cpu10() {
echo '4-48-48-48 Dell R815 4 CPU 48-core'
echo '
KLUv/QRYRSEApj+vIjBLLADDcJR4ZOmSMcbRLoFyVLE7QWmYAUkyhG4uXRgCwJ2sAJ0ApQDz
j2zYCFV5LceJnYZVIM0Qb46jYRWIevMJ5ZWQjNJCjmp8w8bjkeeoRoStN0cvIDkTshH1CaNs
CIZFChDO1ntzcITsMyPCiDSlBpRi7M1xRBwoMI9SSq1JvTn4qbFGUVJkvTkWkLSWbyNOWckZ
HkAvAFQjvnbhBgoEbw6mEDrz5jgmP5UiyXpzQExJoeINGxEDBYIoL8SM2yB4czzSieoDsYSo
N0dUuznWyCIBh4hwwdOxNJ5OR8GA8xeKttona4qP6pVQpZeQPY2P81B457kT23obqtCnrdCf
WheO5eixr3MheBuq8Xfihwo97XTexr5P9MRisX3sr63OnXii9BP0OWFsiP5lnHH3uftRT4pP
lJ7RjamY8Unjtr/QXqo0HkZ6XthH0aW33F+meI70DO2jpo99z23Pz5lKb1jFm+PoBZz2AXlv
jskSB7BxIykJvK9MfOnm6Hkg4pI3x4WYOi5BmhfQHsHdMbUKEhoQ594cbSWti5pA2JIcjm5k
219wO3M2oHd0L3S6nctRQ/QdIE+HJdiT4ox4IaVOYt5GAon4TqngbkB7lmA7VkbQHWKdDpX6
UpSYv5ZS6Xzhbes8MB41dR7JT4V+n4dfCUmHfifkH6SuZ8TLCo4sd0MLOWFLeui4+zQBlyg+
SgvvxKdSB4rylCRxyXvtOcdca6sxpthabymmmFOOYRqzLGxRlKUkK1lqJa29x5hza7WmnHKM
Mcxay6JUU5THJIlb3muKcyxpbT3GGmuKOYZ5bVkcU5S2koQp9t5inFNLa09hzCWvPfXUY865
1dZizqm23lpuMUxjloUtirKUJFHJe+8551xrrTHG2FprIQ+Mt+XbEQyq1Hq8fXpv733fNxdi
ygsIQfqIH6pFZoDlqEGwFQAEQA4AEAACcBMAAAgGEshgGAgBCAKCSSQgOCYK/2sGH+oAS++e
VqS/F4zU7z0u9T1GSvVeu1K9N6t0c0/yY6Xag3up98Qm5T0PSZX3+IzOLfeqIuUexEu952Ap
4T2fk3T3ICSle8dR6vZaKf29IEi/53FS7xlISvesJW0mAjIpo27dS5JU7yEm/T1VkH5vEJK6
vYOlfc9AqdxjqzT3ZpSK1AAym0h99z5VpS1TIwAH5ABuGkB5CC7/HDKKQAjgbgBaw+LsTyLv
1Z/UMvrTdJ7On3T45E9q/GnKFP7IHmOV1p6oStVeqErXXlRKa0/USmsvVKVqL1altScqpbU3
qlJbGwD2iO3o4vIdhC9r3/gEqm4WaLhveaVn2a/WmtxlZf1r5amu/n8Oqy5VPeifi7Z8D+pV
HtHLu3cB1t7Q82P9mJ5lzZxZiTsc5NfnI+/+/t8Hj/tsF7ZZhZabKpETW3DxywH3CuPZ
' | unpack
}
cpu11() {
echo '1-4-8-4 4-core/8 thread Lenovo T480'
echo '
KLUv/QRYvRIA5mt4IyBvKwATk8iUn9xdIuJLbC8JrUxyQsMubiQkFCUoEAiB6BE0eABoAGcA
qSHywcdrlRyy9toiwirB4QyjNF9pL15/I401lSQJQZIYXDA8JMpXgsjHvLXVBcNC0hAoR/gE
hMInksZiMNB4D3iQAFg6FR4QAfCVNjL5hVG+UoLrZlTNV7KALzLnDzcFt8qGle+Ru/CV3HPQ
6eRCKvlKdHZvm5RVjxt7V/dIP9CB7Q1jm18ZH5qxnbX4hfAprfG8fYOofVv8Mj7t+Nb12/x1
3wj9YecrpYYwyBVqWb4SXGjh3Xu4yfkqb4vW8bCjei2+UnrYUcnXIXv1ydceM8V8pV462x9u
yb0vnU0ZfAX8yvPB+8ooO3PvETqcCIN3klFH3xrFeQSxnl+IdfRe9iobT/4+oBnfHrMl+qI4
mO1+bI5PuUZvlKidReeM7e4vsb72PorQITdHu9NZn5zxTNNb3Z/k74Mf62vk3V+2+9t92pHz
KMYHBQUFTcNoGo0GwywMg8FYFmVRFEWtKjcuhEkWT7disoLsqfRBBswF3vU9fsD4St291Dmm
mOYrVblRQh5kDkZVnsxiP3LsbrcdfcTx7jWG5HtHul9efJw39pcIYldefLz2Q+GYgz0a0s4j
3Uh178qXMC8gICMhGnYpKuGdGMVqqIR3FoZMSQ3V8ZiYkhqq4zGLIFFXQ8V6IkZdDRXzxHJI
FKuhEt6JTTFr7sHFkbEspWq3gcg4GEnCDRHCLERgJRyDNg6inUEsukGicXWpWC7nkyOR3f6E
T9+IZeJitNtyLQ6A1ShkK/65
' | unpack
}
cpu12() {
echo '4-64-64-64 Dell R815 4 CPU 64-core'
echo '
KLUv/QRYfTQAqlfIDiMgC6MHf36aIdkoVm9EUO0Fii2nyR1YSqSyqftWBncCpDxDgOwA4QDk
ALuIcRGfcBrnLWv/udXNVcj41r24fphLaY07/TdZvPUX191c+nHf1/Wf68x6VGxiNmswjD84
ZyIczWswHFe4swxMzPdIWKe/hSuJ2RzvCWswjMRsDrSGdRys8IEPTnckazDeqXybmM9g4DqV
72C8BuMPD3QW+Adaxz34CYh5EDiwiUJpDYY/gL+OeO4dzF1IVD8wkCCtBCHEFmgNhjPySfpg
PDxwTq9/MKTZLtgAsQJ4JPU6FWyBBAPWYHh0z6Y1GIbjjIwHpzUYCQ6MrtnEfEeBBAMerI8j
amLAGgwGKlQyjysOtAaDyn9/ks4jyzAuMSp2mQtcZvlfr67+VBAQu8y3y6PQ+hrqc+vC5ZR1
41KXflQY6Ix81l9d5WKzlUHYCh/Y4HfKxf4CF0HxchGveuN0IsiH6fX/5wAd9zCui4tL6NsH
p6sL36j4TXju4I4y49voKA3COfsYN7tQuHWF+8W+u63Pm3JuYkX5/zJevHWx2fb/XyorfGRc
B4wDJxGdNxc+cxvqMzbUp9v4GIWJbhWmLnzK+o981pnyWUbKgzKd7vuq1MfVf+Tb6Ox8Xxm6
y4F9MnPrlEpd+CLGXTzrOO59wm9FbPL/9f+lv2gCzIo7UcwpqcStcUsSlFiCIEhLCGOMJbbW
4l5KKdSqu1OnlNRKE8Fh5m6JD0kVB04bpWl8l/kQEPvT6z9ARIR4Y91Z635dQ308+sE9Li51
BDkPxyUqhQoB+xUum/w7ZRh3KLYGoz4eFcWO94Obe0At68UEEDA4uBVaW2oNxk8Y5UEux7+b
CYviVNZXEisUp/X5/D34K46TePZprU75V6rTT/ht4NxREsvBOBLxThG1mUu9OrDxT7i5Xx/+
O2fkc2YZ+C5h2ce585TlRcW6494r76syIX22wZOOEhW/Cro4W+ez1VEXrSGsk4QlCUEWM8YU
Ymt1UyohnHQzkhJKjBlZCEGIam2h1EmiuhOCdC9ejCW00GKLceLWBdSQYoqhpFgVUIIgSDPC
GGNrLWQppRJCBVbdjVollVRKrFgxglCBWSGFFGIIFRip1pDubsaotQLq7l6cWiug7m7FrYC6
u5uTVkDd3YlR0gqou5u5Ja2AursRI0kroGak2UJQt7YQ0pJEtQRBuhnCWFJsLU7IUgoxprqR
1SmxJDGvhFjxQqm1Xi1JUkpa41ZdSIsRKiDEWkONVhfSYmZmZilx9+KBjqiRnAhgAOQQAAQA
AOFGICAAIkADEgBwGAYCAIKAYAymAAITpggeYgACwQNAwEIftz9McmKBf6m5EydOLu/tYGMY
IBGpV9IBE63T3JCc3AVplFs3yQM33suRBN9v6YVSg2SBf0m3Euv7I+1JMnUzI/GAhX6lTaiE
OGZMssQpNWUkDLjcNEGiiFNcsyW539bf3yGYTAsR8j0D+hgZpv/g39JPr3Jc6ocmHqeaIjHg
8nKzDppygUSJry/JyQX+pRb20YlLSwT38Uj93jQAT2OZ4YMjbmt0o/oI/nYyauQ+bvj2zuWx
mQBhH52/ACgXgPhO5YfY5xU4AKEJIEFV0xDty/srgFsD6CYGMp6fHDK+gsADqEWAXA4hBjG+
gL8EuFWAboboh9jnFbgAoRkgQVXTEO3L+2uAWwfoJmh+iBJXY26ZnxkTP+IDnAh9CWAOBQJ4
fTxJZLjanDMkDrhrDsbEEXcYMYfkgHPN4JgccY4hZkgecJcZMySPuMsMiskB7xiCMcne75+5
pFdGclZ4hEXxmQP5+l8c4H9WkJlkIInRnKmTZaakI2r2CXKLzZwTI65MIr1REifEWozm1a/+
hdI/pI/F8DH/bHyx+eSfdPyTSYXWD/iXJv7+FN2fUsIto5u0PxVw9iey/pCeiYn6y9M9/dnS
Gw2pmzkm5y8L3PzplT8ZrBcDZ0L+qhEff60Qf9YjpUn4owUHf63v968gX+L9YLhh9sDNlXci
ub812iWRwPDeymyS+22cbIokDPesTJO836Npk0gIpHtlbunNKPvkqj5I44ZLIgGQWXfmll6N
NvYIcIIpc/K5NPJrBfkj7Si4maytfAjJm+YcYWAc+VVSROp8G14mGf99RvzHPkzk825e3oH3
T/vHMwUoWC5HxGLJBL8rdMuvH5MVPCZwj2s2xOTH+BCLNk1zycfB1vqgdddQ4DjEbMd6oD/T
/q05b9gEeqJ524Ixfxz8jbBi
' | 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
}
cpu14() {
echo '1-1-1-1 Intel Xeon X5675 (mandriva.p)'
echo '
KLUv/QRo1QwABt5WJBCNWAGjFDHykUWSQEvNjTGJMp1z5pZCA7MA9TKhFAAAEwwAAlEASgBI
AI5SkwOF5Y6KYGPe2WtyYNBQJBYf+BmNhuHwhoUCGNfhAQwAd9Q+Bs8wd5RyC8W3mjtK4tpj
j0usy+2ECAubBNfgjoLaIyMEN7IUd5SM3atRcmcRX8r5ztvXxuyOSb/6vowv+117fpu/0PdF
LvGjI+Y4YiluI+sONYkVxjZ5ddqnVyLxYxEk3OFYFuWO2knrL0SZrsaiSTgYisUD3X0ZZ4Px
HQKCcNJzym+QOcJLougixzkdijF6eOVZuvZ8JmSzYdQ/d9aekPwE7xzTlvQn5Mt2X/b0+PTe
IS25h9M3i8n4kfg0azkT7tuIQfYuNyLyckyaskUczAUc09YSCL9ne7iC6V4JQWzCfTBqjj1M
sxpLoqEozR3V3F6M4sN67nlAmHsv+4TKkb8oD7Pdb5RJv9gYKBAixjTqEIhm1AHKWTCgrkEE
YstArr0BOSgXJ4Xmpu4j9PRpQcgRCckdf4fcSFol9GuGecuj5uBxngHakML8
' | unpack
}
cpu15() {
echo '1-1-1-1 Intel(R) Celeron(R) M (eee900)'
echo '
KLUv/QRo5Q0ABp9XIkBrqwCI2LZJIts7o1loU/RrgCM1Bkm4qbLeX6WzKj6uMAFQAE8ARwAL
JHEgV0hbZFGyfUlxhRq4zDo7PSwsEOTgX8Ao1WnCAxwArpC+BU+AuELIaYsvGVyhh9u3mDvM
ktMJGRSuA1XhCrVVZGxQn4RcIRm7lUXJAdxIyRVy+qh7W4cZjDtZmUOV1ofD60XGIAiTIrxC
jbMozzbmbu1cuGx5XSGVkSXEFeoGrlu2294ttv1gcEJoeIJIPGxfGWyxlEiQAYXQw0KHjdim
06c4zJwl7eT3XO6A14X/5rufaPdlO5g73vsyW+/ZzmjHMY79iY99NXwp5ztrX+FgV/auiy/7
nfW8Nl/b9T13mOlmuSmpCfVps+B6l9qInNxyptxH4D13eULQrbK1NaE+2KxbSoFBSiADCKLg
fbGJS5rL2Omcpyxu7rvh1eh3e2cmwr178WNRVMbZSoJ4FJWTKXcnKADAIKuqBxBI54gcFYp3
xUIMqhrUyHoLjYPwgszI7eGRdSUOFMYQlpP0pOoEAV0WM1zTXUey4OeJUEZtb+UNcgLSAYUj
iyXJQ3TVfIX50ANedGFbHwEc/JQzJup4YQ==
' | unpack
}
cpu16() {
echo '2-12-24-12 Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz (vh4)'
echo '
KLUv/QRoXSQA2kAECyUQTWMdEfORapSl6hpfhdTvIB2fCbydyAB94J9MxTuCiACAvIMbrACZ
AJ0AsZ09tMbz9g9R+7b4ZXza8a3rt/nrvhF6PwzyggEXWnj35HyVt0W7ehcKRhyyV5987THr
pbMZ/cgHndfuHbL2epFg40CDHwuibIXX30RjzViOxaAgKlVY4KBJonWzTdpeNNQLAHjkY97a
RoUFCo7EoG7gCPRDLYqAkuARHiCQcyVcAIQAG5k8AgCum9FYFvBFhriCmwG3SgYrn0KuAvcW
nU4uZBwvAIDO7m2TcisfdGzdal1fZePJXweaUUVXaSXbfdbc3Wv82Byfco2+pKidRcQfx/WR
7d5HsR9F6JDbanc665MzPll6qzsFRwEqImz8J/mMp/zimXDyrNEhT3k357N46bs6b2f5ckYE
XV6JRtmqktWWsz3Cc+vq6J0nLTt+JA8ha73or8OP9TXx7qvtPu0I8SjGP27sXd0TrYAI2L4g
lfGhGe/9MFvot4tH1ATfzXjhzNpLJWgtrW25Lxemq3DjUjiGS3CdsoVtufiufAkpO3PvkW6i
Ola0NhuEq/KMFNo70r3ijX2VXnReWzGBOf004o4t9xh65f2iPjof5Wgh4i9K6AvTsUQvyvW1
77Dz3tR5d0731/ur/IWPfL0g+e7wvkIFQ6zosEe4EAkG7ySjjr4tCfEIYl+IdfRedrrx1RXM
0SyIUphGKSQxKh2KMjSHapLD0iSGORpDWpBDUhTTNEmTDktiGKRJiqKWhCBJWZCUlDKkRKm0
KAlRUpIgTHIkhTBKo5Q6HFJKSTFMYzgckJSOdCyIoWGQJSUFORblcEhSoyTLgjDHgiSJUkql
hlEMhyYlwyiwD5Msnu7CZAMyRaUPOiQf8K7P+dK91DlW5Ub5PMhWstw4NAakYRJ+cT7TMVhl
bi1ktdd8Mb6+xKtQEZcDa4DDqMFgxYzIjEiSgiQFSQfARoZG0yQHYsA0SQAhCAFCcIYihEFI
eEU4FDgnBg/CvfDTFEdfCnzKp/dGFGcRJTBac/VP682IZ7JNS8a8Qlfee2qAsyGbznwFCy/m
U1ALcxbXtKQvWrgyn3pamLNRTRuTMDy3ws1ZhXNbn0zs/KfjswDmAk60ueL78UwnwrzC2pwG
8XKdA8G4QlXzjctfmU6/IHBeOaU+Mi2DiV5xvoW/1lQ9L8N6AE/hzUXgVu/lIk5iDv1pu4k5
RtkHE4KPT2MhGjqcCQQPp9nTTpOA087fSVowhrBufLpp4ppGv6jkrAkYzqNwbyg8FOzwJTe/
uFlcfjE0RytY1n2BzX1wHq3S3EPR87qJk8A3bdEymQU4if9RYRQUH0JH1v4o5Y+HZ4/Jcx+p
6C67cHK/roV6KRX5eh5fZ5zfBAGIcypOQhRdDjoqorlsIRh4MyFFCa/+w9rnqQ9IhTJSxUEj
J/m5uPWXdiT61TaAn85i7vm/JHEVLykNoOaGbE6PZXMCHEOy4iJ6P6vgAOxE/spU7N53w3RU
pvPDpg6++vY602wMoPOM5mjPE/5E9C+1WNOag5ef9fYNxh+A4wfWolSv
' | unpack
}
cpu17() {
echo '1-6-12-6 AMD Ryzen 5 4600G with Radeon Graphics (ai)'
echo '
KLUv/QRoxSEA6kH0CiUwS1sdaPiIsqmQTVuLLykLrtQOna/tY8caFQPfvvvkgYUF54EBqgCc
AJkAyXde06cCxnbefuLRr7Zv8mG3a8dv81d9m/NWJGPGgWDrLLta7q3Iq8+i3saCmbNccbml
i/NALHx6KM3SarXOUlc3Gj4KJLiSHCKs/jaaeiAIIgBBDEkEBAsUkCTx6IO62pEo3GLe2Efr
ajjhgbu3Khm8iYvxAwiCMPxwtxEaDL4t3REKANiq145FabDVkvmC9TCwgICu6LaJCwJqIfiU
W+dAPgAAfN2rD3LJLXyKYNTHL341PirGIfQ7rTOcfm80LrOQGc+p5dvtFItlr/ZsKRNQm9Nv
aCqWIW6IaZJduYQKXhGJk18n+3lvPjrlx9+kPFcSZEAkjz4b82X7xeVe+4JaYIvGlL8cn3HC
NwYu55Hi5874uav3FIgXougytnv6xs7aUcEnRbKs+JEfis8+7oyldqMfmyvbfdgP86e1N71g
DNMjlhgOcq7LySv2ml7YRIYPN7LFbC+S37FXd656uupqdTbSXS5TlLQ5X5baSDse8YLuEJy+
AxN7ZPeYMK/MeuW49VxifAFZwcPIcOH6gxuB6WMs44uopcYL1Zc4Ka7iuS6HsuknBlPO1n9U
Xu12oragV3hbX0lWS9/O1IpmWnMe+4kbpvVM7SrFjM2I0bDSLwzF1CfWP3Elo10Z4/RLkiSH
REEhQeFwSCxLQpIgCMQhSQ6HBRFwQCyJIZEwLMoiAFmSZTEYFEVRkuQ4HhgeLImDP4gWFjKI
YZbRvMVzjO/4AS7b4TIeHywXES4nwDuu9IShe6FSGd02ZEAcvYrkJzBcSUCWAgoaHAqJhObV
nuKl4zXsp4YotmYpLnx3ciO92EhJYHzDGBN1o7iwG71IR2rrw6e66DtPFyLGYwxc510tXm1x
BqMiXW5mKZyrfKwFgKGowTykkDGkRkRGZKRJOoBExqg4GQ5COUGLMEUERrgzJMbE/0wgQaYH
7rSgB1fM/kMSWx8VlA5S0OKNuWI8OR/359dtGFxgAconnVldLp+9a9V7SFk+bs+OtlyqzwrK
xcHda6arrSv0SUHpjILKezeeFaB80pjp9b4rw/lQiyR/K5yP+vP9LYeOwRWAt+ciFnSiLUur
rq4cAM/MprXU19jHLpLvmiWBe6zHzaIqO1sZ35yOXlqIa29j88LhLeMSOPNflUdcL2cNG6ti
NPWjEbKXtIVeflMMLyjsWLuCUcxPFBWGmna3DgpIJmairUxU9OPb1XINMjCrs+PJbgrQARvc
19rY5t2tN8ulUxMyLr9RA4/vay9o8CfTq00/5AalMO6Kxg8B8HlNZ18ej/83Xw8IP+brlaoW
nemRDRyMrTRoNR6FdbT66kV1nQt2zfQ7krZmj6IJ9/O6aXGMPXcancqeawY7QJtwnNUtOMQ0
DPeXb9dzDOgUh0ST3w==
' | unpack
}
cpu18() {
echo '1-4-8-4 Lenovo E540 i7-4712MQ'
echo '
KLUv/QRobR0A5ricJCBPrAOD/6k2Kdd940OW+jV8IowHH1LHEyOAj3wFiBJCBBssApkAhwCK
APGt67f5676ReksM8kXiMHCphXdPzld5W7WrF2Pi6JC9+uRrj1nyLJ0tyQeh1+4dsvYaI8IJ
QsOfh9mM199IY85DeSBNk7HgUNBUbdL2YuJI8jFv7SRjQWFxlOYHn3hIOIRDwzwegse7gINE
wNKZcIGIgI1MfgGA62ZMHBjwRRZ94pbArZJh5ZvkKri36HRyqWS5AQCd3dsm5TyZapj1uNf4
sTk+ZQdTxegS5Pq9ryJ1yG21O531/XH0VncLZwGnCBv/ST6Tx5AmnDxrdchT3s0pLV76rtAb
Wr6cMaLLK9IoW1Wy2nK2R3hu9JDELDt+JQ8ha40B8WN9jbzZ7tOuolcx/nFj7+oe6QlGsN3h
VManZmxnEq3xvP2Cqn1b/DI+7Y/WXion6lGN1Ot2FE0MKOeq4i5lg8QxcJ2yhW25+Bcl9a58
CSk7c++R6mZHum94Y79hXoRee6JgUEsd3bHlHlOvvMeoj85HuVoY/WI6Fun12k2hdwd1/1X+
Qkm+XpR8h3hf4cSiFSH2CFcUYfBOMurom4OJXlHsS7Gu3stON766Vj7o2LrVur7KFo/HsizK
sjjOw+FwChiI0mgeR6PRNIvyLI7G8zQOA1EejcfjOI0HRHEcx2kaxtFolAUCaRjmeSDKszSY
JDFYiUkWT/dicgLZVOmjCp4PvOuDDnG6lzrHqtwopQfZehKmoUAKGvzilCaUyAo5rflihGi/
vsircIoLgvW9JWYX/XbxUWXguxljQLP2ahhqLa1tuS8r3LgmKNneSVpuawuAjKjxOKIMMozN
BAVJkkI6gETIqDoH8ik1TcCMERAi5sRS/A8FFS4dG3CFtZwlIk6YcimJDtgk5wR1XK4Zk8Un
sMVDxBNion/C2hcU+QlCJ9TqKYENn+w6gVqWVtxECfmm9FkYX4KDEonAOWU2hJsM6RMh0U0p
7+Zac3GHjyoclWW/p4WGjMjik0uVQdh2h0oi5FLuqKQfPYjKWrQQKCqYjDPIvFVSzilypEW1
nRlB9gFqeGTDqWsdgBaiLwZvZEI8R/Gn0z21lUPE919W+l3pW3zYoa67/7ma7JfvqXav1TPR
VPD4FxvYvY+QCPdXlYD+97NAYZox/vWovIVyerIbhrErTRTiye/tcPmHerjHhz10g4iteO9n
zdoA+1KxJ8/shJsDnYcJTIaXxS7ju0nnln2fbenY0DSGz5+q
' | unpack
}
export -f $(compgen -A function | grep ^cpu)
test_one() {
eval $1 | head -n1
export PARALLEL_CPUINFO="$(eval $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 | sort | parallel -j0 -k test_one
rm ~/.parallel/tmp/sshlogin/*/cpuspec 2>/dev/null
}
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
}
Venter_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
}
cpu14() {
echo '1-1-1-1 Intel Xeon X5675 (mandriva.p)'
echo '
KLUv/QRonQYAwsolIjBpzABoi2gVcBKev0FN8WI7YcCuNoTmTbB1dAmqC8N6MAf9xOhcS6B+
oOLc0Qb145avJCV9NqgRCTRE5ZAsLCJ3UOm9nwP6Pbd+2qihgkUvysD6XJ2vNKuvSDiO7aw/
UJ2JJoBuk5QfQVrssW26Wen4rx+YManHlUC3TAuQBw/M+Gkv5FqfpKYfJIAxwZfHWZafaSUx
ExcgQEik8g6fj08zd4EHssVA93AJ8C7xnA3qlYxXshyLBYN1XHECyZgjRUkKjzkkLOUQtuV4
YQqnBNP0ggo=
' | unpack
}
cpu15() {
echo '1-1-1-1 Intel(R) Celeron(R) M (eee900)'
echo '
KLUv/QRohQoANpVBJCDJVgAHS35yk/0LNr7il7y4NiXZTi5J2xh8EMPkH0ICUAugATkAOAA5
AFDzg//KBxEyshyKJFqSPScHvrD7GRyq62rk2xnH6ldBJBQHNqybEUHnKZJoMR7GO7S16rb9
LK0GBJfkrAs3+uHAsJHJKw7BdVNajAx8kU1wW0JWvkpugQDkdTq5CcuZ9Cq0yVtntJzZXpc6
ttWCsJoH7dvil9FXjm/cX6Zf942XV3RiikGCtXiciQQiTWo61iLRADRNY+EhPZR8lG5P1sJD
appGnczbZqUB6zW9exVt564cI78V+thnfmKZXxkzHRPjH23s3O4WruAE2y8ztjOKvtaOp8tv
j7I/mB0gQIaMujr8eNMPYIxoDLDgY+WX46hwjTmVzU7HpqEtYHxLTLzqx8jKta+0nIvY4e1q
oiCpQLqitFXU0Fyo+a4q4SvbmVMCr0burQ==
' | unpack
}
cpu16() {
echo '2-12-24-12 Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz (vh4)'
echo '
KLUv/QRovSMA6kiMDCngcIhzFH4Td8ruJqLZFq6rg/LAmM8J4PRtw8ZYAfijNgkAOE2YISXG
hNQAwgCwABJRul4TTmKBFGhoFCDgoDw4TGQkJUx0jAYGo2lUCw5oIA2QAgwz4WDSRNHtalOW
CQcNGI6G5gfeoM5oHs1iwIIotcIDQABQuOIbT5ucLI/Kc3BB144OGt0UtYECh0/ZokrEI5hM
iLA0lOXReoFJ1ikTLI1kn7pt6ZQilkazYDS792t0bxElLI7mramnoyCOK95ijivSnts9fzhY
JxyfWWdrCJa4XIsLrq/bQZjapoRrVySL43FFu2fRNAIwAG0SLlZ+wkOCxfFwHpDqEZ1TM20n
sYkgc67nHO3KwAIqK9lUniIMdZ29UDKm/BbXX7O5X456Y9cuoVwp1+tNEea1lec6ZfOZLqWp
vqcVIqJvNV866JBBtn5qgKdC0PTMpS/BI9wm+qhHTChXsEo8PehvuRYle4WJBE+losMXRDzc
ANQMBNZo7TWapC8lcu0mj0wkHjjJ9Zvgn9cOTZspBK23jPAWLv7q1T5V6tXglXbPPWtqfJME
hFEwzOLBEGAWDaMYsGCcwWhM3jiJe3AHpKESW+yNgbBUi4h3PFi7HUPD8Cb42N7F/Xpz07KV
8ZVIPrmyq7+V8U3KyFmd537Oj+6jhNDUdSQ2l9NxNcP3Zdxt/okY3bav4t9bjCt8ffaw39KZ
3yjzJ1fQKwjvlq1ztz/2R6PXnpKQfUX7ORt+lc/crkMqdmXwuvaT4Rn3lffarpD6tNAjHK3H
INJTPussVni94ohn6kLycMVz0CUUiAjKFRQYOBQIyYPEIbont2kXF39qRyf3jsNTXUtjnsOc
Bs+9j2+ur+YOp0rddmJMsvecXgkxsDOc+mYV8hvGwefNk4W2lNfDEUNvy2luqffqlG5upQ+6
g5F6BtmWxM7cfvOffdx5Pu7tYX50u867672+KDp2qOj+rL7ftCAHPuvwOZC03mzz7MFAr6h1
pRZXZ12fCl07bWlzOrKVe30oCZvqDeM4lPmLtTfH9pC1/dyu/mAq9gWhR0/jN5RZ+RWk/pY5
3D5luyhhgIsgQIQYg8joAUWIgGFyHo+2H9H0VAgUhrODQJiKFAXV8DW+RBm3SVsDCbC8Bq07
KGXGx0zhrEhoL0TC+UumTeUY9jUCrBkKh/0502187xaJLlwUWm0uUXXytESfDgGEb4NkqRnw
hh6SeWGWHUwwKJLAJgOwcJUAICETFDQ9MStQHwsQlNeVyIXBLgwRq/f1bAUN4i6zXZkAGNbF
r4UWmZ8oYXG08h4R4SqgQ6xUaE5ULo1bw9Cx8rk6OS10SMFLxNtSqZeTOx8HMOMzSrwtUXV6
BdvV5WraGwmfuVpoygqX6zRBbFeLmaObBRLPgJFBqKCMJobTUMYomLcjxSwECvUOqMBBukMM
4bbPXtAAm2D9K7ytqjEnBktqmyprOEzwz3FpK3A7w6IQoSGMJHxRorxI5ZT116mlsbsI0wBc
tYwCxsaqkbWS1O8AhakwClACiAG09g==
' | unpack
}
cpu17() {
echo '1-6-12-6 AMD Ryzen 5 4600G with Radeon Graphics (ai)'
echo '
KLUv/QRoDScASlLADSnwjGjbQLXf7SEiYhXDl17bzy9x/Sd+rgMwdzVDfBFY6exTLCwOI7dP
BeMAxADHALmu6P54Pbmv7K7puqJDzmEKqgUMAw4FJhIRkkZpEA0NtgwCGBgKPCIXDSS34Eqq
GmTa3FrzSzKFLPQteITC1jntCaMxYUBaK7KxvoaA4Wj5py6hvoeCATHwh+OidqHDuY/Dx+Cs
acKJP72VM2BggDScwJleXCauC9mVpiZhJJA85DbTp6GHBBF/LTGdwGg0FhiaV/3KVi2wCAxH
g+EmpuCquvfB0/QiXPsCwVAI9dtIQWEuXx53vkMD68XymfWl9MBogFyht1lwPAIwAE1tLbh2
CRIIGA0QBuJgeUQf1Km9T76HTGO+cXlLL1bWUynXvGH6WjKvs7nW1+x3qryXbQWfm30l4vYn
Wx19rtJYelyZGWUV8q7jatDh5Yr4l0SKKsYtxnlQPTF86T0hjQivEbLlrPhm6Zq7Ng7LHQ2m
AdKw5HE5fyi3XtbWLZKFgpZK92XuyuH7cp46ZFJb9Gkhl66xK9fYU2sUxuljmmEza/ml7pI7
vTeUhrrk3q4xbVELu1KYfOH3c4cy/7HFuWWtPwwpR+Uhj0b3qK08Utzf63Wn/FyHd7DkNY4N
wJp7CIBDrIM7DOiTmE+NB4wJC6xt48VOYGCuTIgftdTHVJpynkbtad0u6Op1MqmOnaVET9jU
ipjouRE+qfawvqcd96et1lGG0J2blxk1tdT0tIyX5gxVJdPkiq4KkxnG7WOviPjRa9TbsTc+
fDqXTxHbxprKoefS+2v39O3b0wuVTSns1sxqloMyWyNqWimW5zIGH35TUelw8S0Jn1Q5vSOz
LPIOp4vvaOxqrowNU9hZK3ozv2aPzXpqmK+NzY6pPC7lHyqRfq3BJ7sw3sIUzZtE6AKExBXU
OoeYTFyBtQW+YEWhgsJNrOUhrsDKVjXn6GXIf9psmzvD8NN9D5szxWGFB1xcy6ccaUTX1261
TOUnhledzx034k2HmFyjbVQQo7s019eaKRRMXB3kSEVi83uqm6R2e+4SEBEUEwrJ5AcqGPT0
2YNa35OyxdcM+gHK9kqSqmpaJyKqsPltV4RVWmqlj3CSON14sM+2gtYb1RFJO9Vx8N0gKLeQ
j43pT59GBr/0qm3wKVPQGRo/+4NEAgSHw0PyxwOAmCBQhAwZGbcBSJYmAyLVG/5ngAQMQSDK
NQS2pztrYwEu8wFcfeyBYD2uRC8cu9AcDJpOjLQh7rL0Fa7gA0e/PKc048NKtpjWvTy15IMc
q4uFsqler/RyxCH4EQ5D3JoKmIAzHQMGrkiUOpngtr7yKtD1Ck60jerH1Pl5YDli1yPO8eqT
dYGslS4vjnB2tgEI3t9gKaN5ajSqBQofOAWAYQioyBfyMNvbjJC3koCWTuO1A+XEl66LWhlg
zo5pwC8w9OjdaAMFpEBr8cSA+xrfFV0kAXQEhFBoqWCE5A+s4GostEFs069Tkyc460L7alvL
t0B7CQA+l6gZpkZywzEQATxYpIrZvtZvFY+NmLQ76NZvhd72aVyhHWrGgMXCoonW7dgxy4Bi
wCsuGJB+NTPEBrEagkv08IyA+ScYD9t1ilA7hp3bMj0LvwaAVXZjIVR3U0thpwhTAXBxv2tg
gAplMV0DrnilFovCKIxyldJcA2k=
' | unpack
}
cpu18() {
echo '1-4-8-4 Lenovo E540 i7-4712MQ'
echo '
KLUv/QRoRSMA+kY8DCrgjmpz6GpWtLK0DL5oW2iXhXfvoPKn9A8udDwya4/7NeYGAKcJM8QO
GxzLAKcAsQDs+6hPMmJJHYLGCeAgIBLgYYmgVKIUJxHYGA4MhkNSoaDySp9Dgk3KbUvjWJpH
L4UVuWnE9bmS6U7MpWFAMq49jSoUJGA4HBon8AeVhvPwWDy0M1QuCztjgTNILOxTeLcsVhq3
DSkL2wQ3gQHKZ2RwJ5qHBaO5uX9hcwvooIlAbQwe+LruxuCSuWw6+HZm0jidejYq8niD09U4
g5HnbtAFOHgrGp95J2MQzQPyhm7QouFg4IVl8S1kPISIAs0D8kAi1SU7p17bDbMmREyXPQ2X
jPILUfG94TwP1pb8W0x+yq4Ocap1fdEliPF5Xz3qTq6H2Wfs9geEt9krsApuem7JNyivZ22S
S0b4jBRdlLGrOxnhWYzSI3eeGzpDKw/ji+bKB7OmPg21Gcb15y4XN5uHJGclk6/gndPFGf5C
8q/fmDO/scyfXEWv3nuTS8/NjuHJRW4d4miVp+JbV0l+zn6Xy19N6iPV+q73VfnJ74v7y/Ib
kGsK214bRfqODZx8ytdWdk3gGqRzoZvOcH54iAqEBg2DA3FU3mgMvKv9sfBJW/BIYzFL15nD
oKkWlwkYW2tFm2iY455PXbce9t4epM4tD51869Qra39zMc3eMvKb+4bc57QHvXmaoBBLHJ3p
w5qk3nKf6TZjm7JaF50iMsXwM2W/mSfUziDmt5ZfJ8HGDwXbIblvN2n0PEj/3BNh1J1BnWx+
QZzoFaVfSrk6r37ua/0Ekp4R0i+YYX3Fl2VxxblaBZq7mES8wbXoE4vExfKGCAgei8QkYkKB
zUXZ6AaVP7dhi/LPcwb1PLfNqdBZkkrBADIyrrk8SRzqO9v1mvLaqDNu7BPLl2qtbpIwq8xA
3xmbJRTRRXOpeApLm+fXSgvbdVCvxHtsAClACOu0+bE9CkVk7XYAz42iCXqBS5hV1lG/VCxv
4HXamITKBM+lIOUHLhEfELXDgFdS+ZUmzKVFat0ql1QmFnTDtHbTe4CLIECEkEFl9ehJVn93
hwA/7BCLC/NZLAEyUgY2GYCFqwTgijC5QVMmWPH62AyCDXK1+OpiWpsP6U0siLvMvrIVqI78
1COnggEzDpYxCkOKML7klSCO9u6RE66GTcJKlT6dDwjE4PrWMDouM98MDrDE4PDA5DeG6CaB
DYzokYTORwA8+4yYLj4VnVRJe84uTm/rnEsY+C+A04PHnWF8hWEQnbvJESu4m6sn6wT5BC+v
sDBKElGGn0xRhN3SZVgAU5GCwRcAhoObABCPBoUzeBrAgoEQA+ZNUNzFFM2M9wkFpc2oy8C/
A9QawIpBoEEQHPbjTLfxvVtKondjLtGyfTorlITmE2YMTTBvR4pZCOjkMroX+5BpthahE0bS
1xmBywKcDyryGSexILNwA7tRbNm7IJSiGy6wym6ow2+fOh7De2BiA65hfTBgShgjwlKbRSEq
jAKUQ0da4Q==
' | unpack
}
export -f $(compgen -A function | grep ^cpu)
test_one() {
eval $1 | head -n1
export PARALLEL_LSCPU="$(eval $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 | sort | parallel -j0 -k test_one
rm ~/.parallel/tmp/sshlogin/*/cpuspec 2>/dev/null
}
par_combineexec() { par_combineexec() {
combineexec() { combineexec() {
stderr=$(mktemp) stderr=$(mktemp)
@ -78,6 +785,68 @@ par__argfile_plus() {
rm -r "$tmp" rm -r "$tmp"
} }
par__plus() {
echo '### --plus'
echo '(It is OK to start with extra / or end with extra .)'
parallel -k --plus echo {} = {+/}/{/} = {.}.{+.} = {+/}/{/.}.{+.} = \
{..}.{+..} = {+/}/{/..}.{+..} = {...}.{+...} = \
{+/}/{/...}.{+...} \
::: a a.b a.b.c a.b.c.d a/1 a.b/1.2 a.b.c/1.2.3 a.b.c.d/1.2.3.4 \
a. a.b. a.b.c. a.b.c.d. a/1. a.b/1.2. a.b.c/1.2.3. a.b.c.d/1.2.3.4. \
a.. a.b.. a.b.c.. a.b.c.d.. a./1. a.b./1.2.. \
a.b.c./1.2.3.. a.b.c.d./1.2.3.4.. \
echo '### Test {%...} {%%...} {#...} {##...}'
a=z.z.z.foo
echo ${a#z*z.}
parallel --plus echo {#z.*z.} ::: z.z.z.foo
echo ${a##z*z.}
parallel --plus echo {##z.*z.} ::: z.z.z.foo
a=foo.z.z.z
echo ${a%.z.z}
parallel --plus echo {%.z.z} ::: foo.z.z.z
echo ${a%%.z*z}
parallel --plus echo {%%.z.*z} ::: foo.z.z.z
parallel -k --plus echo {uniq} ::: A B C ::: A B C ::: A B C
parallel -k --plus echo {1uniq}+{2uniq}+{3uniq} ::: A B C ::: A B C ::: A B C
parallel -k --plus echo {choose_k} ::: A B C D ::: A B C D ::: A B C D
}
par__sql_colsep() {
echo '### SQL should add Vn columns for --colsep'
dburl=sqlite3:///%2ftmp%2fparallel-sql-colsep-$$/bar
parallel -k -C' ' --sqlandworker $dburl echo /{1}/{2}/{3}/{4}/ \
::: 'a A' 'b B' 'c C' ::: '1 11' '2 22' '3 33'
parallel -k -C' ' echo /{1}/{2}/{3}/{4}/ \
::: 'a A' 'b B' 'c C' ::: '1 11' '2 22' '3 33'
parallel -k -C' ' -N3 --sqlandworker $dburl echo \
::: 'a A' 'b B' 'c C' ::: '1 11' '2 22' '3 33' '4 44' '5 55' '6 66'
parallel -k -C' ' -N3 echo \
::: 'a A' 'b B' 'c C' ::: '1 11' '2 22' '3 33' '4 44' '5 55' '6 66'
rm /tmp/parallel-sql-colsep-$$
}
par__I_X_m() {
echo '### Test -I with -X and -m'
seq 10 | parallel -k 'seq 1 {.} | parallel -k -I :: echo {.} ::'
seq 10 | parallel -k 'seq 1 {.} | parallel -j1 -X -k -I :: echo a{.} b::'
seq 10 | parallel -k 'seq 1 {.} | parallel -j1 -m -k -I :: echo a{.} b::'
}
par__test_XI_mI() {
echo "### Test -I"
seq 1 10 | parallel -k 'seq 1 {} | parallel -k -I :: echo {} ::'
echo "### Test -X -I"
seq 1 10 | parallel -k 'seq 1 {} | parallel -j1 -X -k -I :: echo a{} b::'
echo "### Test -m -I"
seq 1 10 | parallel -k 'seq 1 {} | parallel -j1 -m -k -I :: echo a{} b::'
}
par_process_slot_var() { par_process_slot_var() {
echo '### bug #62310: xargs compatibility: --process-slot-var=name' echo '### bug #62310: xargs compatibility: --process-slot-var=name'
seq 0.1 0.4 1.8 | seq 0.1 0.4 1.8 |
@ -145,27 +914,34 @@ par_parset2() {
echo '### parset into array' echo '### parset into array'
( (
. `which env_parallel.bash` . `which env_parallel.bash`
env_parallel --session
parset arr1 echo ::: foo bar baz parset arr1 echo ::: foo bar baz
echo foo bar baz
echo ${arr1[0]} ${arr1[1]} ${arr1[2]} echo ${arr1[0]} ${arr1[1]} ${arr1[2]}
echo '### parset into vars with comma' echo '### parset into vars with comma'
parset comma3,comma2,comma1 echo ::: baz bar foo parset comma3,comma2,comma1 echo ::: baz bar foo
echo foo bar baz
echo $comma1 $comma2 $comma3 echo $comma1 $comma2 $comma3
echo '### parset into vars with space' echo '### parset into vars with space'
parset 'space3 space2 space1' echo ::: baz bar foo parset 'space3 space2 space1' echo ::: baz bar foo
echo foo bar baz
echo $space1 $space2 $space3 echo $space1 $space2 $space3
echo '### parset with newlines' echo '### parset with newlines'
parset 'newline3 newline2 newline1' seq ::: 3 2 1 parset 'newline3 newline2 newline1' seq ::: 3 2 1
echo 1 1 2 1 2 3
echo "$newline1" echo "$newline1"
echo "$newline2" echo "$newline2"
echo "$newline3" echo "$newline3"
echo '### parset into indexed array vars' echo '### parset into indexed array vars'
parset 'myarray[6],myarray[5],myarray[4]' echo ::: baz bar foo parset 'myarray[6],myarray[5],myarray[4]' echo ::: baz bar foo
echo foo bar baz
echo ${myarray[*]} echo ${myarray[*]}
echo foo bar bar
echo ${myarray[4]} ${myarray[5]} ${myarray[5]} echo ${myarray[4]} ${myarray[5]} ${myarray[5]}
echo '### env_parset' echo '### env_parset'
@ -174,17 +950,23 @@ par_parset2() {
myarr=("myarr 0" "myarr 1" "myarr 2") myarr=("myarr 0" "myarr 1" "myarr 2")
mynewline="`echo newline1;echo newline2;`" mynewline="`echo newline1;echo newline2;`"
env_parset arr1 myecho ::: foo bar baz env_parset arr1 myecho ::: foo bar baz
echo "myecho myvar myarr 1 foo myecho myvar myarr 1 bar myecho myvar myarr 1 baz"
echo "${arr1[0]} ${arr1[1]} ${arr1[2]}" echo "${arr1[0]} ${arr1[1]} ${arr1[2]}"
env_parset comma3,comma2,comma1 myecho ::: baz bar foo env_parset comma3,comma2,comma1 myecho ::: baz bar foo
echo "myecho myvar myarr 1 foo myecho myvar myarr 1 bar myecho myvar myarr 1 baz"
echo "$comma1 $comma2 $comma3" echo "$comma1 $comma2 $comma3"
env_parset 'space3 space2 space1' myecho ::: baz bar foo env_parset 'space3 space2 space1' myecho ::: baz bar foo
echo "myecho myvar myarr 1 foo myecho myvar myarr 1 bar myecho myvar myarr 1 baz"
echo "$space1 $space2 $space3" echo "$space1 $space2 $space3"
env_parset 'newline3 newline2 newline1' 'echo "$mynewline";seq' ::: 3 2 1 env_parset 'newline3 newline2 newline1' 'echo "$mynewline";seq' ::: 3 2 1
echo newline1 newline2 1 newline1 newline2 1 2 newline1 newline2 1 2 3
echo "$newline1" echo "$newline1"
echo "$newline2" echo "$newline2"
echo "$newline3" echo "$newline3"
env_parset 'myarray[6],myarray[5],myarray[4]' myecho ::: baz bar foo env_parset 'myarray[6],myarray[5],myarray[4]' myecho ::: baz bar foo
echo "myecho myvar myarr 1 foo myecho myvar myarr 1 bar myecho myvar myarr 1 baz"
echo "${myarray[*]}" echo "${myarray[*]}"
echo "myecho myvar myarr 1 foo myecho myvar myarr 1 bar myecho myvar myarr 1 bar"
echo "${myarray[4]} ${myarray[5]} ${myarray[5]}" echo "${myarray[4]} ${myarray[5]} ${myarray[5]}"
echo 'bug #52507: parset arr1 -v echo ::: fails' echo 'bug #52507: parset arr1 -v echo ::: fails'
@ -686,5 +1468,5 @@ par_lb_mem_usage() {
} }
export -f $(compgen -A function | grep par_) export -f $(compgen -A function | grep par_)
compgen -A function | grep par_ | LC_ALL=C sort | compgen -A function | G par_ "$@" | LC_ALL=C sort |
parallel --timeout 1000% -j6 --tag -k --joblog /tmp/jl-`basename $0` '{} 2>&1' parallel --timeout 1000% -j6 --tag -k --joblog /tmp/jl-`basename $0` '{} 2>&1'

View file

@ -171,6 +171,6 @@ par_delay_Xauto() {
} }
export -f $(compgen -A function | grep par_) export -f $(compgen -A function | grep par_)
compgen -A function | grep par_ | sort | compgen -A function | G par_ "$@" | sort |
# parallel --joblog /tmp/jl-`basename $0` -j10 --tag -k '{} 2>&1' # parallel --joblog /tmp/jl-`basename $0` -j10 --tag -k '{} 2>&1'
parallel --joblog /tmp/jl-`basename $0` -j1 --tag -k '{} 2>&1' parallel --joblog /tmp/jl-`basename $0` -j1 --tag -k '{} 2>&1'

View file

@ -1,146 +1,7 @@
#!/bin/bash #!/bin/bash
# SPDX-FileCopyrightText: 2021-2023 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc. # # SPDX-FileCopyrightText: 2021-2023 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# #
# # SPDX-License-Identifier: GPL-3.0-or-later
# #
# SPDX-License-Identifier: GPL-3.0-or-later # Moved to sql01.sh
export SQLITE=sqlite3:///%2Frun%2Fshm%2Fparallel.db
export PG=pg://`whoami`:`whoami`@lo/`whoami`
export MYSQL=mysql://`whoami`:`whoami`@lo/`whoami`
export DEBUG=false
p_showsqlresult() {
SERVERURL=$1
TABLE=$2
# No hostname as it can differ
sql $SERVERURL "select Command,V1,V2,Stdout,Stderr from $TABLE order by seq;"
}
p_wrapper() {
INNER=$1
SERVERURL=$(eval echo $2)
TABLE=TBL$RANDOM
DBURL=$SERVERURL/$TABLE
T1=$(mktemp)
T2=$(mktemp)
eval "$INNER"
echo Exit=$?
wait
echo Exit=$?
$DEBUG && sort -u "$T1" "$T2";
rm "$T1" "$T2"
p_showsqlresult $SERVERURL $TABLE
$DEBUG || sql $SERVERURL "drop table $TABLE;" >/dev/null 2>/dev/null
}
p_template() {
(
# Make sure all jobs are inserted before starting a worker
sleep 10;
parallel --sqlworker $DBURL "$@" sleep .3\;echo >"$T1"
) &
parallel --sqlandworker $DBURL "$@" sleep .3\;echo ::: {1..5} ::: {a..e} >"$T2";
}
par_sqlandworker() {
p_template
}
par_sqlandworker_lo() {
p_template -S lo
}
par_sqlandworker_results() {
p_template --results /tmp/out--sql
}
par_sqlandworker_tag() {
p_template --tag
}
par_sqlandworker_unbuffer() {
p_template -u
}
par_sqlandworker_total_jobs() {
p_template echo {#} of '{=1 $_=total_jobs(); =};'
}
par_append_different_cmd() {
parallel --sqlmaster "$DBURL" sleep .3\;echo ::: {1..5} ::: {a..e} >"$T2";
parallel --sqlmaster +"$DBURL" sleep .3\;echo {2}-{1} ::: {11..15} ::: {A..E} >>"$T2";
parallel --sqlworker "$DBURL" >"$T1"
}
par_shuf() {
MD5=$(echo "$SERVERURL" | md5sum | perl -pe 's/(...).*/$1/')
T=/tmp/parallel-bug49791-" <$MD5"
[ -e "$T" ] && rm -rf "$T"
export PARALLEL="--shuf --result '$T'"
parallel --sqlandworker $DBURL sleep .3\;echo \
::: {1..5} ::: {a..e} >"$T2";
parallel --sqlworker $DBURL >"$T2" &
parallel --sqlworker $DBURL >"$T2" &
parallel --sqlworker $DBURL >"$T2" &
parallel --sqlworker $DBURL >"$T2" &
unset PARALLEL
wait;
# Did it compute correctly?
cat "$T"/1/*/*/*/stdout
# Did it shuffle
SHUF=$(sql "$SERVERURL" "select Host,Command,V1,V2,Stdout,Stderr from $TABLE order by seq;")
export PARALLEL="--result '$T'"
parallel --sqlandworker "$DBURL" sleep .3\;echo \
::: {1..5} ::: {a..e} >"$T2";
parallel --sqlworker "$DBURL" >"$T2" &
parallel --sqlworker "$DBURL" >"$T2" &
parallel --sqlworker "$DBURL" >"$T2" &
parallel --sqlworker "$DBURL" >"$T2" &
unset PARALLEL
wait;
NOSHUF=$(sql $SERVERURL "select Host,Command,V1,V2,Stdout,Stderr from $TABLE order by seq;")
DIFFSIZE=$(diff <(echo "$SHUF") <(echo "$NOSHUF") | wc -c)
if [ $DIFFSIZE -gt 2500 ]; then
echo OK: Diff bigger than 2500 char
fi
[ -e "$T" ] && rm -rf "$T"
touch "$T1"
}
par_sql_joblog() {
echo '### should only give a single --joblog heading'
echo '### --sqlmaster/--sqlworker'
parallel -k --joblog - --sqlmaster $DBURL --wait sleep .3\;echo ::: {1..5} ::: {a..e} |
perl -pe 's/\d+\.\d+/999.999/g' | sort -n &
sleep 0.5
T=$(mktemp)
parallel -k --joblog - --sqlworker $DBURL > "$T"
wait
# Needed because of race condition
cat "$T"; rm "$T"
echo '### --sqlandworker'
parallel -k --joblog - --sqlandworker $DBURL sleep .3\;echo ::: {1..5} ::: {a..e} |
perl -pe 's/\d+\.\d+/999.999/g' | sort -n
# TODO --sqlandworker --wait
}
par_no_table() {
echo 'bug #50018: --dburl without table dies'
parallel --sqlworker $SERVERURL
echo $?
parallel --sqlandworker $SERVERURL echo ::: no_output
echo $?
parallel --sqlmaster $SERVERURL echo ::: no_output
echo $?
# For p_wrapper to remove table
parallel --sqlandworker $DBURL true ::: dummy ::: dummy
}
export -f $(compgen -A function | egrep 'p_|par_')
# Tested that -j0 in parallel is fastest (up to 15 jobs)
# more than 3 jobs: sqlite locks
export LC_ALL=C
compgen -A function | grep par_ | sort |
stdout parallel --timeout 2000 -vj50% -k --tag --joblog /tmp/jl-`basename $0` p_wrapper \
:::: - ::: \$MYSQL \$PG \$SQLITE

View file

@ -8,14 +8,28 @@
# The tests must be able to run in parallel # The tests must be able to run in parallel
export SQLITE=sqlite3:///%2Frun%2Fshm%2Fparallel.db export SQLITE=sqlite3:///%2Frun%2Fshm%2Fparallel.db
export PG=pg://`whoami`:`whoami`@lo/`whoami` export PG=pg://`whoami`:`whoami`@localhost/`whoami`
export MYSQL=mysql://`whoami`:`whoami`@lo/`whoami` export MYSQL=mysql://`whoami`:`whoami`@localhost/`whoami`
export CSV=csv:///%2Frun%2Fshm export CSV=csv:///%2Frun%2Fshm
export INFLUX=influx:///parallel
export DEBUG=false export DEBUG=false
rm -f /run/shm/parallel.db rm -f /run/shm/parallel.db
mkdir -p /run/shm/csv mkdir -p /run/shm/csv
overlay_mysql() {
# MySQL is rediculously slow: Force it to work in RAM
sudo service mysql stop
mysqldir=/var/lib/mysql
upper=/dev/shm/mysql
work=/dev/shm/mysql-work
sudo umount $mysqldir 2>/dev/null
mkdir -p $upper $work
sudo mount -t overlay overlay -o lowerdir=$mysqldir,upperdir=$upper,workdir=$work $mysqldir
sudo chown mysql:mysql $mysqldir
sudo service mysql start
}
p_showsqlresult() { p_showsqlresult() {
# print results stored in $SERVERURL/$TABLE # print results stored in $SERVERURL/$TABLE
SERVERURL=$1 SERVERURL=$1
@ -46,7 +60,7 @@ p_wrapper() {
} }
p_template() { p_template() {
# Run the # Run the jobs with both master and worker
( (
# Make sure there is work to be done # Make sure there is work to be done
sleep 6; sleep 6;
@ -137,17 +151,54 @@ par_empty() {
true; true;
} }
hostname=`hostname` par_sql_joblog() {
export -f $(compgen -A function | egrep 'p_|par_') echo '### should only give a single --joblog heading'
# Tested that -j0 in parallel is fastest (up to 15 jobs) echo '### --sqlmaster/--sqlworker'
# -j5: SQLite complains about locked database. parallel -k --joblog - --sqlmaster $DBURL --wait sleep .3\;echo ::: {1..5} ::: {a..e} |
compgen -A function | grep par_ | sort | perl -pe 's/\d+\.\d+/999.999/g' | sort -n &
stdout parallel -vj4 -k --tag --joblog /tmp/jl-`basename $0` p_wrapper \ sleep 0.5
:::: - ::: \$MYSQL \$PG \$SQLITE \$CSV | T=$(mktemp)
parallel -k --joblog - --sqlworker $DBURL > "$T"
wait
# Needed because of race condition
cat "$T"; rm "$T"
echo '### --sqlandworker'
parallel -k --joblog - --sqlandworker $DBURL sleep .3\;echo ::: {1..5} ::: {a..e} |
perl -pe 's/\d+\.\d+/999.999/g' | sort -n
# TODO --sqlandworker --wait
}
par_no_table() {
echo 'bug #50018: --dburl without table dies'
parallel --sqlworker $SERVERURL
echo $?
parallel --sqlandworker $SERVERURL echo ::: no_output
echo $?
parallel --sqlmaster $SERVERURL echo ::: no_output
echo $?
# For p_wrapper to remove table
parallel --sqlandworker $DBURL true ::: dummy ::: dummy
}
export -f $(compgen -A function | grep p_)
export -f $(compgen -A function | G par_ "$@")
# Run the DBURLs in parallel, but only one of the same DBURL at the same time
joblog=/tmp/jl-`basename $0`
true > $joblog
do_dburl() {
export dbvar=$1
hostname=`hostname`
compgen -A function | G par_ | sort |
stdout parallel -vj1 -k --tag --joblog +$joblog p_wrapper {} \$$dbvar |
perl -pe 's/tbl\d+/TBL99999/gi;' | perl -pe 's/tbl\d+/TBL99999/gi;' |
perl -pe 's/(from TBL99999 order) .*/$1/g' | perl -pe 's/(from TBL99999 order) .*/$1/g' |
perl -pe 's/ *\b'"$hostname"'\b */hostname/g' | perl -pe 's/ *\b'"$hostname"'\b */hostname/g' |
grep -v -- --------------- | grep -v -- --------------- |
perl -pe 's/ *\bhost\b */host/g' | perl -pe 's/ *\bhost\b */host/g' |
perl -pe 's/ +/ /g' perl -pe 's/ +/ /g'
}
export -f do_dburl
parallel -vk --tag do_dburl ::: CSV INFLUX MYSQL PG SQLITE

View file

@ -8,7 +8,7 @@
# The tests must be able to run in parallel # The tests must be able to run in parallel
export SQLITE=sqlite3:///%2Frun%2Fshm%2Fparallel.db export SQLITE=sqlite3:///%2Frun%2Fshm%2Fparallel.db
export PG=pg://`whoami`:`whoami`@lo/`whoami` export PG=pg://`whoami`:`whoami`@localhost/`whoami`
export MYSQL=mysql://`whoami`:`whoami`@lo/`whoami` export MYSQL=mysql://`whoami`:`whoami`@lo/`whoami`
export CSV=csv:///%2Frun%2Fshm%2Fcsv export CSV=csv:///%2Frun%2Fshm%2Fcsv

View file

@ -223,7 +223,7 @@ par_remote_nice() {
par_hgrp_agrp_comma() { par_hgrp_agrp_comma() {
echo '### bug #63722: hostgroup with , breaks parser' echo '### bug #63722: hostgroup with , breaks parser'
stdout parallel --hgrp ::: id@csh@lo,tcsh@lo id@csh@lo,tcsh@lo | sort stdout parallel --hgrp ::: whoami@csh@lo,tcsh@lo whoami@csh@lo,tcsh@lo | sort
} }
par_hgrp_agrp() { par_hgrp_agrp() {

View file

@ -142,4 +142,4 @@ export -f $(compgen -A function | grep par_)
# Tested with -j1..8 # Tested with -j1..8
# -j6 was fastest # -j6 was fastest
#compgen -A function | grep par_ | sort | parallel --delay $D -j$P --tag -k '{} 2>&1' #compgen -A function | grep par_ | sort | parallel --delay $D -j$P --tag -k '{} 2>&1'
compgen -A function | grep par_ | sort | parallel --delay 0.1 -j2 --tag -k '{} 2>&1' compgen -A function | G par_ "$@" | sort | parallel --delay 0.1 -j2 --tag -k '{} 2>&1'

View file

@ -233,6 +233,6 @@ par_z_multiple_hosts_repeat_arg() {
} }
export -f $(compgen -A function | grep par_) export -f $(compgen -A function | grep par_)
compgen -A function | grep par_ | LC_ALL=C sort | compgen -A function | G par_ "$@" | LC_ALL=C sort |
parallel --timeout 10000% -j6 --tag -k --joblog /tmp/jl-`basename $0` '{} 2>&1' | parallel --timeout 10000% -j6 --tag -k --joblog /tmp/jl-`basename $0` '{} 2>&1' |
perl -pe 's:/usr/bin:/bin:g;' perl -pe 's:/usr/bin:/bin:g;'

View file

@ -6,14 +6,12 @@
# SSH only allowed to localhost/lo # SSH only allowed to localhost/lo
par_ssh_cmd_with_newline() { par_ssh_cmd_with_newline() {
echo '### Check --ssh with \n works' echo '### Check --ssh with \n works'
ssh=$(mktemp) ssh=$(mktemp)
cp -a /usr/bin/ssh "$ssh" cp -a /usr/bin/ssh "$ssh"
qssh=$(parallel -0 --shellquote "$ssh") qssh=$(parallel -0 --shellquote "$ssh")
parallel --ssh "$qssh" -S sh@lo ::: id parallel --ssh "$qssh" -S sh@lo ::: whoami
} }
par_controlmaster() { par_controlmaster() {
@ -153,6 +151,6 @@ par__--shellquote_command_len() {
} }
export -f $(compgen -A function | grep par_) export -f $(compgen -A function | grep par_)
compgen -A function | grep par_ | sort | compgen -A function | G par_ "$@" | sort |
# 2019-07-14 100% slowed down 4 threads/16GB # 2019-07-14 100% slowed down 4 threads/16GB
parallel -j75% --joblog /tmp/jl-`basename $0` -j3 --tag -k --delay 0.1 --retries 3 '{} 2>&1' parallel -j75% --joblog /tmp/jl-`basename $0` -j3 --tag -k --delay 0.1 --retries 3 '{} 2>&1'

View file

@ -1650,8 +1650,8 @@ _EOF
par_environment_too_big_ash() { par_environment_too_big_ash() {
myscript=$(cat <<'_EOF' myscript=$(cat <<'_EOF'
echo 'bug #50815: env_parallel should warn if the environment is too big' echo 'bug #50815: env_parallel should warn if the environment is too big'
len_var=63 len_var=53
len_var_remote=47 len_var_remote=37
len_var_quote=31 len_var_quote=31
len_var_quote_remote=21 len_var_quote_remote=21
len_fun=1 len_fun=1
@ -1720,7 +1720,7 @@ _EOF
par_environment_too_big_bash() { par_environment_too_big_bash() {
myscript=$(cat <<'_EOF' myscript=$(cat <<'_EOF'
echo 'bug #50815: env_parallel should warn if the environment is too big' echo 'bug #50815: env_parallel should warn if the environment is too big'
len_overhead=-20-$( (shopt;alias;typeset -f;typeset -p) | wc -c)/1000 len_overhead=-27-$( (shopt;alias;typeset -f;typeset -p) | wc -c)/1000
len_var=$len_overhead+56 len_var=$len_overhead+56
len_var_remote=$len_overhead+40 len_var_remote=$len_overhead+40
len_var_quote=$len_overhead+41 len_var_quote=$len_overhead+41
@ -1795,8 +1795,8 @@ par_environment_too_big_csh() {
par_environment_too_big_dash() { par_environment_too_big_dash() {
myscript=$(cat <<'_EOF' myscript=$(cat <<'_EOF'
echo 'bug #50815: env_parallel should warn if the environment is too big' echo 'bug #50815: env_parallel should warn if the environment is too big'
len_var=63 len_var=53
len_var_remote=47 len_var_remote=37
len_var_quote=31 len_var_quote=31
len_var_quote_remote=21 len_var_quote_remote=21
len_fun=1 len_fun=1
@ -1870,8 +1870,8 @@ par_environment_too_big_fish() {
par_environment_too_big_ksh() { par_environment_too_big_ksh() {
myscript=$(cat <<'_EOF' myscript=$(cat <<'_EOF'
echo 'bug #50815: env_parallel should warn if the environment is too big' echo 'bug #50815: env_parallel should warn if the environment is too big'
len_functions=-15-$(functions|wc -c)/1000 len_functions=-20-$(functions|wc -c)/1000
len_variables=-15-$(typeset -p | wc -c)/1000 len_variables=-20-$(typeset -p | wc -c)/1000
len_var=$len_variables+40 len_var=$len_variables+40
len_var_remote=$len_variables+30 len_var_remote=$len_variables+30
len_var_quote=$len_variables+43 len_var_quote=$len_variables+43
@ -1949,7 +1949,7 @@ par_environment_too_big_mksh() {
len_fun=28 len_fun=28
len_fun_remote=13 len_fun_remote=13
len_fun_quote=28 len_fun_quote=28
len_fun_quote_remote=23 len_fun_quote_remote=18
. `which env_parallel.mksh`; . `which env_parallel.mksh`;
@ -2013,8 +2013,8 @@ _EOF
par_environment_too_big_sh() { par_environment_too_big_sh() {
myscript=$(cat <<'_EOF' myscript=$(cat <<'_EOF'
echo 'bug #50815: env_parallel should warn if the environment is too big' echo 'bug #50815: env_parallel should warn if the environment is too big'
len_var=63 len_var=58
len_var_remote=47 len_var_remote=42
len_var_quote=31 len_var_quote=31
len_var_quote_remote=21 len_var_quote_remote=21
len_fun=1 # unsupported len_fun=1 # unsupported
@ -3321,7 +3321,7 @@ export -f $(compgen -A function | grep par_)
#compgen -A function | grep par_ | sort | parallel --delay $D -j$P --tag -k '{} 2>&1' #compgen -A function | grep par_ | sort | parallel --delay $D -j$P --tag -k '{} 2>&1'
#compgen -A function | grep par_ | sort | #compgen -A function | grep par_ | sort |
compgen -A function | grep par_ | LC_ALL=C sort | compgen -A function | G par_ "$@" | LC_ALL=C sort |
# parallel --joblog /tmp/jl-`basename $0` --delay $D -j$P --tag -k '{} 2>&1' # parallel --joblog /tmp/jl-`basename $0` --delay $D -j$P --tag -k '{} 2>&1'
# 2019-07-14 200% too high for 16 GB/4 thread # 2019-07-14 200% too high for 16 GB/4 thread
parallel --joblog /tmp/jl-`basename $0` -j75% --retries 2 --tag -k '{} 2>&1' | parallel --joblog /tmp/jl-`basename $0` -j75% --retries 2 --tag -k '{} 2>&1' |

View file

@ -143,6 +143,6 @@ par_filter_host_noise() {
export -f $(compgen -A function | grep par_) export -f $(compgen -A function | grep par_)
#compgen -A function | grep par_ | sort | parallel --delay $D -j$P --tag -k '{} 2>&1' #compgen -A function | grep par_ | sort | parallel --delay $D -j$P --tag -k '{} 2>&1'
compgen -A function | grep par_ | LC_ALL=C sort | compgen -A function | G par_ "$@" | LC_ALL=C sort |
parallel --joblog /tmp/jl-`basename $0` --delay 0.1 -j10 --tag -k '{} 2>&1' parallel --joblog /tmp/jl-`basename $0` --delay 0.1 -j10 --tag -k '{} 2>&1'

View file

@ -191,11 +191,12 @@ par_no_route_to_host() {
# Filter the list 5 times to make sure to get good hosts # Filter the list 5 times to make sure to get good hosts
export -f findhosts export -f findhosts
export -f filterhosts export -f filterhosts
nice bash -c ' # Run this in the background
nice tmux new-session -d -s filterhosts$$-$RANDOM -c '
findhosts | filterhosts | filterhosts | filterhosts | findhosts | filterhosts | filterhosts | filterhosts |
filterhosts | filterhosts | head > /tmp/filtered.$$ filterhosts | filterhosts | head > /tmp/filtered.$$
mv /tmp/filtered.$$ /tmp/filtered.hosts mv /tmp/filtered.$$ /tmp/filtered.hosts
' ' &
) & ) &
( (
# We just need one of each to complete # We just need one of each to complete
@ -228,23 +229,31 @@ par__d_filter_hosts() {
printf 'OKa\0OKb\0' | parallel -k -0 --filter-hosts -S lo echo printf 'OKa\0OKb\0' | parallel -k -0 --filter-hosts -S lo echo
} }
par_sshlogin_range() { par__sshlogin_range() {
echo '### --sshlogin with ranges' echo '### --sshlogin with ranges'
echo '### Jobs fail, but the important is the name of the hosts' echo '### Jobs fail, but the important is the name of the hosts'
doit() { doit() {
stdout parallel --dr "$@" echo ::: 1 | sort stdout parallel --dr "$@" echo ::: 1 | sort
} }
doit -S a[000-123].nx-dom,b[2,3,5,7-11]c[1,4,6].nx-dom cluster() {
doit -S{prod,dev}[000-100].nx-dom doit -S a[00-12].nx-dom,b[2,3,5,7-11]c[1,4,6].nx-dom
doit -S'2[49-51].0.[9-11].1[09-11]' }
devprod() {
doit -S{prod,dev}[000-010,098-101].nx-dom
}
ipaddr() {
doit -Sip'2[49-51].0.[9-11].1[09-11]'
}
export -f doit cluster devprod ipaddr
parallel -k ::: cluster devprod ipaddr
} }
export -f $(compgen -A function | grep par_) export -f $(compgen -A function | grep par_)
#compgen -A function | grep par_ | sort | parallel --delay $D -j$P --tag -k '{} 2>&1' #compgen -A function | grep par_ | sort | parallel --delay $D -j$P --tag -k '{} 2>&1'
#compgen -A function | grep par_ | sort | #compgen -A function | grep par_ | sort |
compgen -A function | grep par_ | LANG=C sort -ri | compgen -A function | G par_ "$@" | LANG=C sort |
# parallel --joblog /tmp/jl-`basename $0` --delay $D -j$P --tag -k '{} 2>&1' # parallel --joblog /tmp/jl-`basename $0` --delay $D -j$P --tag -k '{} 2>&1'
parallel --joblog /tmp/jl-`basename $0` --delay 0.1 -j200% --tag -k '{} 2>&1' | parallel --joblog /tmp/jl-`basename $0` --timeout 100 --delay 0.1 -j200% --tag -k '{} 2>&1' |
perl -pe 's/line \d\d\d+:/line XXX:/' | perl -pe 's/line \d\d\d+:/line XXX:/' |
perl -pe 's/\[\d\d\d+\]:/[XXX]:/' perl -pe 's/\[\d\d\d+\]:/[XXX]:/'

View file

@ -12,6 +12,7 @@ cleanup
touch ~/.parallel/will-cite touch ~/.parallel/will-cite
echo '### test parallel_tutorial' echo '### test parallel_tutorial'
unset DISPLAY
TMPDIR=/tmp/parllel-tutorial TMPDIR=/tmp/parllel-tutorial
mkdir -p "$TMPDIR" mkdir -p "$TMPDIR"
cd "$TMPDIR" cd "$TMPDIR"
@ -119,6 +120,8 @@ perl -ne '$/="\n\n"; /^Output/../^[^O]\S/ and next; /^ / and print;' "$testsuit
s:/tmp/par-job-\S+:script:g; s:/tmp/par-job-\S+:script:g;
s:par......par:tempfile:g; s:par......par:tempfile:g;
s:^tempfile\n::g; s:^tempfile\n::g;
#+(zenity:2012805): Gtk-WARNING **: 02:25:32.662: cannot open display:
s,.zenity.*cannot open display:,,;
# --progress => 1:local / 4 / 4 # --progress => 1:local / 4 / 4
s,1:local / . / .,1:local / 9 / 9,; s,1:local / . / .,1:local / 9 / 9,;
# bash: -c: line 1: .set a="tempfile"; if( { test -d "$a" } ) echo "$a is a dir" # bash: -c: line 1: .set a="tempfile"; if( { test -d "$a" } ) echo "$a is a dir"

View file

@ -132,7 +132,7 @@ par_--html() {
echo echo
} }
par__listproc() { par_listproc() {
echo "### Test --show-processlist|proclist|listproc"; echo "### Test --show-processlist|proclist|listproc";
# Take the minimum of 3 runs to avoid error counting # Take the minimum of 3 runs to avoid error counting
# if one of the other jobs happens to be running # if one of the other jobs happens to be running
@ -194,5 +194,5 @@ par_--help() {
export -f $(compgen -A function | grep par_) export -f $(compgen -A function | grep par_)
compgen -A function | grep par_ | LC_ALL=C sort | compgen -A function | G par_ "$@" | LC_ALL=C sort |
parallel --timeout 3000% -j6 --tag -k --joblog /tmp/jl-`basename $0` '{} 2>&1' parallel --timeout 10 -j0 --tag -k --joblog /tmp/jl-`basename $0` '{} 2>&1'

View file

@ -67,6 +67,10 @@ Vagrant.configure("2") do |config|
# #
# View the documentation for the provider you are using for more # View the documentation for the provider you are using for more
# information on available options. # information on available options.
config.vm.boot_timeout = 100
# SSH configuration
config.ssh.config = "/home/tange/.ssh/config"
config.ssh.dsa_authentication = true
# Enable provisioning with a shell script. Additional provisioners such as # Enable provisioning with a shell script. Additional provisioners such as
# Ansible, Chef, Docker, Puppet and Salt are also available. Please see the # Ansible, Chef, Docker, Puppet and Salt are also available. Please see the

View file

@ -1,84 +0,0 @@
# -*- mode: ruby -*-
# vi: set ft=ruby :
# SPDX-FileCopyrightText: 2023 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
#
# SPDX-License-Identifier: GPL-3.0-or-later
# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
Vagrant.configure("2") do |config|
# The most common configuration options are documented and commented below.
# For a complete reference, please see the online documentation at
# https://docs.vagrantup.com.
# Every Vagrant development environment requires a box. You can search for
# boxes at https://vagrantcloud.com/search.
config.vm.box = "FritsHoogland/centos39-oracle817"
# Disable automatic box update checking. If you disable this, then
# boxes will only be checked for updates when the user runs
# `vagrant box outdated`. This is not recommended.
# config.vm.box_check_update = false
# Create a forwarded port mapping which allows access to a specific port
# within the machine from a port on the host machine. In the example below,
# accessing "localhost:8080" will access port 80 on the guest machine.
# NOTE: This will enable public access to the opened port
# config.vm.network "forwarded_port", guest: 80, host: 8080
config.vm.network :forwarded_port, guest: 22, host: 50136, id: 'ssh'
# Create a forwarded port mapping which allows access to a specific port
# within the machine from a port on the host machine and only allow access
# via 127.0.0.1 to disable public access
# config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1"
# Create a private network, which allows host-only access to the machine
# using a specific IP.
config.vm.network "private_network", ip: "172.27.27.3"
# Create a public network, which generally matched to bridged network.
# Bridged networks make the machine appear as another physical device on
# your network.
# config.vm.network "public_network"
# Share an additional folder to the guest VM. The first argument is
# the path on the host to the actual folder. The second argument is
# the path on the guest to mount the folder. And the optional third
# argument is a set of non-required options.
# config.vm.synced_folder "../data", "/vagrant_data"
# Provider-specific configuration so you can fine-tune various
# backing providers for Vagrant. These expose provider-specific options.
# Example for VirtualBox:
#
config.vm.provider "virtualbox" do |vb|
# # Display the VirtualBox GUI when booting the machine
# vb.gui = true
#
# # Customize the amount of memory on the VM:
# vb.memory = "512"
vb.memory = "300"
vb.customize ["modifyvm", :id, "--usb", "on"]
vb.customize ["modifyvm", :id, "--usbehci", "off"]
end
#
# View the documentation for the provider you are using for more
# information on available options.
# Enable provisioning with a shell script. Additional provisioners such as
# Ansible, Chef, Docker, Puppet and Salt are also available. Please see the
# documentation for more information about their specific syntax and use.
config.vm.provision "shell" do |s|
ssh_pub_key = File.readlines("../../authorized_keys").first.strip
s.inline = <<-SHELL
mkdir /root/.ssh
echo #{ssh_pub_key} >> /home/vagrant/.ssh/authorized_keys
echo #{ssh_pub_key} >> /root/.ssh/authorized_keys
sudo apt install rsync || sudo yum install -y rsync || sudo pkg install -y rsync
sudo apt install perl || sudo yum install -y perl || sudo pkg install -y perl
SHELL
end
end

View file

@ -1,76 +0,0 @@
# -*- mode: ruby -*-
# vi: set ft=ruby :
# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
Vagrant.configure("2") do |config|
# The most common configuration options are documented and commented below.
# For a complete reference, please see the online documentation at
# https://docs.vagrantup.com.
# Every Vagrant development environment requires a box. You can search for
# boxes at https://vagrantcloud.com/search.
config.vm.box = "generic/freebsd12"
# Disable automatic box update checking. If you disable this, then
# boxes will only be checked for updates when the user runs
# `vagrant box outdated`. This is not recommended.
# config.vm.box_check_update = false
# Create a forwarded port mapping which allows access to a specific port
# within the machine from a port on the host machine. In the example below,
# accessing "localhost:8080" will access port 80 on the guest machine.
# NOTE: This will enable public access to the opened port
# config.vm.network "forwarded_port", guest: 80, host: 8080
# Create a forwarded port mapping which allows access to a specific port
# within the machine from a port on the host machine and only allow access
# via 127.0.0.1 to disable public access
# config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1"
# Create a private network, which allows host-only access to the machine
# using a specific IP.
config.vm.network "private_network", ip: "172.27.27.72"
# Create a public network, which generally matched to bridged network.
# Bridged networks make the machine appear as another physical device on
# your network.
# config.vm.network "public_network"
# Share an additional folder to the guest VM. The first argument is
# the path on the host to the actual folder. The second argument is
# the path on the guest to mount the folder. And the optional third
# argument is a set of non-required options.
# config.vm.synced_folder "../data", "/vagrant_data"
# Provider-specific configuration so you can fine-tune various
# backing providers for Vagrant. These expose provider-specific options.
# Example for VirtualBox:
#
config.vm.provider "virtualbox" do |vb|
# # Display the VirtualBox GUI when booting the machine
# vb.gui = true
#
# # Customize the amount of memory on the VM:
# vb.memory = "512"
vb.memory = "350"
end
#
# View the documentation for the provider you are using for more
# information on available options.
# Enable provisioning with a shell script. Additional provisioners such as
# Puppet, Chef, Ansible, Salt, and Docker are also available. Please see the
# documentation for more information about their specific syntax and use.
config.vm.provision "shell" do |s|
ssh_pub_key = File.readlines("../../authorized_keys").first.strip
s.inline = <<-SHELL
mkdir /root/.ssh
echo #{ssh_pub_key} >> /home/vagrant/.ssh/authorized_keys
echo #{ssh_pub_key} >> /root/.ssh/authorized_keys
sudo apt install rsync || sudo yum install -y rsync || sudo pkg install -y rsync
SHELL
end
end

View file

@ -1,7 +1,7 @@
# -*- mode: ruby -*- # -*- mode: ruby -*-
# vi: set ft=ruby : # vi: set ft=ruby :
# SPDX-FileCopyrightText: 2022 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc. # SPDX-FileCopyrightText: 2023 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
# #
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
@ -16,7 +16,7 @@ Vagrant.configure("2") do |config|
# Every Vagrant development environment requires a box. You can search for # Every Vagrant development environment requires a box. You can search for
# boxes at https://vagrantcloud.com/search. # boxes at https://vagrantcloud.com/search.
config.vm.box = "tange/centos3" config.vm.box = "generic/freebsd14"
# Disable automatic box update checking. If you disable this, then # Disable automatic box update checking. If you disable this, then
# boxes will only be checked for updates when the user runs # boxes will only be checked for updates when the user runs
@ -27,9 +27,7 @@ Vagrant.configure("2") do |config|
# within the machine from a port on the host machine. In the example below, # within the machine from a port on the host machine. In the example below,
# accessing "localhost:8080" will access port 80 on the guest machine. # accessing "localhost:8080" will access port 80 on the guest machine.
# NOTE: This will enable public access to the opened port # NOTE: This will enable public access to the opened port
config.vm.network :forwarded_port, guest: 22, host: 50036, id: 'ssh' # config.vm.network "forwarded_port", guest: 80, host: 8080
config.vm.boot_timeout = 600
# Create a forwarded port mapping which allows access to a specific port # Create a forwarded port mapping which allows access to a specific port
# within the machine from a port on the host machine and only allow access # within the machine from a port on the host machine and only allow access
@ -38,7 +36,7 @@ Vagrant.configure("2") do |config|
# Create a private network, which allows host-only access to the machine # Create a private network, which allows host-only access to the machine
# using a specific IP. # using a specific IP.
config.vm.network "private_network", ip: "172.27.27.3" config.vm.network "private_network", ip: "172.27.27.74"
# Create a public network, which generally matched to bridged network. # Create a public network, which generally matched to bridged network.
# Bridged networks make the machine appear as another physical device on # Bridged networks make the machine appear as another physical device on
@ -60,14 +58,15 @@ Vagrant.configure("2") do |config|
# vb.gui = true # vb.gui = true
# #
# # Customize the amount of memory on the VM: # # Customize the amount of memory on the VM:
vb.memory = "256" vb.memory = "512"
# vb.memory = "300"
end end
# #
# View the documentation for the provider you are using for more # View the documentation for the provider you are using for more
# information on available options. # information on available options.
# Enable provisioning with a shell script. Additional provisioners such as # Enable provisioning with a shell script. Additional provisioners such as
# Puppet, Chef, Ansible, Salt, and Docker are also available. Please see the # Ansible, Chef, Docker, Puppet and Salt are also available. Please see the
# documentation for more information about their specific syntax and use. # documentation for more information about their specific syntax and use.
config.vm.provision "shell" do |s| config.vm.provision "shell" do |s|
ssh_pub_key = File.readlines("../../authorized_keys").first.strip ssh_pub_key = File.readlines("../../authorized_keys").first.strip

View file

@ -1,5 +1,5 @@
### These tests requires VirtualBox running with the following images ### These tests requires VirtualBox running with the following images
vagrant@freebsd12 vagrant@freebsd14
par_compress_pipe par_compress_pipe 2>&1 par_compress_pipe par_compress_pipe 2>&1
par_compress_pipe Test --compress --pipe par_compress_pipe Test --compress --pipe
par_compress_pipe 1000 1000 3893 par_compress_pipe 1000 1000 3893

View file

@ -64,34 +64,34 @@ par_bug43654 par_bug43654 100% 1:0=0s 1
par_colour_failed --colour-failed --colour par_colour_failed --colour-failed --colour
par_colour_failed seq 1;exit 0 par_colour_failed seq 1;exit 0
par_colour_failed 1 par_colour_failed 1
par_colour_failed seq 1;exit 1(B par_colour_failed seq 1;exit 1
par_colour_failed 1(B par_colour_failed 1
par_colour_failed seq 1;exit 2(B par_colour_failed seq 1;exit 2
par_colour_failed 1(B par_colour_failed 1
par_colour_failed seq 2;exit 0 par_colour_failed seq 2;exit 0
par_colour_failed 1 par_colour_failed 1
par_colour_failed 2 par_colour_failed 2
par_colour_failed seq 2;exit 1(B par_colour_failed seq 2;exit 1
par_colour_failed 1(B par_colour_failed 1
par_colour_failed 2(B par_colour_failed 2
par_colour_failed seq 2;exit 2(B par_colour_failed seq 2;exit 2
par_colour_failed 1(B par_colour_failed 1
par_colour_failed 2(B par_colour_failed 2
par_colour_failed seq 1;exit 0(B par_colour_failed seq 1;exit 0
par_colour_failed 1(B par_colour_failed 1
par_colour_failed seq 1;exit 1(B par_colour_failed seq 1;exit 1
par_colour_failed 1(B par_colour_failed 1
par_colour_failed seq 1;exit 2(B par_colour_failed seq 1;exit 2
par_colour_failed 1(B par_colour_failed 1
par_colour_failed seq 2;exit 0(B par_colour_failed seq 2;exit 0
par_colour_failed 1(B par_colour_failed 1
par_colour_failed 2(B par_colour_failed 2
par_colour_failed seq 2;exit 1(B par_colour_failed seq 2;exit 1
par_colour_failed 1(B par_colour_failed 1
par_colour_failed 2(B par_colour_failed 2
par_colour_failed seq 2;exit 2(B par_colour_failed seq 2;exit 2
par_colour_failed 1(B par_colour_failed 1
par_colour_failed 2(B par_colour_failed 2
par_colsep_0 bug --colsep 0 par_colsep_0 bug --colsep 0
par_colsep_0 OK par_colsep_0 OK
par_colsep_0 OK par_colsep_0 OK
@ -145,9 +145,9 @@ par_csv_pipe 9000"
par_csv_pipe 11000" par_csv_pipe 11000"
par_ctagstring ### --ctag --ctagstring should be different from --tag --tagstring par_ctagstring ### --ctag --ctagstring should be different from --tag --tagstring
par_ctagstring 8 par_ctagstring 8
par_ctagstring 37 par_ctagstring 35
par_ctagstring 10 par_ctagstring 10
par_ctagstring 39 par_ctagstring 37
par_delimiter ### Test --delimiter and -d: Delimiter instead of newline par_delimiter ### Test --delimiter and -d: Delimiter instead of newline
par_delimiter # Yes there is supposed to be an extra newline for -d N par_delimiter # Yes there is supposed to be an extra newline for -d N
par_delimiter This is line 1 par_delimiter This is line 1
@ -332,8 +332,8 @@ par_link_files_as_only_arg 1 1 1
par_link_files_as_only_arg 2 2 2 par_link_files_as_only_arg 2 2 2
par_link_files_as_only_arg 3 3 3 par_link_files_as_only_arg 3 3 3
par_ll_long_followed_by_short par_ll_long_followed_by_short A very long line par_ll_long_followed_by_short par_ll_long_followed_by_short A very long line
par_ll_long_followed_by_short  par_ll_long_followed_by_short A very long line par_ll_long_followed_by_short M par_ll_long_followed_by_short A very long line
par_ll_long_followed_by_short  par_ll_long_followed_by_short OK par_ll_long_followed_by_short M par_ll_long_followed_by_short OK
par_ll_no_newline bug #64030: parallel --ll echo -n ::: foo par_ll_no_newline bug #64030: parallel --ll echo -n ::: foo
par_ll_no_newline par_ll_no_newline lines par_ll_no_newline par_ll_no_newline lines
par_ll_no_newline par_ll_no_newline two par_ll_no_newline par_ll_no_newline two

View file

@ -542,36 +542,66 @@ par_line_buffer ### --line-buffer
par_line_buffer 55 55 120 par_line_buffer 55 55 120
par_line_buffer These must diff: 1 par_line_buffer These must diff: 1
par_ll_color_long_line ### --latest-line --color with lines longer than terminal width par_ll_color_long_line ### --latest-line --color with lines longer than terminal width
par_ll_color_long_line par_ll_color_long_line 01x 0100000 1 2 3 4 5 6 7>(B par_ll_color_long_line par_ll_color_long_line 01x 0100000 1 2 3 4 5 6 7>
par_ll_color_long_line par_ll_color_long_line 02xx 0200000 1 2 3 4 5 6 7>(B par_ll_color_long_line par_ll_color_long_line 02xx 0200000 1 2 3 4 5 6 7>
par_ll_color_long_line par_ll_color_long_line 03xxx 0300000 1 2 3 4 5 6 7>(B par_ll_color_long_line par_ll_color_long_line 03xxx 0300000 1 2 3 4 5 6 7>
par_ll_color_long_line par_ll_color_long_line 04xxxx 0400000 1 2 3 4 5 6 7>(B par_ll_color_long_line par_ll_color_long_line 04xxxx 0400000 1 2 3 4 5 6 7>
par_ll_color_long_line par_ll_color_long_line 05xxxxx 0500000 1 2 3 4 5 6 7>(B par_ll_color_long_line par_ll_color_long_line 05xxxxx 0500000 1 2 3 4 5 6 7>
par_ll_color_long_line par_ll_color_long_line 06xxxxxx 0600000 1 2 3>(B par_ll_color_long_line par_ll_color_long_line 06xxxxxx 0600000 1 2 3>
par_ll_color_long_line par_ll_color_long_line 07xxxxxxx 0700000 1 2 3>(B par_ll_color_long_line par_ll_color_long_line 07xxxxxxx 0700000 1 2 3>
par_ll_color_long_line par_ll_color_long_line 08xxxxxxxx 0800000 1 2 3>(B par_ll_color_long_line par_ll_color_long_line 08xxxxxxxx 0800000 1 2 3>
par_ll_color_long_line par_ll_color_long_line 09xxxxxxxxx 0900000 1 2 3>(B par_ll_color_long_line par_ll_color_long_line 09xxxxxxxxx 0900000 1 2 3>
par_ll_color_long_line par_ll_color_long_line 10xxxxxxxxxx 1000000 1 2 3>(B par_ll_color_long_line par_ll_color_long_line 10xxxxxxxxxx 1000000 1 2 3>
par_ll_color_long_line par_ll_color_long_line 11xxxxxxxxxxx 1100000 1 2 3>(B par_ll_color_long_line par_ll_color_long_line 11xxxxxxxxxxx 1100000 1 2 3>
par_ll_color_long_line par_ll_color_long_line 12xxxxxxxxxxxx 1200000 1 2 3>(B par_ll_color_long_line par_ll_color_long_line 12xxxxxxxxxxxx 1200000 1 2 3>
par_ll_color_long_line par_ll_color_long_line 13xxxxxxxxxxxxx 1300000 1 2 3>(B par_ll_color_long_line par_ll_color_long_line 13xxxxxxxxxxxxx 1300000 1 2 3>
par_ll_color_long_line par_ll_color_long_line 14xxxxxxxxxxxxxx 14000>(B par_ll_color_long_line par_ll_color_long_line 14xxxxxxxxxxxxxx 14000>
par_ll_color_long_line par_ll_color_long_line 15xxxxxxxxxxxxxxx 15000>(B par_ll_color_long_line par_ll_color_long_line 15xxxxxxxxxxxxxxx 15000>
par_ll_color_long_line par_ll_color_long_line 16xxxxxxxxxxxxxxxx 16000>(B par_ll_color_long_line par_ll_color_long_line 16xxxxxxxxxxxxxxxx 16000>
par_ll_color_long_line par_ll_color_long_line 17xxxxxxxxxxxxxxxxx 17000>(B par_ll_color_long_line par_ll_color_long_line 17xxxxxxxxxxxxxxxxx 17000>
par_ll_color_long_line par_ll_color_long_line 18xxxxxxxxxxxxxxxxxx 18000>(B par_ll_color_long_line par_ll_color_long_line 18xxxxxxxxxxxxxxxxxx 18000>
par_ll_color_long_line par_ll_color_long_line 19xxxxxxxxxxxxxxxxxxx 19000>(B par_ll_color_long_line par_ll_color_long_line 19xxxxxxxxxxxxxxxxxxx 19000>
par_ll_color_long_line par_ll_color_long_line 20xxxxxxxxxxxxxxxxxxxx 20000>(B par_ll_color_long_line par_ll_color_long_line 20xxxxxxxxxxxxxxxxxxxx 20000>
par_ll_color_long_line par_ll_color_long_line 21xxxxxxxxxxxxxxxxxxxxx 21000>(B par_ll_color_long_line par_ll_color_long_line 21xxxxxxxxxxxxxxxxxxxxx 21000>
par_ll_color_long_line par_ll_color_long_line 22xxxxxxxxxxxxxxxxxxxxxx >(B par_ll_color_long_line par_ll_color_long_line 22xxxxxxxxxxxxxxxxxxxxxx >
par_ll_color_long_line par_ll_color_long_line 23xxxxxxxxxxxxxxxxxxxxxxx >(B par_ll_color_long_line par_ll_color_long_line 23xxxxxxxxxxxxxxxxxxxxxxx >
par_ll_color_long_line par_ll_color_long_line 24xxxxxxxxxxxxxxxxxxxxxxxx >(B par_ll_color_long_line par_ll_color_long_line 24xxxxxxxxxxxxxxxxxxxxxxxx >
par_ll_color_long_line par_ll_color_long_line 25xxxxxxxxxxxxxxxxxxxxxxxxx >(B par_ll_color_long_line par_ll_color_long_line 25xxxxxxxxxxxxxxxxxxxxxxxxx >
par_ll_color_long_line par_ll_color_long_line 26xxxxxxxxxxxxxxxxxxxxxxxxxx >(B par_ll_color_long_line par_ll_color_long_line 26xxxxxxxxxxxxxxxxxxxxxxxxxx >
par_ll_color_long_line par_ll_color_long_line 27xxxxxxxxxxxxxxxxxxxxxxxxxxx>(B par_ll_color_long_line par_ll_color_long_line 27xxxxxxxxxxxxxxxxxxxxxxxxxxx>
par_ll_color_long_line par_ll_color_long_line 28xxxxxxxxxxxxxxxxxxxxxxxxxxx>(B par_ll_color_long_line par_ll_color_long_line 28xxxxxxxxxxxxxxxxxxxxxxxxxxx>
par_ll_color_long_line par_ll_color_long_line 29xxxxxxxxxxxxxxxxxxxxxxxxxxx>(B par_ll_color_long_line par_ll_color_long_line 29xxxxxxxxxxxxxxxxxxxxxxxxxxx>
par_ll_color_long_line par_ll_color_long_line 30xxxxxxxxxxxxxxxxxxxxxxxxxxx>(B par_ll_color_long_line par_ll_color_long_line 30xxxxxxxxxxxxxxxxxxxxxxxxxxx>
par_ll_color_long_line M par_ll_color_long_line 01x 0100000 1 2 3 4 5 6 7>
par_ll_color_long_line M par_ll_color_long_line 02xx 0200000 1 2 3 4 5 6 7>
par_ll_color_long_line M par_ll_color_long_line 03xxx 0300000 1 2 3 4 5 6 7>
par_ll_color_long_line M par_ll_color_long_line 04xxxx 0400000 1 2 3 4 5 6 7>
par_ll_color_long_line M par_ll_color_long_line 05xxxxx 0500000 1 2 3 4 5 6 7>
par_ll_color_long_line M par_ll_color_long_line 06xxxxxx 0600000 1 2 3>
par_ll_color_long_line M par_ll_color_long_line 07xxxxxxx 0700000 1 2 3>
par_ll_color_long_line M par_ll_color_long_line 08xxxxxxxx 0800000 1 2 3>
par_ll_color_long_line M par_ll_color_long_line 09xxxxxxxxx 0900000 1 2 3>
par_ll_color_long_line M par_ll_color_long_line 10xxxxxxxxxx 1000000 1 2 3>
par_ll_color_long_line M par_ll_color_long_line 11xxxxxxxxxxx 1100000 1 2 3>
par_ll_color_long_line M par_ll_color_long_line 12xxxxxxxxxxxx 1200000 1 2 3>
par_ll_color_long_line M par_ll_color_long_line 13xxxxxxxxxxxxx 1300000 1 2 3>
par_ll_color_long_line M par_ll_color_long_line 14xxxxxxxxxxxxxx 14000>
par_ll_color_long_line M par_ll_color_long_line 15xxxxxxxxxxxxxxx 15000>
par_ll_color_long_line M par_ll_color_long_line 16xxxxxxxxxxxxxxxx 16000>
par_ll_color_long_line M par_ll_color_long_line 17xxxxxxxxxxxxxxxxx 17000>
par_ll_color_long_line M par_ll_color_long_line 18xxxxxxxxxxxxxxxxxx 18000>
par_ll_color_long_line M par_ll_color_long_line 19xxxxxxxxxxxxxxxxxxx 19000>
par_ll_color_long_line M par_ll_color_long_line 20xxxxxxxxxxxxxxxxxxxx 20000>
par_ll_color_long_line M par_ll_color_long_line 21xxxxxxxxxxxxxxxxxxxxx 21000>
par_ll_color_long_line M par_ll_color_long_line 22xxxxxxxxxxxxxxxxxxxxxx >
par_ll_color_long_line M par_ll_color_long_line 23xxxxxxxxxxxxxxxxxxxxxxx >
par_ll_color_long_line M par_ll_color_long_line 24xxxxxxxxxxxxxxxxxxxxxxxx >
par_ll_color_long_line M par_ll_color_long_line 25xxxxxxxxxxxxxxxxxxxxxxxxx >
par_ll_color_long_line M par_ll_color_long_line 26xxxxxxxxxxxxxxxxxxxxxxxxxx >
par_ll_color_long_line M par_ll_color_long_line 27xxxxxxxxxxxxxxxxxxxxxxxxxxx>
par_ll_color_long_line M par_ll_color_long_line 28xxxxxxxxxxxxxxxxxxxxxxxxxxx>
par_ll_color_long_line M par_ll_color_long_line 29xxxxxxxxxxxxxxxxxxxxxxxxxxx>
par_ll_color_long_line M par_ll_color_long_line 30xxxxxxxxxxxxxxxxxxxxxxxxxxx>
par_ll_long_line ### --latest-line with lines longer than terminal width par_ll_long_line ### --latest-line with lines longer than terminal width
par_ll_long_line par_ll_long_line 01x 0100000 1 2 3 4 5 6 7> par_ll_long_line par_ll_long_line 01x 0100000 1 2 3 4 5 6 7>
par_ll_long_line par_ll_long_line 02xx 0200000 1 2 3 4 5 6 7> par_ll_long_line par_ll_long_line 02xx 0200000 1 2 3 4 5 6 7>
@ -603,6 +633,36 @@ par_ll_long_line par_ll_long_line 27xxxxxxxxxxxxxxxxxxxxxxxxxxx>
par_ll_long_line par_ll_long_line 28xxxxxxxxxxxxxxxxxxxxxxxxxxx> par_ll_long_line par_ll_long_line 28xxxxxxxxxxxxxxxxxxxxxxxxxxx>
par_ll_long_line par_ll_long_line 29xxxxxxxxxxxxxxxxxxxxxxxxxxx> par_ll_long_line par_ll_long_line 29xxxxxxxxxxxxxxxxxxxxxxxxxxx>
par_ll_long_line par_ll_long_line 30xxxxxxxxxxxxxxxxxxxxxxxxxxx> par_ll_long_line par_ll_long_line 30xxxxxxxxxxxxxxxxxxxxxxxxxxx>
par_ll_long_line M par_ll_long_line 01x 0100000 1 2 3 4 5 6 7>
par_ll_long_line M par_ll_long_line 02xx 0200000 1 2 3 4 5 6 7>
par_ll_long_line M par_ll_long_line 03xxx 0300000 1 2 3 4 5 6 7>
par_ll_long_line M par_ll_long_line 04xxxx 0400000 1 2 3 4 5 6 7>
par_ll_long_line M par_ll_long_line 05xxxxx 0500000 1 2 3 4 5 6 7>
par_ll_long_line M par_ll_long_line 06xxxxxx 0600000 1 2 3>
par_ll_long_line M par_ll_long_line 07xxxxxxx 0700000 1 2 3>
par_ll_long_line M par_ll_long_line 08xxxxxxxx 0800000 1 2 3>
par_ll_long_line M par_ll_long_line 09xxxxxxxxx 0900000 1 2 3>
par_ll_long_line M par_ll_long_line 10xxxxxxxxxx 1000000 1 2 3>
par_ll_long_line M par_ll_long_line 11xxxxxxxxxxx 1100000 1 2 3>
par_ll_long_line M par_ll_long_line 12xxxxxxxxxxxx 1200000 1 2 3>
par_ll_long_line M par_ll_long_line 13xxxxxxxxxxxxx 1300000 1 2 3>
par_ll_long_line M par_ll_long_line 14xxxxxxxxxxxxxx 14000>
par_ll_long_line M par_ll_long_line 15xxxxxxxxxxxxxxx 15000>
par_ll_long_line M par_ll_long_line 16xxxxxxxxxxxxxxxx 16000>
par_ll_long_line M par_ll_long_line 17xxxxxxxxxxxxxxxxx 17000>
par_ll_long_line M par_ll_long_line 18xxxxxxxxxxxxxxxxxx 18000>
par_ll_long_line M par_ll_long_line 19xxxxxxxxxxxxxxxxxxx 19000>
par_ll_long_line M par_ll_long_line 20xxxxxxxxxxxxxxxxxxxx 20000>
par_ll_long_line M par_ll_long_line 21xxxxxxxxxxxxxxxxxxxxx 21000>
par_ll_long_line M par_ll_long_line 22xxxxxxxxxxxxxxxxxxxxxx >
par_ll_long_line M par_ll_long_line 23xxxxxxxxxxxxxxxxxxxxxxx >
par_ll_long_line M par_ll_long_line 24xxxxxxxxxxxxxxxxxxxxxxxx >
par_ll_long_line M par_ll_long_line 25xxxxxxxxxxxxxxxxxxxxxxxxx >
par_ll_long_line M par_ll_long_line 26xxxxxxxxxxxxxxxxxxxxxxxxxx >
par_ll_long_line M par_ll_long_line 27xxxxxxxxxxxxxxxxxxxxxxxxxxx>
par_ll_long_line M par_ll_long_line 28xxxxxxxxxxxxxxxxxxxxxxxxxxx>
par_ll_long_line M par_ll_long_line 29xxxxxxxxxxxxxxxxxxxxxxxxxxx>
par_ll_long_line M par_ll_long_line 30xxxxxxxxxxxxxxxxxxxxxxxxxxx>
par_load_blocks ### Test if --load blocks. Bug. par_load_blocks ### Test if --load blocks. Bug.
par_load_blocks 53d025127ae99ab79e8502aae2d9bea6 - par_load_blocks 53d025127ae99ab79e8502aae2d9bea6 -
par_load_blocks 53d025127ae99ab79e8502aae2d9bea6 - par_load_blocks 53d025127ae99ab79e8502aae2d9bea6 -

View file

@ -1,79 +1,3 @@
par__I_X_m ### Test -I with -X and -m
par__I_X_m 1 1
par__I_X_m 2 1
par__I_X_m 2 2
par__I_X_m 3 1
par__I_X_m 3 2
par__I_X_m 3 3
par__I_X_m 4 1
par__I_X_m 4 2
par__I_X_m 4 3
par__I_X_m 4 4
par__I_X_m 5 1
par__I_X_m 5 2
par__I_X_m 5 3
par__I_X_m 5 4
par__I_X_m 5 5
par__I_X_m 6 1
par__I_X_m 6 2
par__I_X_m 6 3
par__I_X_m 6 4
par__I_X_m 6 5
par__I_X_m 6 6
par__I_X_m 7 1
par__I_X_m 7 2
par__I_X_m 7 3
par__I_X_m 7 4
par__I_X_m 7 5
par__I_X_m 7 6
par__I_X_m 7 7
par__I_X_m 8 1
par__I_X_m 8 2
par__I_X_m 8 3
par__I_X_m 8 4
par__I_X_m 8 5
par__I_X_m 8 6
par__I_X_m 8 7
par__I_X_m 8 8
par__I_X_m 9 1
par__I_X_m 9 2
par__I_X_m 9 3
par__I_X_m 9 4
par__I_X_m 9 5
par__I_X_m 9 6
par__I_X_m 9 7
par__I_X_m 9 8
par__I_X_m 9 9
par__I_X_m 10 1
par__I_X_m 10 2
par__I_X_m 10 3
par__I_X_m 10 4
par__I_X_m 10 5
par__I_X_m 10 6
par__I_X_m 10 7
par__I_X_m 10 8
par__I_X_m 10 9
par__I_X_m 10 10
par__I_X_m a1 b1
par__I_X_m a2 b1 b2
par__I_X_m a3 b1 b2 b3
par__I_X_m a4 b1 b2 b3 b4
par__I_X_m a5 b1 b2 b3 b4 b5
par__I_X_m a6 b1 b2 b3 b4 b5 b6
par__I_X_m a7 b1 b2 b3 b4 b5 b6 b7
par__I_X_m a8 b1 b2 b3 b4 b5 b6 b7 b8
par__I_X_m a9 b1 b2 b3 b4 b5 b6 b7 b8 b9
par__I_X_m a10 b1 b2 b3 b4 b5 b6 b7 b8 b9 b10
par__I_X_m a1 b1
par__I_X_m a2 b1 2
par__I_X_m a3 b1 2 3
par__I_X_m a4 b1 2 3 4
par__I_X_m a5 b1 2 3 4 5
par__I_X_m a6 b1 2 3 4 5 6
par__I_X_m a7 b1 2 3 4 5 6 7
par__I_X_m a8 b1 2 3 4 5 6 7 8
par__I_X_m a9 b1 2 3 4 5 6 7 8 9
par__I_X_m a10 b1 2 3 4 5 6 7 8 9 10
par__arg_sep ### Test basic --arg-sep par__arg_sep ### Test basic --arg-sep
par__arg_sep a par__arg_sep a
par__arg_sep b par__arg_sep b
@ -106,222 +30,6 @@ par__arg_sep b
par__arg_sep cat par__arg_sep cat
par__arg_sep echo b par__arg_sep echo b
par__arg_sep b par__arg_sep b
par__plus ### --plus
par__plus (It is OK to start with extra / or end with extra .)
par__plus a = /a = a. = /a. = a. = /a. = a. = /a.
par__plus a.b = /a.b = a.b = /a.b = a.b. = /a.b. = a.b. = /a.b.
par__plus a.b.c = /a.b.c = a.b.c = /a.b.c = a.b.c = /a.b.c = a.b.c. = /a.b.c.
par__plus a.b.c.d = /a.b.c.d = a.b.c.d = /a.b.c.d = a.b.c.d = /a.b.c.d = a.b.c.d = /a.b.c.d
par__plus a/1 = a/1 = a/1. = a/1. = a/1. = a/1. = a/1. = a/1.
par__plus a.b/1.2 = a.b/1.2 = a.b/1.2 = a.b/1.2 = a.b/1.2. = a.b/1.2. = a.b/1.2. = a.b/1.2.
par__plus a.b.c/1.2.3 = a.b.c/1.2.3 = a.b.c/1.2.3 = a.b.c/1.2.3 = a.b.c/1.2.3 = a.b.c/1.2.3 = a.b.c/1.2.3. = a.b.c/1.2.3.
par__plus a.b.c.d/1.2.3.4 = a.b.c.d/1.2.3.4 = a.b.c.d/1.2.3.4 = a.b.c.d/1.2.3.4 = a.b.c.d/1.2.3.4 = a.b.c.d/1.2.3.4 = a.b.c.d/1.2.3.4 = a.b.c.d/1.2.3.4
par__plus a. = /a. = a. = /a. = a.. = /a.. = a.. = /a..
par__plus a.b. = /a.b. = a.b. = /a.b. = a.b. = /a.b. = a.b.. = /a.b..
par__plus a.b.c. = /a.b.c. = a.b.c. = /a.b.c. = a.b.c. = /a.b.c. = a.b.c. = /a.b.c.
par__plus a.b.c.d. = /a.b.c.d. = a.b.c.d. = /a.b.c.d. = a.b.c.d. = /a.b.c.d. = a.b.c.d. = /a.b.c.d.
par__plus a/1. = a/1. = a/1. = a/1. = a/1.. = a/1.. = a/1.. = a/1..
par__plus a.b/1.2. = a.b/1.2. = a.b/1.2. = a.b/1.2. = a.b/1.2. = a.b/1.2. = a.b/1.2.. = a.b/1.2..
par__plus a.b.c/1.2.3. = a.b.c/1.2.3. = a.b.c/1.2.3. = a.b.c/1.2.3. = a.b.c/1.2.3. = a.b.c/1.2.3. = a.b.c/1.2.3. = a.b.c/1.2.3.
par__plus a.b.c.d/1.2.3.4. = a.b.c.d/1.2.3.4. = a.b.c.d/1.2.3.4. = a.b.c.d/1.2.3.4. = a.b.c.d/1.2.3.4. = a.b.c.d/1.2.3.4. = a.b.c.d/1.2.3.4. = a.b.c.d/1.2.3.4.
par__plus a.. = /a.. = a.. = /a.. = a.. = /a.. = a... = /a...
par__plus a.b.. = /a.b.. = a.b.. = /a.b.. = a.b.. = /a.b.. = a.b.. = /a.b..
par__plus a.b.c.. = /a.b.c.. = a.b.c.. = /a.b.c.. = a.b.c.. = /a.b.c.. = a.b.c.. = /a.b.c..
par__plus a.b.c.d.. = /a.b.c.d.. = a.b.c.d.. = /a.b.c.d.. = a.b.c.d.. = /a.b.c.d.. = a.b.c.d.. = /a.b.c.d..
par__plus a./1. = a./1. = a./1. = a./1. = a./1.. = a./1.. = a./1.. = a./1..
par__plus a.b./1.2.. = a.b./1.2.. = a.b./1.2.. = a.b./1.2.. = a.b./1.2.. = a.b./1.2.. = a.b./1.2.. = a.b./1.2..
par__plus a.b.c./1.2.3.. = a.b.c./1.2.3.. = a.b.c./1.2.3.. = a.b.c./1.2.3.. = a.b.c./1.2.3.. = a.b.c./1.2.3.. = a.b.c./1.2.3.. = a.b.c./1.2.3..
par__plus a.b.c.d./1.2.3.4.. = a.b.c.d./1.2.3.4.. = a.b.c.d./1.2.3.4.. = a.b.c.d./1.2.3.4.. = a.b.c.d./1.2.3.4.. = a.b.c.d./1.2.3.4.. = a.b.c.d./1.2.3.4.. = a.b.c.d./1.2.3.4..
par__plus ### Test {%...} {%%...} {#...} {##...}
par__plus z.foo
par__plus z.foo
par__plus foo
par__plus foo
par__plus foo.z
par__plus foo.z
par__plus foo
par__plus foo
par__plus A B C
par__plus A C B
par__plus B A C
par__plus B C A
par__plus C A B
par__plus C B A
par__plus A+B+C
par__plus A+C+B
par__plus B+A+C
par__plus B+C+A
par__plus C+A+B
par__plus C+B+A
par__plus A B C
par__plus A B D
par__plus A C D
par__plus B C D
par__sql_colsep ### SQL should add Vn columns for --colsep
par__sql_colsep /a/A/1/11/
par__sql_colsep /a/A/2/22/
par__sql_colsep /a/A/3/33/
par__sql_colsep /b/B/1/11/
par__sql_colsep /b/B/2/22/
par__sql_colsep /b/B/3/33/
par__sql_colsep /c/C/1/11/
par__sql_colsep /c/C/2/22/
par__sql_colsep /c/C/3/33/
par__sql_colsep /a/A/1/11/
par__sql_colsep /a/A/2/22/
par__sql_colsep /a/A/3/33/
par__sql_colsep /b/B/1/11/
par__sql_colsep /b/B/2/22/
par__sql_colsep /b/B/3/33/
par__sql_colsep /c/C/1/11/
par__sql_colsep /c/C/2/22/
par__sql_colsep /c/C/3/33/
par__sql_colsep a A 1 11 a A 2 22 a A 3 33
par__sql_colsep a A 4 44 a A 5 55 a A 6 66
par__sql_colsep b B 1 11 b B 2 22 b B 3 33
par__sql_colsep b B 4 44 b B 5 55 b B 6 66
par__sql_colsep c C 1 11 c C 2 22 c C 3 33
par__sql_colsep c C 4 44 c C 5 55 c C 6 66
par__sql_colsep a A 1 11 a A 2 22 a A 3 33
par__sql_colsep a A 4 44 a A 5 55 a A 6 66
par__sql_colsep b B 1 11 b B 2 22 b B 3 33
par__sql_colsep b B 4 44 b B 5 55 b B 6 66
par__sql_colsep c C 1 11 c C 2 22 c C 3 33
par__sql_colsep c C 4 44 c C 5 55 c C 6 66
par__test_XI_mI ### Test -I
par__test_XI_mI 1 1
par__test_XI_mI 2 1
par__test_XI_mI 2 2
par__test_XI_mI 3 1
par__test_XI_mI 3 2
par__test_XI_mI 3 3
par__test_XI_mI 4 1
par__test_XI_mI 4 2
par__test_XI_mI 4 3
par__test_XI_mI 4 4
par__test_XI_mI 5 1
par__test_XI_mI 5 2
par__test_XI_mI 5 3
par__test_XI_mI 5 4
par__test_XI_mI 5 5
par__test_XI_mI 6 1
par__test_XI_mI 6 2
par__test_XI_mI 6 3
par__test_XI_mI 6 4
par__test_XI_mI 6 5
par__test_XI_mI 6 6
par__test_XI_mI 7 1
par__test_XI_mI 7 2
par__test_XI_mI 7 3
par__test_XI_mI 7 4
par__test_XI_mI 7 5
par__test_XI_mI 7 6
par__test_XI_mI 7 7
par__test_XI_mI 8 1
par__test_XI_mI 8 2
par__test_XI_mI 8 3
par__test_XI_mI 8 4
par__test_XI_mI 8 5
par__test_XI_mI 8 6
par__test_XI_mI 8 7
par__test_XI_mI 8 8
par__test_XI_mI 9 1
par__test_XI_mI 9 2
par__test_XI_mI 9 3
par__test_XI_mI 9 4
par__test_XI_mI 9 5
par__test_XI_mI 9 6
par__test_XI_mI 9 7
par__test_XI_mI 9 8
par__test_XI_mI 9 9
par__test_XI_mI 10 1
par__test_XI_mI 10 2
par__test_XI_mI 10 3
par__test_XI_mI 10 4
par__test_XI_mI 10 5
par__test_XI_mI 10 6
par__test_XI_mI 10 7
par__test_XI_mI 10 8
par__test_XI_mI 10 9
par__test_XI_mI 10 10
par__test_XI_mI ### Test -X -I
par__test_XI_mI a1 b1
par__test_XI_mI a2 b1 b2
par__test_XI_mI a3 b1 b2 b3
par__test_XI_mI a4 b1 b2 b3 b4
par__test_XI_mI a5 b1 b2 b3 b4 b5
par__test_XI_mI a6 b1 b2 b3 b4 b5 b6
par__test_XI_mI a7 b1 b2 b3 b4 b5 b6 b7
par__test_XI_mI a8 b1 b2 b3 b4 b5 b6 b7 b8
par__test_XI_mI a9 b1 b2 b3 b4 b5 b6 b7 b8 b9
par__test_XI_mI a10 b1 b2 b3 b4 b5 b6 b7 b8 b9 b10
par__test_XI_mI ### Test -m -I
par__test_XI_mI a1 b1
par__test_XI_mI a2 b1 2
par__test_XI_mI a3 b1 2 3
par__test_XI_mI a4 b1 2 3 4
par__test_XI_mI a5 b1 2 3 4 5
par__test_XI_mI a6 b1 2 3 4 5 6
par__test_XI_mI a7 b1 2 3 4 5 6 7
par__test_XI_mI a8 b1 2 3 4 5 6 7 8
par__test_XI_mI a9 b1 2 3 4 5 6 7 8 9
par__test_XI_mI a10 b1 2 3 4 5 6 7 8 9 10
par__test_cpu_detection_cpuinfo 2-8-8-8 Xeon 8 core server in Germany
par__test_cpu_detection_cpuinfo 2 8 8 8
par__test_cpu_detection_cpuinfo 4-48-48-48 Dell R815 4 CPU 48-core
par__test_cpu_detection_cpuinfo 4 24 48 24
par__test_cpu_detection_cpuinfo 1-4-8-4 4-core/8 thread Lenovo T480
par__test_cpu_detection_cpuinfo 1 4 8 4
par__test_cpu_detection_cpuinfo 4-64-64-64 Dell R815 4 CPU 64-core
par__test_cpu_detection_cpuinfo 4 32 64 32
par__test_cpu_detection_cpuinfo 1-2-2-2 AMD Neo N36L Dual-Core Processor
par__test_cpu_detection_cpuinfo 1 2 2 2
par__test_cpu_detection_cpuinfo 1-1-1-1 Intel Xeon X5675 (mandriva.p)
par__test_cpu_detection_cpuinfo 1 1 1 1
par__test_cpu_detection_cpuinfo 1-1-1-1 Intel(R) Celeron(R) M (eee900)
par__test_cpu_detection_cpuinfo 1 1 1 1
par__test_cpu_detection_cpuinfo 2-12-24-12 Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz (vh4)
par__test_cpu_detection_cpuinfo 2 12 24 12
par__test_cpu_detection_cpuinfo 1-6-12-6 AMD Ryzen 5 4600G with Radeon Graphics (ai)
par__test_cpu_detection_cpuinfo 1 6 12 6
par__test_cpu_detection_cpuinfo 1-4-8-4 Core i7-3632QM Acer laptop
par__test_cpu_detection_cpuinfo 1 4 8 4
par__test_cpu_detection_cpuinfo 1-2-4-2 Core i5-2410M laptop firewall
par__test_cpu_detection_cpuinfo 1 2 4 2
par__test_cpu_detection_cpuinfo 1-2-2-2 AMD Opteron 244 dual core laptop(?)
par__test_cpu_detection_cpuinfo 1 2 2 2
par__test_cpu_detection_cpuinfo 2-24-48-24 24-core (maxwell?)
par__test_cpu_detection_cpuinfo 2 24 48 24
par__test_cpu_detection_cpuinfo 1-2-2-2 HP Laptop Compaq 6530b
par__test_cpu_detection_cpuinfo 1 2 2 2
par__test_cpu_detection_cpuinfo 1-8-8-8 Huawei P Smart Octa-core (4x2.36 GHz Cortex-A53 & 4x1.7 GHz Cortex-A53)
par__test_cpu_detection_cpuinfo 1 8 8 8
par__test_cpu_detection_cpuinfo 1-4-4-4 x96 quad-core Android TV-box
par__test_cpu_detection_cpuinfo 1 4 4 4
par__test_cpu_detection_cpuinfo 1-6-6-6 Kramses 200 USD laptop 6-core
par__test_cpu_detection_cpuinfo 1 6 6 6
par__test_cpu_detection_lscpu 2-8-8-8 Xeon 8 core server in Germany
par__test_cpu_detection_lscpu 2 8 8 8
par__test_cpu_detection_lscpu 4-64-64-64 Dell R815 4 CPU 64-core
par__test_cpu_detection_lscpu 4 32 64 32
par__test_cpu_detection_lscpu 1-2-2-2 AMD Neo N36L Dual-Core Processor
par__test_cpu_detection_lscpu 1 2 2 2
par__test_cpu_detection_lscpu 1-1-1-1 Intel Xeon X5675 (mandriva.p)
par__test_cpu_detection_lscpu 1 1 1 1
par__test_cpu_detection_lscpu 1-1-1-1 Intel(R) Celeron(R) M (eee900)
par__test_cpu_detection_lscpu 1 1 1 1
par__test_cpu_detection_lscpu 2-12-24-12 Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz (vh4)
par__test_cpu_detection_lscpu 2 12 24 12
par__test_cpu_detection_lscpu 1-6-12-6 AMD Ryzen 5 4600G with Radeon Graphics (ai)
par__test_cpu_detection_lscpu 1 6 12 6
par__test_cpu_detection_lscpu 1-4-8-4 Core i7-3632QM Acer laptop
par__test_cpu_detection_lscpu 1 4 8 4
par__test_cpu_detection_lscpu 1-2-4-2 Core i5-2410M laptop firewall
par__test_cpu_detection_lscpu 1 2 4 2
par__test_cpu_detection_lscpu 1-8-8-8 Huawei P Smart Octa-core (4x2.36 GHz Cortex-A53 & 4x1.7 GHz Cortex-A53)
par__test_cpu_detection_lscpu 2 8 8 8
par__test_cpu_detection_lscpu 1-4-4-4 x96 quad-core Android TV-box
par__test_cpu_detection_lscpu 1 1 1 1
par_basic_halt parallel: This job failed: par_basic_halt parallel: This job failed:
par_basic_halt false par_basic_halt false
par_basic_halt parallel: This job succeeded: par_basic_halt parallel: This job succeeded:

View file

@ -12,6 +12,82 @@ par__10000_5_rpl_X 4
par__10000_5_rpl_X 4 par__10000_5_rpl_X 4
par__10000_5_rpl_X 3 par__10000_5_rpl_X 3
par__10000_5_rpl_X 2 par__10000_5_rpl_X 2
par__I_X_m ### Test -I with -X and -m
par__I_X_m 1 1
par__I_X_m 2 1
par__I_X_m 2 2
par__I_X_m 3 1
par__I_X_m 3 2
par__I_X_m 3 3
par__I_X_m 4 1
par__I_X_m 4 2
par__I_X_m 4 3
par__I_X_m 4 4
par__I_X_m 5 1
par__I_X_m 5 2
par__I_X_m 5 3
par__I_X_m 5 4
par__I_X_m 5 5
par__I_X_m 6 1
par__I_X_m 6 2
par__I_X_m 6 3
par__I_X_m 6 4
par__I_X_m 6 5
par__I_X_m 6 6
par__I_X_m 7 1
par__I_X_m 7 2
par__I_X_m 7 3
par__I_X_m 7 4
par__I_X_m 7 5
par__I_X_m 7 6
par__I_X_m 7 7
par__I_X_m 8 1
par__I_X_m 8 2
par__I_X_m 8 3
par__I_X_m 8 4
par__I_X_m 8 5
par__I_X_m 8 6
par__I_X_m 8 7
par__I_X_m 8 8
par__I_X_m 9 1
par__I_X_m 9 2
par__I_X_m 9 3
par__I_X_m 9 4
par__I_X_m 9 5
par__I_X_m 9 6
par__I_X_m 9 7
par__I_X_m 9 8
par__I_X_m 9 9
par__I_X_m 10 1
par__I_X_m 10 2
par__I_X_m 10 3
par__I_X_m 10 4
par__I_X_m 10 5
par__I_X_m 10 6
par__I_X_m 10 7
par__I_X_m 10 8
par__I_X_m 10 9
par__I_X_m 10 10
par__I_X_m a1 b1
par__I_X_m a2 b1 b2
par__I_X_m a3 b1 b2 b3
par__I_X_m a4 b1 b2 b3 b4
par__I_X_m a5 b1 b2 b3 b4 b5
par__I_X_m a6 b1 b2 b3 b4 b5 b6
par__I_X_m a7 b1 b2 b3 b4 b5 b6 b7
par__I_X_m a8 b1 b2 b3 b4 b5 b6 b7 b8
par__I_X_m a9 b1 b2 b3 b4 b5 b6 b7 b8 b9
par__I_X_m a10 b1 b2 b3 b4 b5 b6 b7 b8 b9 b10
par__I_X_m a1 b1
par__I_X_m a2 b1 2
par__I_X_m a3 b1 2 3
par__I_X_m a4 b1 2 3 4
par__I_X_m a5 b1 2 3 4 5
par__I_X_m a6 b1 2 3 4 5 6
par__I_X_m a7 b1 2 3 4 5 6 7
par__I_X_m a8 b1 2 3 4 5 6 7 8
par__I_X_m a9 b1 2 3 4 5 6 7 8 9
par__I_X_m a10 b1 2 3 4 5 6 7 8 9 10
par__argfile_plus -- -a file +file ++file par__argfile_plus -- -a file +file ++file
par__argfile_plus parallel: Error: It is unclear whether you mean +./file or ./+file par__argfile_plus parallel: Error: It is unclear whether you mean +./file or ./+file
par__argfile_plus -- -a file +./file ++file par__argfile_plus -- -a file +./file ++file
@ -241,6 +317,57 @@ par__parset_assoc_arr zsh@lo ls: cannot access 'no-such-file': No such file or d
par__parset_assoc_arr zsh@lo ls: cannot access 'no-such-file': No such file or directory par__parset_assoc_arr zsh@lo ls: cannot access 'no-such-file': No such file or directory
par__parset_assoc_arr zsh@lo ls: cannot access 'no-such-file1': No such file or directory par__parset_assoc_arr zsh@lo ls: cannot access 'no-such-file1': No such file or directory
par__parset_assoc_arr zsh@lo ls: cannot access 'no-such-file2': No such file or directory par__parset_assoc_arr zsh@lo ls: cannot access 'no-such-file2': No such file or directory
par__plus ### --plus
par__plus (It is OK to start with extra / or end with extra .)
par__plus a = /a = a. = /a. = a. = /a. = a. = /a.
par__plus a.b = /a.b = a.b = /a.b = a.b. = /a.b. = a.b. = /a.b.
par__plus a.b.c = /a.b.c = a.b.c = /a.b.c = a.b.c = /a.b.c = a.b.c. = /a.b.c.
par__plus a.b.c.d = /a.b.c.d = a.b.c.d = /a.b.c.d = a.b.c.d = /a.b.c.d = a.b.c.d = /a.b.c.d
par__plus a/1 = a/1 = a/1. = a/1. = a/1. = a/1. = a/1. = a/1.
par__plus a.b/1.2 = a.b/1.2 = a.b/1.2 = a.b/1.2 = a.b/1.2. = a.b/1.2. = a.b/1.2. = a.b/1.2.
par__plus a.b.c/1.2.3 = a.b.c/1.2.3 = a.b.c/1.2.3 = a.b.c/1.2.3 = a.b.c/1.2.3 = a.b.c/1.2.3 = a.b.c/1.2.3. = a.b.c/1.2.3.
par__plus a.b.c.d/1.2.3.4 = a.b.c.d/1.2.3.4 = a.b.c.d/1.2.3.4 = a.b.c.d/1.2.3.4 = a.b.c.d/1.2.3.4 = a.b.c.d/1.2.3.4 = a.b.c.d/1.2.3.4 = a.b.c.d/1.2.3.4
par__plus a. = /a. = a. = /a. = a.. = /a.. = a.. = /a..
par__plus a.b. = /a.b. = a.b. = /a.b. = a.b. = /a.b. = a.b.. = /a.b..
par__plus a.b.c. = /a.b.c. = a.b.c. = /a.b.c. = a.b.c. = /a.b.c. = a.b.c. = /a.b.c.
par__plus a.b.c.d. = /a.b.c.d. = a.b.c.d. = /a.b.c.d. = a.b.c.d. = /a.b.c.d. = a.b.c.d. = /a.b.c.d.
par__plus a/1. = a/1. = a/1. = a/1. = a/1.. = a/1.. = a/1.. = a/1..
par__plus a.b/1.2. = a.b/1.2. = a.b/1.2. = a.b/1.2. = a.b/1.2. = a.b/1.2. = a.b/1.2.. = a.b/1.2..
par__plus a.b.c/1.2.3. = a.b.c/1.2.3. = a.b.c/1.2.3. = a.b.c/1.2.3. = a.b.c/1.2.3. = a.b.c/1.2.3. = a.b.c/1.2.3. = a.b.c/1.2.3.
par__plus a.b.c.d/1.2.3.4. = a.b.c.d/1.2.3.4. = a.b.c.d/1.2.3.4. = a.b.c.d/1.2.3.4. = a.b.c.d/1.2.3.4. = a.b.c.d/1.2.3.4. = a.b.c.d/1.2.3.4. = a.b.c.d/1.2.3.4.
par__plus a.. = /a.. = a.. = /a.. = a.. = /a.. = a... = /a...
par__plus a.b.. = /a.b.. = a.b.. = /a.b.. = a.b.. = /a.b.. = a.b.. = /a.b..
par__plus a.b.c.. = /a.b.c.. = a.b.c.. = /a.b.c.. = a.b.c.. = /a.b.c.. = a.b.c.. = /a.b.c..
par__plus a.b.c.d.. = /a.b.c.d.. = a.b.c.d.. = /a.b.c.d.. = a.b.c.d.. = /a.b.c.d.. = a.b.c.d.. = /a.b.c.d..
par__plus a./1. = a./1. = a./1. = a./1. = a./1.. = a./1.. = a./1.. = a./1..
par__plus a.b./1.2.. = a.b./1.2.. = a.b./1.2.. = a.b./1.2.. = a.b./1.2.. = a.b./1.2.. = a.b./1.2.. = a.b./1.2..
par__plus a.b.c./1.2.3.. = a.b.c./1.2.3.. = a.b.c./1.2.3.. = a.b.c./1.2.3.. = a.b.c./1.2.3.. = a.b.c./1.2.3.. = a.b.c./1.2.3.. = a.b.c./1.2.3..
par__plus a.b.c.d./1.2.3.4.. = a.b.c.d./1.2.3.4.. = a.b.c.d./1.2.3.4.. = a.b.c.d./1.2.3.4.. = a.b.c.d./1.2.3.4.. = a.b.c.d./1.2.3.4.. = a.b.c.d./1.2.3.4.. = a.b.c.d./1.2.3.4..
par__plus ### Test {%...} {%%...} {#...} {##...}
par__plus z.foo
par__plus z.foo
par__plus foo
par__plus foo
par__plus foo.z
par__plus foo.z
par__plus foo
par__plus foo
par__plus A B C
par__plus A C B
par__plus B A C
par__plus B C A
par__plus C A B
par__plus C B A
par__plus A+B+C
par__plus A+C+B
par__plus B+A+C
par__plus B+C+A
par__plus C+A+B
par__plus C+B+A
par__plus A B C
par__plus A B D
par__plus A C D
par__plus B C D
par__prefix_for_L_n_N_s Must give xxx000 args par__prefix_for_L_n_N_s Must give xxx000 args
par__prefix_for_L_n_N_s 1000 par__prefix_for_L_n_N_s 1000
par__prefix_for_L_n_N_s 1000 par__prefix_for_L_n_N_s 1000
@ -321,6 +448,177 @@ par__prefix_for_L_n_N_s 244
par__prefix_for_L_n_N_s 246 par__prefix_for_L_n_N_s 246
par__prefix_for_L_n_N_s 246 par__prefix_for_L_n_N_s 246
par__prefix_for_L_n_N_s 273 par__prefix_for_L_n_N_s 273
par__sql_colsep ### SQL should add Vn columns for --colsep
par__sql_colsep /a/A/1/11/
par__sql_colsep /a/A/2/22/
par__sql_colsep /a/A/3/33/
par__sql_colsep /b/B/1/11/
par__sql_colsep /b/B/2/22/
par__sql_colsep /b/B/3/33/
par__sql_colsep /c/C/1/11/
par__sql_colsep /c/C/2/22/
par__sql_colsep /c/C/3/33/
par__sql_colsep /a/A/1/11/
par__sql_colsep /a/A/2/22/
par__sql_colsep /a/A/3/33/
par__sql_colsep /b/B/1/11/
par__sql_colsep /b/B/2/22/
par__sql_colsep /b/B/3/33/
par__sql_colsep /c/C/1/11/
par__sql_colsep /c/C/2/22/
par__sql_colsep /c/C/3/33/
par__sql_colsep a A 1 11 a A 2 22 a A 3 33
par__sql_colsep a A 4 44 a A 5 55 a A 6 66
par__sql_colsep b B 1 11 b B 2 22 b B 3 33
par__sql_colsep b B 4 44 b B 5 55 b B 6 66
par__sql_colsep c C 1 11 c C 2 22 c C 3 33
par__sql_colsep c C 4 44 c C 5 55 c C 6 66
par__sql_colsep a A 1 11 a A 2 22 a A 3 33
par__sql_colsep a A 4 44 a A 5 55 a A 6 66
par__sql_colsep b B 1 11 b B 2 22 b B 3 33
par__sql_colsep b B 4 44 b B 5 55 b B 6 66
par__sql_colsep c C 1 11 c C 2 22 c C 3 33
par__sql_colsep c C 4 44 c C 5 55 c C 6 66
par__test_XI_mI ### Test -I
par__test_XI_mI 1 1
par__test_XI_mI 2 1
par__test_XI_mI 2 2
par__test_XI_mI 3 1
par__test_XI_mI 3 2
par__test_XI_mI 3 3
par__test_XI_mI 4 1
par__test_XI_mI 4 2
par__test_XI_mI 4 3
par__test_XI_mI 4 4
par__test_XI_mI 5 1
par__test_XI_mI 5 2
par__test_XI_mI 5 3
par__test_XI_mI 5 4
par__test_XI_mI 5 5
par__test_XI_mI 6 1
par__test_XI_mI 6 2
par__test_XI_mI 6 3
par__test_XI_mI 6 4
par__test_XI_mI 6 5
par__test_XI_mI 6 6
par__test_XI_mI 7 1
par__test_XI_mI 7 2
par__test_XI_mI 7 3
par__test_XI_mI 7 4
par__test_XI_mI 7 5
par__test_XI_mI 7 6
par__test_XI_mI 7 7
par__test_XI_mI 8 1
par__test_XI_mI 8 2
par__test_XI_mI 8 3
par__test_XI_mI 8 4
par__test_XI_mI 8 5
par__test_XI_mI 8 6
par__test_XI_mI 8 7
par__test_XI_mI 8 8
par__test_XI_mI 9 1
par__test_XI_mI 9 2
par__test_XI_mI 9 3
par__test_XI_mI 9 4
par__test_XI_mI 9 5
par__test_XI_mI 9 6
par__test_XI_mI 9 7
par__test_XI_mI 9 8
par__test_XI_mI 9 9
par__test_XI_mI 10 1
par__test_XI_mI 10 2
par__test_XI_mI 10 3
par__test_XI_mI 10 4
par__test_XI_mI 10 5
par__test_XI_mI 10 6
par__test_XI_mI 10 7
par__test_XI_mI 10 8
par__test_XI_mI 10 9
par__test_XI_mI 10 10
par__test_XI_mI ### Test -X -I
par__test_XI_mI a1 b1
par__test_XI_mI a2 b1 b2
par__test_XI_mI a3 b1 b2 b3
par__test_XI_mI a4 b1 b2 b3 b4
par__test_XI_mI a5 b1 b2 b3 b4 b5
par__test_XI_mI a6 b1 b2 b3 b4 b5 b6
par__test_XI_mI a7 b1 b2 b3 b4 b5 b6 b7
par__test_XI_mI a8 b1 b2 b3 b4 b5 b6 b7 b8
par__test_XI_mI a9 b1 b2 b3 b4 b5 b6 b7 b8 b9
par__test_XI_mI a10 b1 b2 b3 b4 b5 b6 b7 b8 b9 b10
par__test_XI_mI ### Test -m -I
par__test_XI_mI a1 b1
par__test_XI_mI a2 b1 2
par__test_XI_mI a3 b1 2 3
par__test_XI_mI a4 b1 2 3 4
par__test_XI_mI a5 b1 2 3 4 5
par__test_XI_mI a6 b1 2 3 4 5 6
par__test_XI_mI a7 b1 2 3 4 5 6 7
par__test_XI_mI a8 b1 2 3 4 5 6 7 8
par__test_XI_mI a9 b1 2 3 4 5 6 7 8 9
par__test_XI_mI a10 b1 2 3 4 5 6 7 8 9 10
par__test_cpu_detection_cpuinfo 2-8-8-8 Xeon 8 core server in Germany
par__test_cpu_detection_cpuinfo 2 8 8 8
par__test_cpu_detection_cpuinfo 4-48-48-48 Dell R815 4 CPU 48-core
par__test_cpu_detection_cpuinfo 4 24 48 24
par__test_cpu_detection_cpuinfo 1-4-8-4 4-core/8 thread Lenovo T480
par__test_cpu_detection_cpuinfo 1 4 8 4
par__test_cpu_detection_cpuinfo 4-64-64-64 Dell R815 4 CPU 64-core
par__test_cpu_detection_cpuinfo 4 32 64 32
par__test_cpu_detection_cpuinfo 1-2-2-2 AMD Neo N36L Dual-Core Processor
par__test_cpu_detection_cpuinfo 1 2 2 2
par__test_cpu_detection_cpuinfo 1-1-1-1 Intel Xeon X5675 (mandriva.p)
par__test_cpu_detection_cpuinfo 1 1 1 1
par__test_cpu_detection_cpuinfo 1-1-1-1 Intel(R) Celeron(R) M (eee900)
par__test_cpu_detection_cpuinfo 1 1 1 1
par__test_cpu_detection_cpuinfo 2-12-24-12 Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz (vh4)
par__test_cpu_detection_cpuinfo 2 12 24 12
par__test_cpu_detection_cpuinfo 1-6-12-6 AMD Ryzen 5 4600G with Radeon Graphics (ai)
par__test_cpu_detection_cpuinfo 1 6 12 6
par__test_cpu_detection_cpuinfo 1-4-8-4 Lenovo E540 i7-4712MQ
par__test_cpu_detection_cpuinfo 1 4 8 4
par__test_cpu_detection_cpuinfo 1-4-8-4 Core i7-3632QM Acer laptop
par__test_cpu_detection_cpuinfo 1 4 8 4
par__test_cpu_detection_cpuinfo 1-2-4-2 Core i5-2410M laptop firewall
par__test_cpu_detection_cpuinfo 1 2 4 2
par__test_cpu_detection_cpuinfo 1-2-2-2 AMD Opteron 244 dual core laptop(?)
par__test_cpu_detection_cpuinfo 1 2 2 2
par__test_cpu_detection_cpuinfo 2-24-48-24 24-core (maxwell?)
par__test_cpu_detection_cpuinfo 2 24 48 24
par__test_cpu_detection_cpuinfo 1-2-2-2 HP Laptop Compaq 6530b
par__test_cpu_detection_cpuinfo 1 2 2 2
par__test_cpu_detection_cpuinfo 1-8-8-8 Huawei P Smart Octa-core (4x2.36 GHz Cortex-A53 & 4x1.7 GHz Cortex-A53)
par__test_cpu_detection_cpuinfo 1 8 8 8
par__test_cpu_detection_cpuinfo 1-4-4-4 x96 quad-core Android TV-box
par__test_cpu_detection_cpuinfo 1 4 4 4
par__test_cpu_detection_cpuinfo 1-6-6-6 Kramses 200 USD laptop 6-core
par__test_cpu_detection_cpuinfo 1 6 6 6
par__test_cpu_detection_lscpu 2-8-8-8 Xeon 8 core server in Germany
par__test_cpu_detection_lscpu 2 8 8 8
par__test_cpu_detection_lscpu 4-64-64-64 Dell R815 4 CPU 64-core
par__test_cpu_detection_lscpu 4 32 64 32
par__test_cpu_detection_lscpu 1-2-2-2 AMD Neo N36L Dual-Core Processor
par__test_cpu_detection_lscpu 1 2 2 2
par__test_cpu_detection_lscpu 1-1-1-1 Intel Xeon X5675 (mandriva.p)
par__test_cpu_detection_lscpu 1 1 1 1
par__test_cpu_detection_lscpu 1-1-1-1 Intel(R) Celeron(R) M (eee900)
par__test_cpu_detection_lscpu 1 1 1 1
par__test_cpu_detection_lscpu 2-12-24-12 Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz (vh4)
par__test_cpu_detection_lscpu 2 12 24 12
par__test_cpu_detection_lscpu 1-6-12-6 AMD Ryzen 5 4600G with Radeon Graphics (ai)
par__test_cpu_detection_lscpu 1 6 12 6
par__test_cpu_detection_lscpu 1-4-8-4 Lenovo E540 i7-4712MQ
par__test_cpu_detection_lscpu 1 4 8 4
par__test_cpu_detection_lscpu 1-4-8-4 Core i7-3632QM Acer laptop
par__test_cpu_detection_lscpu 1 4 8 4
par__test_cpu_detection_lscpu 1-2-4-2 Core i5-2410M laptop firewall
par__test_cpu_detection_lscpu 1 2 4 2
par__test_cpu_detection_lscpu 1-8-8-8 Huawei P Smart Octa-core (4x2.36 GHz Cortex-A53 & 4x1.7 GHz Cortex-A53)
par__test_cpu_detection_lscpu 2 8 8 8
par__test_cpu_detection_lscpu 1-4-4-4 x96 quad-core Android TV-box
par__test_cpu_detection_lscpu 1 1 1 1
par__test_cpu_detection_topology 1-4-8-4 Lenovo E540 i7-4712MQ
par__test_cpu_detection_topology 1 4 8 4
par_children_receive_sig ### Do children receive --termseq signals par_children_receive_sig ### Do children receive --termseq signals
par_children_receive_sig parallel: Warning: This job was killed because it timed out: par_children_receive_sig parallel: Warning: This job was killed because it timed out:
par_children_receive_sig parallel: Warning: show_signals '' par_children_receive_sig parallel: Warning: show_signals ''
@ -543,11 +841,15 @@ par_parset line1
par_parset line2 par_parset line2
par_parset2 ### parset into array par_parset2 ### parset into array
par_parset2 foo bar baz par_parset2 foo bar baz
par_parset2 foo bar baz
par_parset2 ### parset into vars with comma par_parset2 ### parset into vars with comma
par_parset2 foo bar baz par_parset2 foo bar baz
par_parset2 foo bar baz
par_parset2 ### parset into vars with space par_parset2 ### parset into vars with space
par_parset2 foo bar baz par_parset2 foo bar baz
par_parset2 foo bar baz
par_parset2 ### parset with newlines par_parset2 ### parset with newlines
par_parset2 1 1 2 1 2 3
par_parset2 1 par_parset2 1
par_parset2 1 par_parset2 1
par_parset2 2 par_parset2 2
@ -556,11 +858,17 @@ par_parset2 2
par_parset2 3 par_parset2 3
par_parset2 ### parset into indexed array vars par_parset2 ### parset into indexed array vars
par_parset2 foo bar baz par_parset2 foo bar baz
par_parset2 foo bar baz
par_parset2 foo bar bar
par_parset2 foo bar bar par_parset2 foo bar bar
par_parset2 ### env_parset par_parset2 ### env_parset
par_parset2 myecho myvar myarr 1 foo myecho myvar myarr 1 bar myecho myvar myarr 1 baz par_parset2 myecho myvar myarr 1 foo myecho myvar myarr 1 bar myecho myvar myarr 1 baz
par_parset2 myecho myvar myarr 1 foo myecho myvar myarr 1 bar myecho myvar myarr 1 baz par_parset2 myecho myvar myarr 1 foo myecho myvar myarr 1 bar myecho myvar myarr 1 baz
par_parset2 myecho myvar myarr 1 foo myecho myvar myarr 1 bar myecho myvar myarr 1 baz par_parset2 myecho myvar myarr 1 foo myecho myvar myarr 1 bar myecho myvar myarr 1 baz
par_parset2 myecho myvar myarr 1 foo myecho myvar myarr 1 bar myecho myvar myarr 1 baz
par_parset2 myecho myvar myarr 1 foo myecho myvar myarr 1 bar myecho myvar myarr 1 baz
par_parset2 myecho myvar myarr 1 foo myecho myvar myarr 1 bar myecho myvar myarr 1 baz
par_parset2 newline1 newline2 1 newline1 newline2 1 2 newline1 newline2 1 2 3
par_parset2 newline1 par_parset2 newline1
par_parset2 newline2 par_parset2 newline2
par_parset2 1 par_parset2 1
@ -574,6 +882,8 @@ par_parset2 1
par_parset2 2 par_parset2 2
par_parset2 3 par_parset2 3
par_parset2 myecho myvar myarr 1 foo myecho myvar myarr 1 bar myecho myvar myarr 1 baz par_parset2 myecho myvar myarr 1 foo myecho myvar myarr 1 bar myecho myvar myarr 1 baz
par_parset2 myecho myvar myarr 1 foo myecho myvar myarr 1 bar myecho myvar myarr 1 baz
par_parset2 myecho myvar myarr 1 foo myecho myvar myarr 1 bar myecho myvar myarr 1 bar
par_parset2 myecho myvar myarr 1 foo myecho myvar myarr 1 bar myecho myvar myarr 1 bar par_parset2 myecho myvar myarr 1 foo myecho myvar myarr 1 bar myecho myvar myarr 1 bar
par_parset2 bug #52507: parset arr1 -v echo ::: fails par_parset2 bug #52507: parset arr1 -v echo ::: fails
par_parset2 seq 3 par_parset2 seq 3

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -75,9 +75,9 @@ par_files_nonall ### bug #40002: --files and --nonall seem not to work together:
par_files_nonall 1 par_files_nonall 1
par_hgrp_agrp ### Test --hgrp {hgrp} {agrp} par_hgrp_agrp ### Test --hgrp {hgrp} {agrp}
par_hgrp_agrp_comma ### bug #63722: hostgroup with , breaks parser par_hgrp_agrp_comma ### bug #63722: hostgroup with , breaks parser
par_hgrp_agrp_comma csh
par_hgrp_agrp_comma parallel: Warning: Adding hostgroups: csh@lo tcsh@lo par_hgrp_agrp_comma parallel: Warning: Adding hostgroups: csh@lo tcsh@lo
par_hgrp_agrp_comma uid=1004(csh) gid=1004(csh) groups=1004(csh) par_hgrp_agrp_comma tcsh
par_hgrp_agrp_comma uid=1007(tcsh) gid=1007(tcsh) groups=1007(tcsh)
par_joblog_nonall ### bug #40001: --joblog and --nonall seem not to work together: par_joblog_nonall ### bug #40001: --joblog and --nonall seem not to work together:
par_joblog_nonall 3 par_joblog_nonall 3
par_pipe_unneeded_spawn ### Test bug #34241: --pipe should not spawn unneeded processes par_pipe_unneeded_spawn ### Test bug #34241: --pipe should not spawn unneeded processes

View file

@ -199,6 +199,8 @@ par__test_different_rsync_versions rsync-v1.6.6 Basic use failed - not tested: r
par__test_different_rsync_versions rsync-v1.6.7 Basic use failed - not tested: rsync-v1.6.7 par__test_different_rsync_versions rsync-v1.6.7 Basic use failed - not tested: rsync-v1.6.7
par__test_different_rsync_versions rsync-v1.6.8 Basic use failed - not tested: rsync-v1.6.8 par__test_different_rsync_versions rsync-v1.6.8 Basic use failed - not tested: rsync-v1.6.8
par__test_different_rsync_versions rsync-v1.6.9 Basic use failed - not tested: rsync-v1.6.9 par__test_different_rsync_versions rsync-v1.6.9 Basic use failed - not tested: rsync-v1.6.9
par__test_different_rsync_versions rsync-v2.0.0 Basic use failed - not tested: rsync-v2.0.0
par__test_different_rsync_versions rsync-v2.0.1 Basic use failed - not tested: rsync-v2.0.1
par__test_different_rsync_versions rsync-v2.0.10 Basic use failed - not tested: rsync-v2.0.10 par__test_different_rsync_versions rsync-v2.0.10 Basic use failed - not tested: rsync-v2.0.10
par__test_different_rsync_versions rsync-v2.0.11 Basic use failed - not tested: rsync-v2.0.11 par__test_different_rsync_versions rsync-v2.0.11 Basic use failed - not tested: rsync-v2.0.11
par__test_different_rsync_versions rsync-v2.0.12 Basic use failed - not tested: rsync-v2.0.12 par__test_different_rsync_versions rsync-v2.0.12 Basic use failed - not tested: rsync-v2.0.12
@ -209,6 +211,7 @@ par__test_different_rsync_versions rsync-v2.0.16 Basic use failed - not tested:
par__test_different_rsync_versions rsync-v2.0.17 Basic use failed - not tested: rsync-v2.0.17 par__test_different_rsync_versions rsync-v2.0.17 Basic use failed - not tested: rsync-v2.0.17
par__test_different_rsync_versions rsync-v2.0.18 Basic use failed - not tested: rsync-v2.0.18 par__test_different_rsync_versions rsync-v2.0.18 Basic use failed - not tested: rsync-v2.0.18
par__test_different_rsync_versions rsync-v2.0.19 Basic use failed - not tested: rsync-v2.0.19 par__test_different_rsync_versions rsync-v2.0.19 Basic use failed - not tested: rsync-v2.0.19
par__test_different_rsync_versions rsync-v2.0.2 Basic use failed - not tested: rsync-v2.0.2
par__test_different_rsync_versions rsync-v2.0.3 Basic use failed - not tested: rsync-v2.0.3 par__test_different_rsync_versions rsync-v2.0.3 Basic use failed - not tested: rsync-v2.0.3
par__test_different_rsync_versions rsync-v2.0.4 Basic use failed - not tested: rsync-v2.0.4 par__test_different_rsync_versions rsync-v2.0.4 Basic use failed - not tested: rsync-v2.0.4
par__test_different_rsync_versions rsync-v2.0.5 Basic use failed - not tested: rsync-v2.0.5 par__test_different_rsync_versions rsync-v2.0.5 Basic use failed - not tested: rsync-v2.0.5

View file

@ -622,4 +622,4 @@ par_pipe_retries 134362 134362 940534
par_pipe_retries localhost-: par_pipe_retries localhost-:
par_pipe_retries parallel: Error: --retries cannot be combined with --roundrobin. par_pipe_retries parallel: Error: --retries cannot be combined with --roundrobin.
par_ssh_cmd_with_newline ### Check --ssh with \n works par_ssh_cmd_with_newline ### Check --ssh with \n works
par_ssh_cmd_with_newline uid=1003(sh) gid=1003(sh) groups=1003(sh) par_ssh_cmd_with_newline sh

View file

@ -1,479 +1,159 @@
par_zsh_embed --embed par_PARALLEL_SSHLOGIN_SSHHOST ### bug #56554: Introduce $PARALLEL_SSHLOGIN $PARALLEL_SSHHOST
par_zsh_embed Redirect the output to a file and add your changes at the end: par_PARALLEL_SSHLOGIN_SSHHOST /usr/bin/ssh csh@lo /usr/bin/ssh csh@lo lo
par_zsh_embed /usr/local/bin/parallel --embed > new_script par_PARALLEL_SSHLOGIN_SSHHOST /usr/bin/ssh csh@lo csh
par_zsh_embed Put par_PARALLEL_SSHLOGIN_SSHHOST /usr/bin/ssh tcsh@lo /usr/bin/ssh tcsh@lo lo
par_zsh_embed your par_PARALLEL_SSHLOGIN_SSHHOST /usr/bin/ssh tcsh@lo tcsh
par_zsh_embed code par_PARALLEL_SSHLOGIN_SSHHOST lo lo lo
par_zsh_embed here par_PARALLEL_SSHLOGIN_SSHHOST lo tange
par_zsh_embed parallel_OK par_PARALLEL_SSHLOGIN_SSHHOST sh@lo sh
par_zsh_embed env_parallel --env OK par_PARALLEL_SSHLOGIN_SSHHOST sh@lo sh@lo lo
par_zsh_embed _which_PAR:13: argument list too long: perl par_PARALLEL_SSHLOGIN_SSHHOST zsh@lo zsh
par_zsh_embed env_parallel: Error: Your environment is too big. par_PARALLEL_SSHLOGIN_SSHHOST zsh@lo zsh@lo lo
par_zsh_embed env_parallel: Error: You can try 3 different approaches: par__d_filter_hosts ### --filter-hosts and -0
par_zsh_embed env_parallel: Error: 1. Run 'env_parallel --session' before you set par__d_filter_hosts ### https://lists.gnu.org/archive/html/parallel/2022-07/msg00002.html
par_zsh_embed env_parallel: Error: variables or define functions. par__d_filter_hosts OKa
par_zsh_embed env_parallel: Error: 2. Use --env and only mention the names to copy. par__d_filter_hosts OKb
par_zsh_embed env_parallel: Error: 3. Try running this in a clean environment once: par__d_filter_hosts OKa
par_zsh_embed env_parallel: Error: env_parallel --record-env par__d_filter_hosts OKb
par_zsh_embed env_parallel: Error: And then use '--env _' par__d_filter_hosts OKa
par_zsh_embed env_parallel: Error: For details see: man env_parallel par__d_filter_hosts OKb
par_zsh_embed ParsetOK par__d_filter_hosts OKa
par_zsh_embed Put par__d_filter_hosts OKb
par_zsh_embed your par__d_filter_hosts OKa
par_zsh_embed code par__d_filter_hosts OKb
par_zsh_embed here par__propagate_env ### bug #41805: Idea: propagate --env for parallel --number-of-cores
par_zsh_embed Put your code here par__propagate_env ** test_zsh
par_zsh_embed You can also activate GNU Parallel for interactive use by: par__propagate_env FOO=test_zsh
par_zsh_embed . ./parallel-embed par__propagate_env HOME=~
par_tcsh_embed Not implemented par__propagate_env ** test_zsh_filter
par_sshlogin_range ### --sshlogin with ranges par__propagate_env FOO=test_zsh_filter
par_sshlogin_range ### Jobs fail, but the important is the name of the hosts par__propagate_env HOME=~
par_sshlogin_range echo 1 par__propagate_env ** test_csh
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a000.nx-dom (). Using 1. par__propagate_env MANPATH: Undefined variable.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a001.nx-dom (). Using 1. par__propagate_env FOO=test_csh
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a002.nx-dom (). Using 1. par__propagate_env HOME=~
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a003.nx-dom (). Using 1. par__propagate_env ** test_csh_filter
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a004.nx-dom (). Using 1. par__propagate_env MANPATH: Undefined variable.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a005.nx-dom (). Using 1. par__propagate_env FOO=test_csh_filter
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a006.nx-dom (). Using 1. par__propagate_env HOME=~
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a007.nx-dom (). Using 1. par__propagate_env ** bug #41805 done
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a008.nx-dom (). Using 1. par__sshlogin_range ### --sshlogin with ranges
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a009.nx-dom (). Using 1. par__sshlogin_range ### Jobs fail, but the important is the name of the hosts
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a010.nx-dom (). Using 1. par__sshlogin_range echo 1
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a011.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on a00.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a012.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on a01.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a013.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on a02.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a014.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on a03.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a015.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on a04.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a016.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on a05.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a017.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on a06.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a018.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on a07.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a019.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on a08.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a020.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on a09.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a021.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on a10.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a022.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on a11.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a023.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on a12.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a024.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on b10c1.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a025.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on b10c4.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a026.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on b10c6.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a027.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on b11c1.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a028.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on b11c4.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a029.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on b11c6.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a030.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on b2c1.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a031.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on b2c4.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a032.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on b2c6.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a033.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on b3c1.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a034.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on b3c4.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a035.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on b3c6.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a036.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on b5c1.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a037.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on b5c4.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a038.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on b5c6.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a039.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on b7c1.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a040.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on b7c4.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a041.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on b7c6.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a042.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on b8c1.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a043.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on b8c4.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a044.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on b8c6.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a045.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on b9c1.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a046.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on b9c4.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a047.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on b9c6.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a048.nx-dom (). Using 1. par__sshlogin_range echo 1
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a049.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on dev000.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a050.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on dev001.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a051.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on dev002.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a052.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on dev003.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a053.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on dev004.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a054.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on dev005.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a055.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on dev006.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a056.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on dev007.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a057.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on dev008.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a058.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on dev009.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a059.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on dev010.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a060.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on dev098.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a061.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on dev099.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a062.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on dev100.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a063.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on dev101.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a064.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on prod000.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a065.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on prod001.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a066.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on prod002.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a067.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on prod003.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a068.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on prod004.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a069.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on prod005.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a070.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on prod006.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a071.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on prod007.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a072.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on prod008.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a073.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on prod009.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a074.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on prod010.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a075.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on prod098.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a076.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on prod099.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a077.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on prod100.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a078.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on prod101.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a079.nx-dom (). Using 1. par__sshlogin_range echo 1
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a080.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on ip249.0.10.109 (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a081.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on ip249.0.10.110 (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a082.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on ip249.0.10.111 (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a083.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on ip249.0.11.109 (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a084.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on ip249.0.11.110 (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a085.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on ip249.0.11.111 (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a086.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on ip249.0.9.109 (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a087.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on ip249.0.9.110 (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a088.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on ip249.0.9.111 (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a089.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on ip250.0.10.109 (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a090.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on ip250.0.10.110 (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a091.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on ip250.0.10.111 (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a092.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on ip250.0.11.109 (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a093.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on ip250.0.11.110 (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a094.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on ip250.0.11.111 (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a095.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on ip250.0.9.109 (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a096.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on ip250.0.9.110 (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a097.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on ip250.0.9.111 (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a098.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on ip251.0.10.109 (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a099.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on ip251.0.10.110 (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a100.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on ip251.0.10.111 (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a101.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on ip251.0.11.109 (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a102.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on ip251.0.11.110 (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a103.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on ip251.0.11.111 (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a104.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on ip251.0.9.109 (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a105.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on ip251.0.9.110 (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a106.nx-dom (). Using 1. par__sshlogin_range parallel: Warning: Could not figure out number of cpus on ip251.0.9.111 (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a107.nx-dom (). Using 1. par_ash_embed --embed
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a108.nx-dom (). Using 1. par_ash_embed Redirect the output to a file and add your changes at the end:
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a109.nx-dom (). Using 1. par_ash_embed /usr/local/bin/parallel --embed > new_script
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a110.nx-dom (). Using 1. par_ash_embed Put
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a111.nx-dom (). Using 1. par_ash_embed your
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a112.nx-dom (). Using 1. par_ash_embed code
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a113.nx-dom (). Using 1. par_ash_embed here
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a114.nx-dom (). Using 1. par_ash_embed parallel_OK
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a115.nx-dom (). Using 1. par_ash_embed env_parallel --env OK
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a116.nx-dom (). Using 1. par_ash_embed env_parallel_OK
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a117.nx-dom (). Using 1. par_ash_embed ParsetOK
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a118.nx-dom (). Using 1. par_ash_embed Put
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a119.nx-dom (). Using 1. par_ash_embed your
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a120.nx-dom (). Using 1. par_ash_embed code
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a121.nx-dom (). Using 1. par_ash_embed here
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a122.nx-dom (). Using 1. par_ash_embed Put your code here
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on a123.nx-dom (). Using 1. par_ash_embed You can also activate GNU Parallel for interactive use by:
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on b10c1.nx-dom (). Using 1. par_ash_embed . ./parallel-embed
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on b10c4.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on b10c6.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on b11c1.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on b11c4.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on b11c6.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on b2c1.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on b2c4.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on b2c6.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on b3c1.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on b3c4.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on b3c6.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on b5c1.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on b5c4.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on b5c6.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on b7c1.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on b7c4.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on b7c6.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on b8c1.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on b8c4.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on b8c6.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on b9c1.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on b9c4.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on b9c6.nx-dom (). Using 1.
par_sshlogin_range echo 1
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev000.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev001.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev002.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev003.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev004.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev005.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev006.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev007.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev008.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev009.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev010.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev011.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev012.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev013.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev014.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev015.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev016.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev017.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev018.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev019.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev020.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev021.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev022.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev023.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev024.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev025.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev026.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev027.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev028.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev029.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev030.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev031.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev032.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev033.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev034.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev035.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev036.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev037.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev038.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev039.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev040.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev041.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev042.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev043.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev044.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev045.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev046.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev047.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev048.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev049.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev050.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev051.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev052.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev053.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev054.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev055.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev056.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev057.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev058.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev059.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev060.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev061.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev062.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev063.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev064.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev065.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev066.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev067.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev068.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev069.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev070.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev071.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev072.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev073.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev074.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev075.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev076.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev077.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev078.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev079.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev080.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev081.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev082.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev083.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev084.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev085.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev086.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev087.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev088.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev089.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev090.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev091.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev092.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev093.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev094.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev095.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev096.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev097.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev098.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev099.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on dev100.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod000.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod001.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod002.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod003.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod004.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod005.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod006.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod007.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod008.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod009.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod010.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod011.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod012.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod013.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod014.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod015.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod016.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod017.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod018.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod019.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod020.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod021.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod022.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod023.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod024.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod025.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod026.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod027.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod028.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod029.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod030.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod031.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod032.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod033.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod034.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod035.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod036.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod037.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod038.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod039.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod040.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod041.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod042.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod043.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod044.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod045.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod046.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod047.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod048.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod049.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod050.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod051.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod052.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod053.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod054.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod055.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod056.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod057.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod058.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod059.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod060.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod061.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod062.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod063.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod064.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod065.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod066.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod067.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod068.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod069.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod070.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod071.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod072.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod073.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod074.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod075.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod076.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod077.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod078.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod079.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod080.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod081.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod082.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod083.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod084.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod085.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod086.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod087.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod088.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod089.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod090.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod091.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod092.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod093.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod094.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod095.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod096.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod097.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod098.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod099.nx-dom (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on prod100.nx-dom (). Using 1.
par_sshlogin_range echo 1
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on 249.0.10.109 (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on 249.0.10.110 (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on 249.0.10.111 (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on 249.0.11.109 (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on 249.0.11.110 (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on 249.0.11.111 (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on 249.0.9.109 (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on 249.0.9.110 (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on 249.0.9.111 (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on 250.0.10.109 (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on 250.0.10.110 (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on 250.0.10.111 (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on 250.0.11.109 (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on 250.0.11.110 (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on 250.0.11.111 (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on 250.0.9.109 (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on 250.0.9.110 (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on 250.0.9.111 (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on 251.0.10.109 (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on 251.0.10.110 (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on 251.0.10.111 (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on 251.0.11.109 (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on 251.0.11.110 (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on 251.0.11.111 (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on 251.0.9.109 (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on 251.0.9.110 (). Using 1.
par_sshlogin_range parallel: Warning: Could not figure out number of cpus on 251.0.9.111 (). Using 1.
par_sh_embed --embed
par_sh_embed Redirect the output to a file and add your changes at the end:
par_sh_embed /usr/local/bin/parallel --embed > new_script
par_sh_embed Put
par_sh_embed your
par_sh_embed code
par_sh_embed here
par_sh_embed parallel_OK
par_sh_embed env_parallel --env OK
par_sh_embed env_parallel_OK
par_sh_embed ParsetOK
par_sh_embed Put
par_sh_embed your
par_sh_embed code
par_sh_embed here
par_sh_embed Put your code here
par_sh_embed You can also activate GNU Parallel for interactive use by:
par_sh_embed . ./parallel-embed
par_no_route_to_host ### no route to host with | and -j0 causes inf loop
par_no_route_to_host ssh: connect to host i.p.n.r port 22: No route to host par_no_route_to_host
par_no_route_to_host parallel: This job finished:
par_no_route_to_host raw i.p.n.r
par_no_route_to_host parallel: Warning: ssh to i.p.n.r only allows for 0 simultaneous logins.
par_no_route_to_host parallel: Warning: You may raise this by changing
par_no_route_to_host parallel: Warning: /etc/ssh/sshd_config:MaxStartups and MaxSessions on i.p.n.r.
par_no_route_to_host parallel: Warning: You can also try --sshdelay 0.1
par_no_route_to_host parallel: Warning: Using only -1 connections to avoid race conditions.
par_no_route_to_host parallel: Error: Cannot run any jobs.
par_no_route_to_host via_parallel i.p.n.r
par_ksh_embed --embed
par_ksh_embed Redirect the output to a file and add your changes at the end:
par_ksh_embed /usr/local/bin/parallel --embed > new_script
par_ksh_embed Put
par_ksh_embed your
par_ksh_embed code
par_ksh_embed here
par_ksh_embed parallel_OK
par_ksh_embed env_parallel --env OK
par_ksh_embed ./parallel-embed[XXX]: perl: /usr/bin/perl: cannot execute [Argument list too long]
par_ksh_embed env_parallel: Error: Your environment is too big.
par_ksh_embed env_parallel: Error: You can try 3 different approaches:
par_ksh_embed env_parallel: Error: 1. Run 'env_parallel --session' before you set
par_ksh_embed env_parallel: Error: variables or define functions.
par_ksh_embed env_parallel: Error: 2. Use --env and only mention the names to copy.
par_ksh_embed env_parallel: Error: 3. Try running this in a clean environment once:
par_ksh_embed env_parallel: Error: env_parallel --record-env
par_ksh_embed env_parallel: Error: And then use '--env _'
par_ksh_embed env_parallel: Error: For details see: man env_parallel
par_ksh_embed ParsetOK
par_ksh_embed Put
par_ksh_embed your
par_ksh_embed code
par_ksh_embed here
par_ksh_embed Put your code here
par_ksh_embed You can also activate GNU Parallel for interactive use by:
par_ksh_embed . ./parallel-embed
par_fish_embed Not implemented
par_filter_hosts_parallel_not_installed bug #62672: Triggered a bug with --filter-host
par_filter_hosts_parallel_not_installed parallel: Warning: Could not figure out number of cpus on nopathbash@lo (). Using 1.
par_filter_hosts_parallel_not_installed OK
par_filter_hosts_parallel_not_installed parallel: Warning: Could not figure out number of cpus on nopathbash@lo (). Using 1.
par_filter_hosts_parallel_not_installed OK
par_env_parallel_big_env ### bug #54128: command too long when exporting big env
par_env_parallel_big_env should not fail
par_env_parallel_big_env OK
par_csh_embed Not implemented
par_bash_embed --embed par_bash_embed --embed
par_bash_embed Redirect the output to a file and add your changes at the end: par_bash_embed Redirect the output to a file and add your changes at the end:
par_bash_embed /usr/local/bin/parallel --embed > new_script par_bash_embed /usr/local/bin/parallel --embed > new_script
@ -501,58 +181,97 @@ par_bash_embed here
par_bash_embed Put your code here par_bash_embed Put your code here
par_bash_embed You can also activate GNU Parallel for interactive use by: par_bash_embed You can also activate GNU Parallel for interactive use by:
par_bash_embed . ./parallel-embed par_bash_embed . ./parallel-embed
par_ash_embed --embed par_csh_embed Not implemented
par_ash_embed Redirect the output to a file and add your changes at the end: par_env_parallel_big_env ### bug #54128: command too long when exporting big env
par_ash_embed /usr/local/bin/parallel --embed > new_script par_env_parallel_big_env should not fail
par_ash_embed Put par_env_parallel_big_env OK
par_ash_embed your par_filter_hosts_parallel_not_installed bug #62672: Triggered a bug with --filter-host
par_ash_embed code par_filter_hosts_parallel_not_installed parallel: Warning: Could not figure out number of cpus on nopathbash@lo (). Using 1.
par_ash_embed here par_filter_hosts_parallel_not_installed OK
par_ash_embed parallel_OK par_filter_hosts_parallel_not_installed parallel: Warning: Could not figure out number of cpus on nopathbash@lo (). Using 1.
par_ash_embed env_parallel --env OK par_filter_hosts_parallel_not_installed OK
par_ash_embed env_parallel_OK par_fish_embed Not implemented
par_ash_embed ParsetOK par_ksh_embed --embed
par_ash_embed Put par_ksh_embed Redirect the output to a file and add your changes at the end:
par_ash_embed your par_ksh_embed /usr/local/bin/parallel --embed > new_script
par_ash_embed code par_ksh_embed Put
par_ash_embed here par_ksh_embed your
par_ash_embed Put your code here par_ksh_embed code
par_ash_embed You can also activate GNU Parallel for interactive use by: par_ksh_embed here
par_ash_embed . ./parallel-embed par_ksh_embed parallel_OK
par__propagate_env ### bug #41805: Idea: propagate --env for parallel --number-of-cores par_ksh_embed env_parallel --env OK
par__propagate_env ** test_zsh par_ksh_embed ./parallel-embed[XXX]: perl: /usr/bin/perl: cannot execute [Argument list too long]
par__propagate_env FOO=test_zsh par_ksh_embed env_parallel: Error: Your environment is too big.
par__propagate_env HOME=~ par_ksh_embed env_parallel: Error: You can try 3 different approaches:
par__propagate_env ** test_zsh_filter par_ksh_embed env_parallel: Error: 1. Run 'env_parallel --session' before you set
par__propagate_env FOO=test_zsh_filter par_ksh_embed env_parallel: Error: variables or define functions.
par__propagate_env HOME=~ par_ksh_embed env_parallel: Error: 2. Use --env and only mention the names to copy.
par__propagate_env ** test_csh par_ksh_embed env_parallel: Error: 3. Try running this in a clean environment once:
par__propagate_env FOO=test_csh par_ksh_embed env_parallel: Error: env_parallel --record-env
par__propagate_env HOME=~ par_ksh_embed env_parallel: Error: And then use '--env _'
par__propagate_env ** test_csh_filter par_ksh_embed env_parallel: Error: For details see: man env_parallel
par__propagate_env FOO=test_csh_filter par_ksh_embed ParsetOK
par__propagate_env HOME=~ par_ksh_embed Put
par__propagate_env ** bug #41805 done par_ksh_embed your
par__d_filter_hosts ### --filter-hosts and -0 par_ksh_embed code
par__d_filter_hosts ### https://lists.gnu.org/archive/html/parallel/2022-07/msg00002.html par_ksh_embed here
par__d_filter_hosts OKa par_ksh_embed Put your code here
par__d_filter_hosts OKb par_ksh_embed You can also activate GNU Parallel for interactive use by:
par__d_filter_hosts OKa par_ksh_embed . ./parallel-embed
par__d_filter_hosts OKb par_no_route_to_host ### no route to host with | and -j0 causes inf loop
par__d_filter_hosts OKa par_no_route_to_host ssh: connect to host i.p.n.r port 22: No route to host par_no_route_to_host
par__d_filter_hosts OKb par_no_route_to_host parallel: This job finished:
par__d_filter_hosts OKa par_no_route_to_host raw i.p.n.r
par__d_filter_hosts OKb par_no_route_to_host parallel: Warning: ssh to i.p.n.r only allows for 0 simultaneous logins.
par__d_filter_hosts OKa par_no_route_to_host parallel: Warning: You may raise this by changing
par__d_filter_hosts OKb par_no_route_to_host parallel: Warning: /etc/ssh/sshd_config:MaxStartups and MaxSessions on i.p.n.r.
par_PARALLEL_SSHLOGIN_SSHHOST ### bug #56554: Introduce $PARALLEL_SSHLOGIN $PARALLEL_SSHHOST par_no_route_to_host parallel: Warning: You can also try --sshdelay 0.1
par_PARALLEL_SSHLOGIN_SSHHOST /usr/bin/ssh csh@lo /usr/bin/ssh csh@lo lo par_no_route_to_host parallel: Warning: Using only -1 connections to avoid race conditions.
par_PARALLEL_SSHLOGIN_SSHHOST /usr/bin/ssh csh@lo csh par_no_route_to_host parallel: Error: Cannot run any jobs.
par_PARALLEL_SSHLOGIN_SSHHOST /usr/bin/ssh tcsh@lo /usr/bin/ssh tcsh@lo lo par_no_route_to_host via_parallel i.p.n.r
par_PARALLEL_SSHLOGIN_SSHHOST /usr/bin/ssh tcsh@lo tcsh par_sh_embed --embed
par_PARALLEL_SSHLOGIN_SSHHOST lo lo lo par_sh_embed Redirect the output to a file and add your changes at the end:
par_PARALLEL_SSHLOGIN_SSHHOST lo tange par_sh_embed /usr/local/bin/parallel --embed > new_script
par_PARALLEL_SSHLOGIN_SSHHOST sh@lo sh par_sh_embed Put
par_PARALLEL_SSHLOGIN_SSHHOST sh@lo sh@lo lo par_sh_embed your
par_PARALLEL_SSHLOGIN_SSHHOST zsh@lo zsh par_sh_embed code
par_PARALLEL_SSHLOGIN_SSHHOST zsh@lo zsh@lo lo par_sh_embed here
par_sh_embed parallel_OK
par_sh_embed env_parallel --env OK
par_sh_embed env_parallel_OK
par_sh_embed ParsetOK
par_sh_embed Put
par_sh_embed your
par_sh_embed code
par_sh_embed here
par_sh_embed Put your code here
par_sh_embed You can also activate GNU Parallel for interactive use by:
par_sh_embed . ./parallel-embed
par_tcsh_embed Not implemented
par_zsh_embed --embed
par_zsh_embed Redirect the output to a file and add your changes at the end:
par_zsh_embed /usr/local/bin/parallel --embed > new_script
par_zsh_embed Put
par_zsh_embed your
par_zsh_embed code
par_zsh_embed here
par_zsh_embed parallel_OK
par_zsh_embed env_parallel --env OK
par_zsh_embed _which_PAR:13: argument list too long: perl
par_zsh_embed env_parallel: Error: Your environment is too big.
par_zsh_embed env_parallel: Error: You can try 3 different approaches:
par_zsh_embed env_parallel: Error: 1. Run 'env_parallel --session' before you set
par_zsh_embed env_parallel: Error: variables or define functions.
par_zsh_embed env_parallel: Error: 2. Use --env and only mention the names to copy.
par_zsh_embed env_parallel: Error: 3. Try running this in a clean environment once:
par_zsh_embed env_parallel: Error: env_parallel --record-env
par_zsh_embed env_parallel: Error: And then use '--env _'
par_zsh_embed env_parallel: Error: For details see: man env_parallel
par_zsh_embed ParsetOK
par_zsh_embed Put
par_zsh_embed your
par_zsh_embed code
par_zsh_embed here
par_zsh_embed Put your code here
par_zsh_embed You can also activate GNU Parallel for interactive use by:
par_zsh_embed . ./parallel-embed

View file

@ -115,8 +115,8 @@ par_special_ssh 98
par_special_ssh 99 par_special_ssh 99
par_special_ssh 100 par_special_ssh 100
par_timeout_retries ### test --timeout --retries par_timeout_retries ### test --timeout --retries
par_timeout_retries ssh: connect to host 192.168.1.197 port 22: No route to host par_timeout_retries
par_timeout_retries parallel: Warning: This job was killed because it timed out: par_timeout_retries parallel: Warning: This job was killed because it timed out:
par_timeout_retries parallel: Warning: ssh 192.168.1.197 echo 192.168.1.197
par_timeout_retries parallel: Warning: ssh 8.8.8.8 echo 8.8.8.8 par_timeout_retries parallel: Warning: ssh 8.8.8.8 echo 8.8.8.8
par_timeout_retries vagrant@parallel-server1 par_timeout_retries vagrant@parallel-server1
par_timeout_retries vagrant@parallel-server2 par_timeout_retries vagrant@parallel-server2

View file

@ -499,7 +499,8 @@ Computer:jobs running/jobs completed/%of started jobs/Average seconds to complet
seq 1000 | parallel -j10 --bar '(echo -n {};sleep 0.1)' \ seq 1000 | parallel -j10 --bar '(echo -n {};sleep 0.1)' \
2> >(perl -pe 'BEGIN{$/="\r";$|=1};s/\r/\n/g' | 2> >(perl -pe 'BEGIN{$/="\r";$|=1};s/\r/\n/g' |
zenity --timeout=15 --progress --auto-kill --auto-close) zenity --timeout=15 --progress --auto-kill --auto-close)
BASE64--joblog /tmp/log exit ::: 1 2 3 0
parallel --joblog /tmp/log exit ::: 1 2 3 0
cat /tmp/log; cat /tmp/log;
parallel --joblog /tmp/log exit ::: 1 2 3 0 parallel --joblog /tmp/log exit ::: 1 2 3 0
cat /tmp/log; parallel --resume --joblog /tmp/log exit ::: 1 2 3 0 0 0 cat /tmp/log; parallel --resume --joblog /tmp/log exit ::: 1 2 3 0 0 0
@ -664,8 +665,9 @@ Unknown option: parallel@lo
Unknown option: myecho $myvar Unknown option: myecho $myvar
Unknown option: ::: Unknown option: :::
Unknown option: green Unknown option: green
You have called the dummy script "env_parallel".
env_parallel only works if it is a function. env_parallel only works if it is a function.
Do this and restart your shell: You need to do this and restart your shell:
bash: Put this in $HOME/.bashrc: . env_parallel.bash bash: Put this in $HOME/.bashrc: . env_parallel.bash
E.g. by doing: echo '. env_parallel.bash' >> $HOME/.bashrc E.g. by doing: echo '. env_parallel.bash' >> $HOME/.bashrc
Supports: variables, aliases, functions, arrays Supports: variables, aliases, functions, arrays
@ -752,8 +754,9 @@ Unknown option: parallel@lo
Unknown option: echo $NOT; not_ex Unknown option: echo $NOT; not_ex
Unknown option: ::: Unknown option: :::
Unknown option: bar Unknown option: bar
You have called the dummy script "env_parallel".
env_parallel only works if it is a function. env_parallel only works if it is a function.
Do this and restart your shell: You need to do this and restart your shell:
bash: Put this in $HOME/.bashrc: . env_parallel.bash bash: Put this in $HOME/.bashrc: . env_parallel.bash
E.g. by doing: echo '. env_parallel.bash' >> $HOME/.bashrc E.g. by doing: echo '. env_parallel.bash' >> $HOME/.bashrc
Supports: variables, aliases, functions, arrays Supports: variables, aliases, functions, arrays

View file

@ -53,16 +53,16 @@ par_-r Is the server running on that host and accepting TCP/IP connections?
par_-r [ | psql -h 127.0.0.3 -U nongood -p 2227 -d nongood] par_-r [ | psql -h 127.0.0.3 -U nongood -p 2227 -d nongood]
par_-r psql: error: connection to server at "127.0.0.3", port 2227 failed: Connection refused par_-r psql: error: connection to server at "127.0.0.3", port 2227 failed: Connection refused
par_-r Is the server running on that host and accepting TCP/IP connections? par_-r Is the server running on that host and accepting TCP/IP connections?
par__listproc ### Test --show-processlist|proclist|listproc
par__listproc 2 17
par__listproc 2 17
par__listproc 2 17
par_dbsize ### Test --db-size --dbsize par_dbsize ### Test --db-size --dbsize
par_dbsize 6 par_dbsize 6
par_dbsize 6 par_dbsize 6
par_dburl_user_password_host_port ### Test dburl with username password host port par_dburl_user_password_host_port ### Test dburl with username password host port
par_dburl_user_password_host_port Test dburl with username password host port par_dburl_user_password_host_port Test dburl with username password host port
par_dburl_user_password_host_port OK par_dburl_user_password_host_port OK
par_listproc ### Test --show-processlist|proclist|listproc
par_listproc 2 17
par_listproc 2 17
par_listproc 2 17
par_noheaders ### Test --noheaders --no-headers -n par_noheaders ### Test --noheaders --no-headers -n
par_noheaders abc 1 par_noheaders abc 1
par_noheaders def 3 par_noheaders def 3
@ -89,5 +89,5 @@ par_sql_on_cmdline ### Test reading sql on command line
par_sql_on_cmdline Test reading SQL from command line par_sql_on_cmdline Test reading SQL from command line
par_sql_on_cmdline Yes it does par_sql_on_cmdline Yes it does
par_tablesize ### Test --table-size --tablesize par_tablesize ### Test --table-size --tablesize
par_tablesize 94 par_tablesize 93
par_tablesize 94 par_tablesize 93

View file

@ -4,27 +4,27 @@
1 1
1 1
centos8.localdomain centos8.localdomain
freebsd12.localdomain freebsd14.localdomain
hostname; echo 1 hostname; echo 1
hostname; echo 1 hostname; echo 1
### Test $PARALLEL - multi line ### Test $PARALLEL - multi line
1 1
1 1
centos8.localdomain centos8.localdomain
freebsd12.localdomain freebsd14.localdomain
hostname; echo 1 hostname; echo 1
hostname; echo 1 hostname; echo 1
### Test ~/.parallel/config - single line ### Test ~/.parallel/config - single line
1 1
1 1
centos8.localdomain centos8.localdomain
freebsd12.localdomain freebsd14.localdomain
hostname; echo 1 hostname; echo 1
hostname; echo 1 hostname; echo 1
### Test ~/.parallel/config - multi line ### Test ~/.parallel/config - multi line
1 1
1 1
centos8.localdomain centos8.localdomain
freebsd12.localdomain freebsd14.localdomain
hostname; echo 1 hostname; echo 1
hostname; echo 1 hostname; echo 1