parallel: Calculate #CPU as either #threads, #cores, or #sockets.

This commit is contained in:
Ole Tange 2018-07-14 06:11:58 +02:00
parent 0d5072907d
commit 896048efbc
5 changed files with 730 additions and 498 deletions

File diff suppressed because it is too large Load diff

View file

@ -975,7 +975,7 @@ See also B<--resume> B<--resume-failed>.
Number of jobslots on each machine. Run up to N jobs in parallel. 0
means as many as possible. Default is 100% which will run one job per
CPU core on each machine.
CPU on each machine.
If B<--semaphore> is set, the default is 1 thus making a mutex.
@ -988,8 +988,9 @@ If B<--semaphore> is set, the default is 1 thus making a mutex.
=item B<-P> I<+N>
Add N to the number of CPU cores. Run this many jobs in parallel.
See also B<--use-cpus-instead-of-cores>.
Add N to the number of CPUs. Run this many jobs in parallel. See
also B<--use-cores-instead-of-threads> and
B<--use-sockets-instead-of-threads>.
=item B<--jobs> I<-N>
@ -1000,9 +1001,10 @@ See also B<--use-cpus-instead-of-cores>.
=item B<-P> I<-N>
Subtract N from the number of CPU cores. Run this many jobs in parallel.
Subtract N from the number of CPUs. Run this many jobs in parallel.
If the evaluated number is less than 1 then 1 will be used. See also
B<--use-cpus-instead-of-cores>.
B<--use-cores-instead-of-threads> and
B<--use-sockets-instead-of-threads>.
=item B<--jobs> I<N>%
@ -1013,8 +1015,9 @@ B<--use-cpus-instead-of-cores>.
=item B<-P> I<N>%
Multiply N% with the number of CPU cores. Run this many jobs in
parallel. See also B<--use-cpus-instead-of-cores>.
Multiply N% with the number of CPUs. Run this many jobs in
parallel. See also B<--use-cores-instead-of-threads> and
B<--use-sockets-instead-of-threads>.
=item B<--jobs> I<procfile>
@ -1392,13 +1395,13 @@ inspired by bash's parameter expansion:
=item B<--progress>
Show progress of computations. List the computers involved in the task
with number of CPU cores detected and the max number of jobs to
run. After that show progress for each computer: number of running
jobs, number of completed jobs, and percentage of all jobs done by
this computer. The percentage will only be available after all jobs
have been scheduled as GNU B<parallel> only read the next job when
ready to schedule it - this is to avoid wasting time and memory by
reading everything at startup.
with number of CPUs detected and the max number of jobs to run. After
that show progress for each computer: number of running jobs, number
of completed jobs, and percentage of all jobs done by this
computer. The percentage will only be available after all jobs have
been scheduled as GNU B<parallel> only read the next job when ready to
schedule it - this is to avoid wasting time and memory by reading
everything at startup.
By sending GNU B<parallel> SIGUSR2 you can toggle turning on/off
B<--progress> on a running GNU B<parallel> process.
@ -1450,16 +1453,29 @@ exit (used by GNU B<parallel> itself to determine the line length
on remote computers).
=item B<--number-of-cpus>
=item B<--number-of-cpus> (obsolete)
Print the number of physical CPUs and exit (used by GNU B<parallel>
itself to determine the number of physical CPUs on remote computers).
Print the number of physical CPU cores and exit.
=item B<--number-of-cores>
=item B<--number-of-cores> (alpha testing)
Print the number of CPU cores and exit (used by GNU B<parallel> itself
to determine the number of CPU cores on remote computers).
Print the number of physical CPU cores and exit (used by GNU B<parallel> itself
to determine the number of physical CPU cores on remote computers).
=item B<--number-of-sockets> (alpha testing)
Print the number of filled CPU sockets and exit (used by GNU
B<parallel> itself to determine the number of filled CPU sockets on
remote computers).
=item B<--number-of-threads> (alpha testing)
Print the number of hyperthreaded CPU cores and exit (used by GNU
B<parallel> itself to determine the number of hyperthreaded CPU cores
on remote computers).
=item B<--no-keep-order>
@ -2206,11 +2222,11 @@ I<secs> seconds after starting each ssh. I<secs> can be less than 1
seconds.
=item B<-S> I<[@hostgroups/][ncores/]sshlogin[,[@hostgroups/][ncores/]sshlogin[,...]]>
=item B<-S> I<[@hostgroups/][ncpus/]sshlogin[,[@hostgroups/][ncpus/]sshlogin[,...]]>
=item B<-S> I<@hostgroup>
=item B<--sshlogin> I<[@hostgroups/][ncores/]sshlogin[,[@hostgroups/][ncores/]sshlogin[,...]]>
=item B<--sshlogin> I<[@hostgroups/][ncpus/]sshlogin[,[@hostgroups/][ncpus/]sshlogin[,...]]>
=item B<--sshlogin> I<@hostgroup>
@ -2224,10 +2240,10 @@ will always be added to a hostgroup named the same as I<sshlogin>.
If only the I<@hostgroup> is given, only the sshlogins in that
hostgroup will be used. Multiple I<@hostgroup> can be given.
GNU B<parallel> will determine the number of CPU cores on the remote
GNU B<parallel> will determine the number of CPUs on the remote
computers and run the number of jobs as specified by B<-j>. If the
number I<ncores> is given GNU B<parallel> will use this number for
number of CPU cores on the host. Normally I<ncores> will not be
number I<ncpus> is given GNU B<parallel> will use this number for
number of CPUs on the host. Normally I<ncpus> will not be
needed.
An I<sshlogin> is of the form:
@ -2268,24 +2284,24 @@ lines. Empty lines and lines starting with '#' are ignored. Example:
server.example.com
username@server2.example.com
8/my-8-core-server.example.com
8/my-8-cpu-server.example.com
2/my_other_username@my-dualcore.example.net
# This server has SSH running on port 2222
ssh -p 2222 server.example.net
4/ssh -p 2222 quadserver.example.net
# Use a different ssh program
myssh -p 2222 -l myusername hexacpu.example.net
# Use a different ssh program with default number of cores
# Use a different ssh program with default number of CPUs
//usr/local/bin/myssh -p 2222 -l myusername hexacpu
# Use a different ssh program with 6 cores
# Use a different ssh program with 6 CPUs
6//usr/local/bin/myssh -p 2222 -l myusername hexacpu
# Assume 16 cores on the local computer
# Assume 16 CPUs on the local computer
16/:
# Put server1 in hostgroup1
@hostgroup1/server1
# Put myusername@server2 in hostgroup1+hostgroup2
@hostgroup1+hostgroup2/myusername@server2
# Force 4 cores and put 'ssh -p 2222 server3' in hostgroup1
# Force 4 CPUs and put 'ssh -p 2222 server3' in hostgroup1
@hostgroup1/4/ssh -p 2222 server3
When using a different ssh program the last argument must be the hostname.
@ -2553,16 +2569,46 @@ Use the replacement string I<replace-str> instead of B<{.}> for input
line without extension.
=item B<--use-cpus-instead-of-cores>
=item B<--use-sockets-instead-of-threads> (alpha testing)
Count the number of physical CPUs instead of CPU cores. When computing
how many jobs to run simultaneously relative to the number of CPU cores
you can ask GNU B<parallel> to instead look at the number of physical
CPUs. This will make sense for computers that have hyperthreading as
two jobs running on one CPU with hyperthreading will run slower than
two jobs running on two physical CPUs. Some multi-core CPUs can run
faster if only one thread is running per physical CPU. Most users will
not need this option.
=item B<--use-cores-instead-of-threads> (alpha testing)
=item B<--use-cpus-instead-of-cores> (obsolete)
Determine how GNU B<parallel> counts the number of CPUs. GNU
B<parallel> uses this number when the number of jobslots is computed
relative to the number of CPUs (e.g. 100% or +1).
CPUs can be counted in three different ways:
=over 8
=item sockets
The number of filled CPU sockets (i.e. the number of physical chips).
=item cores
The number of physical cores (i.e. the number of physical compute
cores).
=item threads
The number of hyperthreaded cores (i.e. the number of virtual
cores - with some of them possibly being hyperthreaded)
=back
Normally the number of CPUs is computed as the number of CPU
threads. With B<--use-sockets-instead-of-threads> or
B<--use-cores-instead-of-threads> you can force it to be computed as
the number of filled sockets or number of cores instead.
Most users will not need these options.
B<--use-cpus-instead-of-cores> is a (misleading) alias for
B<--use-sockets-instead-of-threads> and is kept for backwards
compatibility.
=item B<-v>
@ -2669,8 +2715,7 @@ using B<gzip> run:
parallel gzip --best ::: *.html
To convert *.wav to *.mp3 using LAME running one process per CPU core
run:
To convert *.wav to *.mp3 using LAME running one process per CPU run:
parallel lame {} -o {.}.mp3 ::: *.wav
@ -2725,8 +2770,8 @@ file:
convert -geometry 120 foo.jpg thumb_foo.jpg
This will run with number-of-cpu-cores jobs in parallel for all jpg
files in a directory:
This will run with number-of-cpus jobs in parallel for all jpg files
in a directory:
ls *.jpg | parallel convert -geometry 120 {} thumb_{}
@ -2879,7 +2924,7 @@ Create a directory for each zip-file and unzip it in that dir:
parallel 'mkdir {.}; cd {.}; unzip ../{}' ::: *.zip
Recompress all .gz files in current directory using B<bzip2> running 1
job per CPU core in parallel:
job per CPU in parallel:
parallel "zcat {} | bzip2 >{.}.bz2 && rm {}" ::: *.gz
@ -3430,7 +3475,7 @@ GNU B<parallel> can often speed this up.
find . -type f | parallel -k -j150% -n 1000 -m grep -H -n STRING {}
This will run 1.5 job per core, and give 1000 arguments to B<grep>.
This will run 1.5 job per CPU, and give 1000 arguments to B<grep>.
=head1 EXAMPLE: Grepping n lines for m regular expressions.
@ -3491,13 +3536,13 @@ If it still does not fit in memory you can do this:
parallel --pipepart -a regexps.txt --block 1M grep -Ff - -n bigfile |
sort -un | perl -pe 's/^\d+://'
The 1M should be your free memory divided by the number of cores and
The 1M should be your free memory divided by the number of CPU threads and
divided by 200 for B<grep -F> and by 1000 for normal B<grep>. On
GNU/Linux you can do:
free=$(awk '/^((Swap)?Cached|MemFree|Buffers):/ { sum += $2 }
END { print sum }' /proc/meminfo)
percpu=$((free / 200 / $(parallel --number-of-cores)))k
percpu=$((free / 200 / $(parallel --number-of-threads)))k
parallel --pipepart -a regexps.txt --block $percpu --compress \
grep -F -f - -n bigfile |
@ -3607,13 +3652,13 @@ To include the local computer add the special sshlogin ':' to the list:
server3.example.com
:
GNU B<parallel> will try to determine the number of CPU cores on each
of the remote computers, and run one job per CPU core - even if the
remote computers do not have the same number of CPU cores.
GNU B<parallel> will try to determine the number of CPUs on each of
the remote computers, and run one job per CPU - even if the remote
computers do not have the same number of CPUs.
If the number of CPU cores on the remote computers is not identified
correctly the number of CPU cores can be added in front. Here the
computer has 8 CPU cores.
If the number of CPUs on the remote computers is not identified
correctly the number of CPUs can be added in front. Here the computer
has 8 CPUs.
seq 10 | parallel --sshlogin 8/server.example.com echo
@ -3691,7 +3736,8 @@ the special short hand I<-S ..> can be used:
=head1 EXAMPLE: Distributing work to local and remote computers
Convert *.mp3 to *.ogg running one process per CPU core on local computer and server2:
Convert *.mp3 to *.ogg running one process per CPU on local computer
and server2:
parallel --trc {.}.ogg -S server2,: \
'mpg321 -w - {} | oggenc -q0 - -o {.}.ogg' ::: *.mp3
@ -3956,7 +4002,7 @@ To run 100 processes simultaneously do:
As there is not a I<command> the jobs will be evaluated by the shell.
=head1 EXAMPLE: Processing a big file using more cores
=head1 EXAMPLE: Processing a big file using more CPUs
To process a big file or some output you can use B<--pipe> to split up
the data into blocks and pipe the blocks into the processing program.
@ -3966,8 +4012,8 @@ If the program is B<gzip -9> you can do:
cat bigfile | parallel --pipe --recend '' -k gzip -9 > bigfile.gz
This will split B<bigfile> into blocks of 1 MB and pass that to B<gzip
-9> in parallel. One B<gzip> will be run per CPU core. The output of
B<gzip -9> will be kept in order and saved to B<bigfile.gz>
-9> in parallel. One B<gzip> will be run per CPU. The output of B<gzip
-9> will be kept in order and saved to B<bigfile.gz>
B<gzip> works fine if the output is appended, but some processing does
not work like that - for example sorting. For this GNU B<parallel> can

View file

@ -94,9 +94,11 @@ user having to know the location. So if the user's path includes
dir that makes most sense for the sysadmin.
=head3 env_parallel.bash / env_parallel.zsh / env_parallel.ksh / env_parallel.pdksh
=head3 env_parallel.bash / env_parallel.sh / env_parallel.ash /
env_parallel.dash / env_parallel.zsh / env_parallel.ksh /
env_parallel.mksh
B<env_parallel.(bash|ksh|pdksh|zsh)> defines the function
B<env_parallel.(bash|sh|ash|dash|ksh|mksh|zsh)> defines the function
B<env_parallel>. It uses B<alias> and B<typeset> to dump the
configuration (with a few exceptions) into B<$PARALLEL_ENV> before
running GNU B<parallel>.
@ -145,7 +147,7 @@ This is then all saved in B<$PARALLEL_ENV>.
GNU B<parallel> is called, and B<$PARALLEL_ENV> is deleted.
=head2 parset
=head2 parset (supported in sh, ash, dash, bash, zsh, ksh, mksh)
B<parset> is a shell function. This is the reason why B<parset> can
set variables: It runs in the shell which is calling it.
@ -327,7 +329,9 @@ It is made this way to be compatible with B<*csh>/B<fish>.
< $FILE perl -e 'while(@ARGV) {
sysseek(STDIN,shift,0) || die;
$left = shift;
while($read = sysread(STDIN,$buf, ($left > 131072 ? 131072 : $left))){
while($read =
sysread(STDIN,$buf,
($left > 131072 ? 131072 : $left))){
$left -= $read;
syswrite(STDOUT,$buf);
}
@ -343,7 +347,8 @@ and send it to STDOUT.
=item --transfer
ssh $SSHLOGIN mkdir -p ./$WORKDIR;
rsync --protocol 30 -rlDzR -essh ./{} $SSHLOGIN:./$WORKDIR;
rsync --protocol 30 -rlDzR \
-essh ./{} $SSHLOGIN:./$WORKDIR;
ssh $SSHLOGIN "$COMMAND"
Read about B<--protocol 30> in the section B<Rsync protocol version>.
@ -359,8 +364,10 @@ Read about B<--protocol 30> in the section B<Rsync protocol version>.
=item --return I<file>
$COMMAND; _EXIT_status=$?; mkdir -p $WORKDIR;
rsync --protocol 30 --rsync-path=cd\ ./$WORKDIR\;\ rsync \
-rlDzR -essh $SSHLOGIN:./$FILE ./$WORKDIR; exit $_EXIT_status;
rsync --protocol 30 \
--rsync-path=cd\ ./$WORKDIR\;\ rsync \
-rlDzR -essh $SSHLOGIN:./$FILE ./$WORKDIR;
exit $_EXIT_status;
The B<--rsync-path=cd ...> is needed because old versions of B<rsync>
do not support B<--no-implied-dirs>.
@ -374,7 +381,8 @@ wrapping 'sh -c' is enough?
$RETURN is the wrapper from B<--return>
$COMMAND; _EXIT_status=$?; $RETURN;
ssh $SSHLOGIN \(rm\ -f\ ./$WORKDIR/{}\;\ rmdir\ ./$WORKDIR\ \>\&/dev/null\;\);
ssh $SSHLOGIN \(rm\ -f\ ./$WORKDIR/{}\;\
rmdir\ ./$WORKDIR\ \>\&/dev/null\;\);
exit $_EXIT_status;
B<$_EXIT_status>: see B<--return> above.
@ -496,7 +504,7 @@ And this will again work just fine, as long as you are running a
single command. When you are running a composed command you need nice
to apply to the whole command, and it gets harder still:
parallel -S server -q nice bash -c 'command1 ...; command2 | command3'
parallel -S server -q nice bash -c 'command1 ...; cmd2 | cmd3'
It is not impossible, but by using B<--nice> GNU B<parallel> will do
the right thing for you. Similarly when transferring files: It starts
@ -824,7 +832,8 @@ B<parallel> had been in its normal mode. The script looks like this:
< file perl -e 'while(@ARGV) {
sysseek(STDIN,shift,0) || die;
$left = shift;
while($read = sysread(STDIN,$buf, ($left > 32768 ? 32768 : $left))){
while($read = sysread(STDIN,$buf,
($left > 131072 ? 131072 : $left))){
$left -= $read; syswrite(STDOUT,$buf);
}
}' startbyte length_in_bytes
@ -1135,6 +1144,23 @@ Unfortunately it is not always possible to predict the root cause of
the error.
=head2 Determine number of CPUs
CPUs is an ambiguous term. It can mean the number of socket filled
(i.e. the number of physical chips). It can mean the number of cores
(i.e. the number of physical compute cores). It can mean the number of
hyperthreaded cores (i.e. the number of virtual cores - with some of
them possibly being hyperthreaded).
On ark.intel.com Intel uses the terms I<cores> and I<threads> for
number of physical cores and the number of hyperthreaded cores
respectively.
GNU B<parallel> uses uses I<CPUs> as the number of compute units and
the terms I<sockets>, I<cores>, and I<threads> to specify how the
number of compute units is calculated.
=head2 Computation of load
Contrary to the obvious B<--load> does not use load average. This is
@ -1175,6 +1201,7 @@ respectively.
The Signal column has been renamed to _Signal due to Signal being a
reserved word in MySQL.
=head2 Logo
The logo is inspired by the Cafe Wall illusion. The font is DejaVu
@ -1237,6 +1264,7 @@ Will that require 2x block size memory?
These decisions were relevant for earlier versions of GNU B<parallel>,
but not the current version. They are kept here as historical record.
=head2 --tollef
You can read about the history of GNU B<parallel> on

View file

@ -18,8 +18,8 @@ P="$P_WORKING"
POLAR=`parallel -k echo {}.polarhome.com ::: $P`
S_POLAR=`parallel -k echo -S 1/{}.polarhome.com ::: $P`
# 2018-04-22 TIMEOUT=20
TIMEOUT=25
# 2018-04-22 MAXTIME=20
MAXTIME=25
RETRIES=4
parallel --retries $RETRIES rsync -a /usr/local/bin/{parallel,env_parallel,env_parallel.*,parcat} ::: redhat.polarhome.com:bin/
@ -28,9 +28,9 @@ doit() {
# Avoid the stupid /etc/issue.net banner at Polarhome: -oLogLevel=quiet
PARALLEL_SSH="ssh -oLogLevel=quiet"
export PARALLEL_SSH
export TIMEOUT
export MAXTIME
export RETRIES
echo TIMEOUT=$TIMEOUT RETRIES=$RETRIES
echo MAXTIME=$MAXTIME RETRIES=$RETRIES
copy() {
# scp, but atomic (avoid half files if disconnected)
@ -43,19 +43,19 @@ doit() {
export -f copy
par_nonall() {
parallel -j15 -k --retries $RETRIES --timeout $TIMEOUT --delay 0.1 --tag \
parallel -j15 -k --retries $RETRIES --timeout $MAXTIME --delay 0.1 --tag \
--nonall $S_POLAR --argsep ,:- \
'source setupenv >&/dev/null || . `pwd`/setupenv;' "$@"
}
export -f par_nonall
echo '### Copy commands to servers'
parallel -vkj15 --retries $RETRIES --timeout $TIMEOUT --delay 0.03 --tag \
parallel -vkj15 --retries $RETRIES --timeout $MAXTIME --delay 0.03 --tag \
copy {2} {1} {1/} \
::: bin/{parallel,env_parallel,env_parallel.*,parcat,stdout} \
::: $POLAR
echo Done copying
# Test empty command
test_empty_cmd() {
echo '### Test if empty command in process list causes problems'
@ -65,11 +65,19 @@ doit() {
export -f test_empty_cmd
PARALLEL='--env test_empty_cmd' par_nonall test_empty_cmd 2>&1
par_nonall parallel echo Works on {} ::: '`hostname`' 2>&1
par_nonall "stdout parallel --tmpdir / echo ::: test read-only tmp |" \
"perl -pe '\$exit += s:/[a-z0-9_]+.arg:/XXXXXXXX.arg:gi; \$exit += s/[0-9][0-9][0-9][0-9]/0000/gi; END { exit not \$exit }' &&" \
"echo OK readonly tmp" 2>&1
echo
echo '### --number-of-cores/--number-of-cpus should work with no error'
echo
par_nonall parallel --number-of-sockets 2>&1
par_nonall parallel --number-of-cores 2>&1
par_nonall parallel --number-of-threads 2>&1
par_nonall parallel --number-of-cpus 2>&1
echo
echo '### Does exporting a bash function kill parallel'
echo

View file

@ -1,4 +1,4 @@
TIMEOUT=25 RETRIES=4
MAXTIME=25 RETRIES=4
### Copy commands to servers
bin/parallel openbsd.polarhome.com copy openbsd.polarhome.com bin/parallel parallel
bin/parallel tru64.polarhome.com copy tru64.polarhome.com bin/parallel parallel
@ -184,6 +184,29 @@ bin/env_parallel.ksh hurd.polarhome.com copy hurd.polarhome.com bin/env_parallel
bin/env_parallel.ksh freebsd.polarhome.com copy freebsd.polarhome.com bin/env_parallel.ksh env_parallel.ksh
bin/env_parallel.ksh ubuntu.polarhome.com copy ubuntu.polarhome.com bin/env_parallel.ksh env_parallel.ksh
bin/env_parallel.ksh openindiana.polarhome.com copy openindiana.polarhome.com bin/env_parallel.ksh env_parallel.ksh
bin/env_parallel.mksh openbsd.polarhome.com copy openbsd.polarhome.com bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh tru64.polarhome.com copy tru64.polarhome.com bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh debian.polarhome.com copy debian.polarhome.com bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh redhat.polarhome.com copy redhat.polarhome.com bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh netbsd.polarhome.com copy netbsd.polarhome.com bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh macosx.polarhome.com copy macosx.polarhome.com bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh miros.polarhome.com copy miros.polarhome.com bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh centos.polarhome.com copy centos.polarhome.com bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh unixware.polarhome.com copy unixware.polarhome.com bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh pidora.polarhome.com copy pidora.polarhome.com bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh scosysv.polarhome.com copy scosysv.polarhome.com bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh raspbian.polarhome.com copy raspbian.polarhome.com bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh solaris-x86.polarhome.com copy solaris-x86.polarhome.com bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh aix.polarhome.com copy aix.polarhome.com bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh mandriva.polarhome.com copy mandriva.polarhome.com bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh debian-ppc.polarhome.com copy debian-ppc.polarhome.com bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh suse.polarhome.com copy suse.polarhome.com bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh solaris.polarhome.com copy solaris.polarhome.com bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh hpux.polarhome.com copy hpux.polarhome.com bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh hurd.polarhome.com copy hurd.polarhome.com bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh freebsd.polarhome.com copy freebsd.polarhome.com bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh ubuntu.polarhome.com copy ubuntu.polarhome.com bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh openindiana.polarhome.com copy openindiana.polarhome.com bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.pdksh openbsd.polarhome.com copy openbsd.polarhome.com bin/env_parallel.pdksh env_parallel.pdksh
bin/env_parallel.pdksh tru64.polarhome.com copy tru64.polarhome.com bin/env_parallel.pdksh env_parallel.pdksh
bin/env_parallel.pdksh debian.polarhome.com copy debian.polarhome.com bin/env_parallel.pdksh env_parallel.pdksh
@ -388,52 +411,143 @@ ubuntu.polarhome.com Works on ubuntu
unixware.polarhome.com Works on unixware.polarhome.com
unixware.polarhome.com UX:sh (/bin/sh): ERROR: source: Not found
aix.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: The file access permissions do not allow the specified action. at /home/t/tange/bin/parallel line 0000
aix.polarhome.com OK
aix.polarhome.com OK readonly tmp
centos.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Parent directory (/) is not writable
centos.polarhome.com at /home/t/tange/bin/parallel line 0000
centos.polarhome.com OK
centos.polarhome.com OK readonly tmp
debian-ppc.polarhome.com Error in tempfile() using template /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at /home/t/tange/bin/parallel line 0000.
debian-ppc.polarhome.com OK
debian-ppc.polarhome.com OK readonly tmp
debian.polarhome.com Error in tempfile() using template /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at /home/t/tange/bin/parallel line 0000.
debian.polarhome.com OK
debian.polarhome.com OK readonly tmp
freebsd.polarhome.com Syntax error: Bad fd number
hpux.polarhome.com No such file or directory: bash
macosx.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at /Users/tange/bin/parallel line 0000
macosx.polarhome.com OK
macosx.polarhome.com OK readonly tmp
mandriva.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at /home/t/tange/bin/parallel line 0000
mandriva.polarhome.com OK
mandriva.polarhome.com OK readonly tmp
miros.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Parent directory (/) is not writable
miros.polarhome.com at /home/t/tange/bin/parallel line 0000
miros.polarhome.com OK
miros.polarhome.com OK readonly tmp
netbsd.polarhome.com Error in tempfile() using template /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at /home/t/tange/bin/parallel line 0000.
openbsd.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at /home/t/tange/bin/parallel line 0000
openbsd.polarhome.com OK
openbsd.polarhome.com OK readonly tmp
openindiana.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at /u/t/tange/bin/parallel line 0000
openindiana.polarhome.com OK
openindiana.polarhome.com OK readonly tmp
pidora.polarhome.com Error in tempfile() using template /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at /home/t/tange/bin/parallel line 0000.
pidora.polarhome.com OK
pidora.polarhome.com OK readonly tmp
raspbian.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at /home/t/tange/bin/parallel line 0000
raspbian.polarhome.com OK
raspbian.polarhome.com OK readonly tmp
redhat.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at /home/t/tange/bin/parallel line 0000
redhat.polarhome.com OK
redhat.polarhome.com OK readonly tmp
scosysv.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Parent directory (/) is not writable
scosysv.polarhome.com at /home/t/tange/bin/parallel line 0000
scosysv.polarhome.com OK
scosysv.polarhome.com OK readonly tmp
solaris-x86.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at ~/bin/parallel line 0000
solaris-x86.polarhome.com OK
solaris-x86.polarhome.com OK readonly tmp
solaris.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Parent directory (/) is not writable
solaris.polarhome.com at /home/t/tange/bin/parallel line 0000
solaris.polarhome.com OK
solaris.polarhome.com OK readonly tmp
suse.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at /home/t/tange/bin/parallel line 0000.
suse.polarhome.com OK
suse.polarhome.com OK readonly tmp
tru64.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Parent directory (/) is not writable
tru64.polarhome.com at /home/t/tange/bin/parallel line 0000
tru64.polarhome.com OK
tru64.polarhome.com OK readonly tmp
ubuntu.polarhome.com Error in tempfile() using template /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at /home/t/tange/bin/parallel line 0000.
ubuntu.polarhome.com OK
ubuntu.polarhome.com OK readonly tmp
unixware.polarhome.com UX:sh (/bin/sh): ERROR: source: Not found
unixware.polarhome.com UX:env: ERROR: No such file or directory: bash
### --number-of-cores/--number-of-cpus should work with no error
aix.polarhome.com 1
centos.polarhome.com 1
debian-ppc.polarhome.com 1
debian.polarhome.com 1
freebsd.polarhome.com Syntax error: Bad fd number
macosx.polarhome.com 2
mandriva.polarhome.com 1
miros.polarhome.com 1
netbsd.polarhome.com 1
openbsd.polarhome.com 1
openindiana.polarhome.com 1
pidora.polarhome.com 1
raspbian.polarhome.com 1
redhat.polarhome.com 1
scosysv.polarhome.com 1
solaris-x86.polarhome.com
solaris.polarhome.com
suse.polarhome.com 1
tru64.polarhome.com 1
ubuntu.polarhome.com 1
unixware.polarhome.com 1
unixware.polarhome.com UX:sh (/bin/sh): ERROR: source: Not found
aix.polarhome.com 1
centos.polarhome.com 1
debian-ppc.polarhome.com 1
debian.polarhome.com 2
freebsd.polarhome.com Syntax error: Bad fd number
macosx.polarhome.com 2
mandriva.polarhome.com 1
miros.polarhome.com 1
netbsd.polarhome.com 1
openbsd.polarhome.com 1
openindiana.polarhome.com 1
pidora.polarhome.com 1
raspbian.polarhome.com 1
redhat.polarhome.com 2
scosysv.polarhome.com 1
solaris-x86.polarhome.com 1
solaris.polarhome.com 2
suse.polarhome.com 1
tru64.polarhome.com 1
ubuntu.polarhome.com 2
unixware.polarhome.com 1
unixware.polarhome.com UX:sh (/bin/sh): ERROR: source: Not found
aix.polarhome.com 1
centos.polarhome.com 1
debian-ppc.polarhome.com 1
debian.polarhome.com 2
freebsd.polarhome.com Syntax error: Bad fd number
macosx.polarhome.com 2
mandriva.polarhome.com 1
miros.polarhome.com 1
netbsd.polarhome.com 1
openbsd.polarhome.com 1
openindiana.polarhome.com 1
pidora.polarhome.com 1
raspbian.polarhome.com 1
redhat.polarhome.com 2
scosysv.polarhome.com 1
solaris-x86.polarhome.com 1
solaris.polarhome.com 2
suse.polarhome.com 1
tru64.polarhome.com 1
ubuntu.polarhome.com 2
unixware.polarhome.com 1
unixware.polarhome.com UX:sh (/bin/sh): ERROR: source: Not found
aix.polarhome.com 1
centos.polarhome.com 1
debian-ppc.polarhome.com 1
debian.polarhome.com 2
freebsd.polarhome.com Syntax error: Bad fd number
macosx.polarhome.com 2
mandriva.polarhome.com 1
miros.polarhome.com 1
netbsd.polarhome.com 1
openbsd.polarhome.com 1
openindiana.polarhome.com 1
pidora.polarhome.com 1
raspbian.polarhome.com 1
redhat.polarhome.com 2
scosysv.polarhome.com 1
solaris-x86.polarhome.com 1
solaris.polarhome.com 2
suse.polarhome.com 1
tru64.polarhome.com 1
ubuntu.polarhome.com 2
unixware.polarhome.com 1
unixware.polarhome.com UX:sh (/bin/sh): ERROR: source: Not found
### Does exporting a bash function kill parallel
aix.polarhome.com bash only A
@ -491,6 +605,7 @@ aix.polarhome.com /home/t/tange/.shrc
aix.polarhome.com /home/t/tange/.zshenv
aix.polarhome.com /home/t/tange/.config/fish/config.fish
aix.polarhome.com /home/t/tange/.kshrc
aix.polarhome.com /home/t/tange/.mkshrc
aix.polarhome.com /home/t/tange/.profile
aix.polarhome.com /home/t/tange/.cshrc
aix.polarhome.com /home/t/tange/.tcshrc
@ -501,6 +616,7 @@ centos.polarhome.com /home/t/tange/.shrc
centos.polarhome.com /home/t/tange/.zshenv
centos.polarhome.com /home/t/tange/.config/fish/config.fish
centos.polarhome.com /home/t/tange/.kshrc
centos.polarhome.com /home/t/tange/.mkshrc
centos.polarhome.com /home/t/tange/.profile
centos.polarhome.com /home/t/tange/.cshrc
centos.polarhome.com /home/t/tange/.tcshrc
@ -511,6 +627,7 @@ debian-ppc.polarhome.com /home/t/tange/.shrc
debian-ppc.polarhome.com /home/t/tange/.zshenv
debian-ppc.polarhome.com /home/t/tange/.config/fish/config.fish
debian-ppc.polarhome.com /home/t/tange/.kshrc
debian-ppc.polarhome.com /home/t/tange/.mkshrc
debian-ppc.polarhome.com /home/t/tange/.profile
debian-ppc.polarhome.com /home/t/tange/.cshrc
debian-ppc.polarhome.com /home/t/tange/.tcshrc
@ -521,6 +638,7 @@ debian.polarhome.com /home/t/tange/.shrc
debian.polarhome.com /home/t/tange/.zshenv
debian.polarhome.com /home/t/tange/.config/fish/config.fish
debian.polarhome.com /home/t/tange/.kshrc
debian.polarhome.com /home/t/tange/.mkshrc
debian.polarhome.com /home/t/tange/.profile
debian.polarhome.com /home/t/tange/.cshrc
debian.polarhome.com /home/t/tange/.tcshrc
@ -532,6 +650,7 @@ macosx.polarhome.com /Users/tange/.shrc
macosx.polarhome.com /Users/tange/.zshenv
macosx.polarhome.com /Users/tange/.config/fish/config.fish
macosx.polarhome.com /Users/tange/.kshrc
macosx.polarhome.com /Users/tange/.mkshrc
macosx.polarhome.com /Users/tange/.profile
macosx.polarhome.com /Users/tange/.cshrc
macosx.polarhome.com /Users/tange/.tcshrc
@ -542,6 +661,7 @@ mandriva.polarhome.com /home/t/tange/.shrc
mandriva.polarhome.com /home/t/tange/.zshenv
mandriva.polarhome.com /home/t/tange/.config/fish/config.fish
mandriva.polarhome.com /home/t/tange/.kshrc
mandriva.polarhome.com /home/t/tange/.mkshrc
mandriva.polarhome.com /home/t/tange/.profile
mandriva.polarhome.com /home/t/tange/.cshrc
mandriva.polarhome.com /home/t/tange/.tcshrc
@ -552,6 +672,7 @@ miros.polarhome.com /home/t/tange/.shrc
miros.polarhome.com /home/t/tange/.zshenv
miros.polarhome.com /home/t/tange/.config/fish/config.fish
miros.polarhome.com /home/t/tange/.kshrc
miros.polarhome.com /home/t/tange/.mkshrc
miros.polarhome.com /home/t/tange/.profile
miros.polarhome.com /home/t/tange/.cshrc
miros.polarhome.com /home/t/tange/.tcshrc
@ -562,6 +683,7 @@ netbsd.polarhome.com /home/t/tange/.shrc
netbsd.polarhome.com /home/t/tange/.zshenv
netbsd.polarhome.com /home/t/tange/.config/fish/config.fish
netbsd.polarhome.com /home/t/tange/.kshrc
netbsd.polarhome.com /home/t/tange/.mkshrc
netbsd.polarhome.com /home/t/tange/.profile
netbsd.polarhome.com /home/t/tange/.cshrc
netbsd.polarhome.com /home/t/tange/.tcshrc
@ -572,6 +694,7 @@ openbsd.polarhome.com /home/t/tange/.shrc
openbsd.polarhome.com /home/t/tange/.zshenv
openbsd.polarhome.com /home/t/tange/.config/fish/config.fish
openbsd.polarhome.com /home/t/tange/.kshrc
openbsd.polarhome.com /home/t/tange/.mkshrc
openbsd.polarhome.com /home/t/tange/.profile
openbsd.polarhome.com /home/t/tange/.cshrc
openbsd.polarhome.com /home/t/tange/.tcshrc
@ -582,6 +705,7 @@ openindiana.polarhome.com /u/t/tange/.shrc
openindiana.polarhome.com /u/t/tange/.zshenv
openindiana.polarhome.com /u/t/tange/.config/fish/config.fish
openindiana.polarhome.com /u/t/tange/.kshrc
openindiana.polarhome.com /u/t/tange/.mkshrc
openindiana.polarhome.com /u/t/tange/.profile
openindiana.polarhome.com /u/t/tange/.cshrc
openindiana.polarhome.com /u/t/tange/.tcshrc
@ -592,6 +716,7 @@ pidora.polarhome.com /home/t/tange/.shrc
pidora.polarhome.com /home/t/tange/.zshenv
pidora.polarhome.com /home/t/tange/.config/fish/config.fish
pidora.polarhome.com /home/t/tange/.kshrc
pidora.polarhome.com /home/t/tange/.mkshrc
pidora.polarhome.com /home/t/tange/.profile
pidora.polarhome.com /home/t/tange/.cshrc
pidora.polarhome.com /home/t/tange/.tcshrc
@ -602,6 +727,7 @@ raspbian.polarhome.com /home/t/tange/.shrc
raspbian.polarhome.com /home/t/tange/.zshenv
raspbian.polarhome.com /home/t/tange/.config/fish/config.fish
raspbian.polarhome.com /home/t/tange/.kshrc
raspbian.polarhome.com /home/t/tange/.mkshrc
raspbian.polarhome.com /home/t/tange/.profile
raspbian.polarhome.com /home/t/tange/.cshrc
raspbian.polarhome.com /home/t/tange/.tcshrc
@ -612,6 +738,7 @@ redhat.polarhome.com /home/t/tange/.shrc
redhat.polarhome.com /home/t/tange/.zshenv
redhat.polarhome.com /home/t/tange/.config/fish/config.fish
redhat.polarhome.com /home/t/tange/.kshrc
redhat.polarhome.com /home/t/tange/.mkshrc
redhat.polarhome.com /home/t/tange/.profile
redhat.polarhome.com /home/t/tange/.cshrc
redhat.polarhome.com /home/t/tange/.tcshrc
@ -622,6 +749,7 @@ scosysv.polarhome.com /home/t/tange/.shrc
scosysv.polarhome.com /home/t/tange/.zshenv
scosysv.polarhome.com /home/t/tange/.config/fish/config.fish
scosysv.polarhome.com /home/t/tange/.kshrc
scosysv.polarhome.com /home/t/tange/.mkshrc
scosysv.polarhome.com /home/t/tange/.profile
scosysv.polarhome.com /home/t/tange/.cshrc
scosysv.polarhome.com /home/t/tange/.tcshrc
@ -632,6 +760,7 @@ solaris-x86.polarhome.com ~/.shrc
solaris-x86.polarhome.com ~/.zshenv
solaris-x86.polarhome.com ~/.config/fish/config.fish
solaris-x86.polarhome.com ~/.kshrc
solaris-x86.polarhome.com ~/.mkshrc
solaris-x86.polarhome.com ~/.profile
solaris-x86.polarhome.com ~/.cshrc
solaris-x86.polarhome.com ~/.tcshrc
@ -642,6 +771,7 @@ solaris.polarhome.com /home/t/tange/.shrc
solaris.polarhome.com /home/t/tange/.zshenv
solaris.polarhome.com /home/t/tange/.config/fish/config.fish
solaris.polarhome.com /home/t/tange/.kshrc
solaris.polarhome.com /home/t/tange/.mkshrc
solaris.polarhome.com /home/t/tange/.profile
solaris.polarhome.com /home/t/tange/.cshrc
solaris.polarhome.com /home/t/tange/.tcshrc
@ -652,6 +782,7 @@ suse.polarhome.com /home/t/tange/.shrc
suse.polarhome.com /home/t/tange/.zshenv
suse.polarhome.com /home/t/tange/.config/fish/config.fish
suse.polarhome.com /home/t/tange/.kshrc
suse.polarhome.com /home/t/tange/.mkshrc
suse.polarhome.com /home/t/tange/.profile
suse.polarhome.com /home/t/tange/.cshrc
suse.polarhome.com /home/t/tange/.tcshrc
@ -662,6 +793,7 @@ tru64.polarhome.com /home/t/tange/.shrc
tru64.polarhome.com /home/t/tange/.zshenv
tru64.polarhome.com /home/t/tange/.config/fish/config.fish
tru64.polarhome.com /home/t/tange/.kshrc
tru64.polarhome.com /home/t/tange/.mkshrc
tru64.polarhome.com /home/t/tange/.profile
tru64.polarhome.com /home/t/tange/.cshrc
tru64.polarhome.com /home/t/tange/.tcshrc
@ -672,6 +804,7 @@ ubuntu.polarhome.com /home/t/tange/.shrc
ubuntu.polarhome.com /home/t/tange/.zshenv
ubuntu.polarhome.com /home/t/tange/.config/fish/config.fish
ubuntu.polarhome.com /home/t/tange/.kshrc
ubuntu.polarhome.com /home/t/tange/.mkshrc
ubuntu.polarhome.com /home/t/tange/.profile
ubuntu.polarhome.com /home/t/tange/.cshrc
ubuntu.polarhome.com /home/t/tange/.tcshrc