parallel: FrithMartin's patch for orphan blocks.

This commit is contained in:
Ole Tange 2015-06-26 09:08:08 +02:00
parent 2ea31ecb17
commit 5a8df2075d
9 changed files with 64 additions and 85 deletions

View file

@ -1,3 +1,4 @@
FrithMartin: Bug patch for orphan blocks.
Rasmus Villemoes: Code snips for signal processing.
Martin d'Anjou: Code snips for signal processing.
rici@stackoverflow.com: Documentation on exporting arrays using --env.

View file

@ -4,7 +4,7 @@
Check that documentation is updated (compare to web):
Fixet for 20150622
Fixet for 20150722
git diff last-release-commit
Unmodified beta since last version => production
Unmodified alpha since last version => beta
@ -209,74 +209,36 @@ cc:Tim Cuthbertson <tim3d.junk@gmail.com>,
Ryoichiro Suzuki <ryoichiro.suzuki@gmail.com>,
Jesse Alama <jesse.alama@gmail.com>
Subject: GNU Parallel 20150622 ('Løkke') released
Subject: GNU Parallel 20150722 ('Davao') released [stable]
GNU Parallel 20150622 ('Løkke') has been released. It is available for download at: http://ftp.gnu.org/gnu/parallel/
GNU Parallel 20150722 ('Davao') [stable] has been released. It is available for download at: http://ftp.gnu.org/gnu/parallel/
A performance chart has been made to compare the performance of different versions: http://www.gnu.org/software/parallel/boxplot-j2-3.0ghz-3000-1000.pdf The recent jump is due to every job being wrapped in a Perl-script doing setpgrp.
No new functionality was introduced so this is a good candidate for a stable release.
Haiku of the month:
Programs very slow.
Multiple can run at once.
Multi core I see.
Doing nothing. I say no!
Use GNU Parallel.
-- Ole Tange
New in this release:
* --halt has been rewritten completely. You can now combine percentages with success or fail. See the man page.
* Exit values 102..254 have been removed. 101 means more than 100 jobs failed.
* Killing through --timeout, --memfree, or --halt is now done as a process group (whence the setpgrp wrapper).
* --termseq determines which signals are sent when a job is killed.
* An empty argument would previously cause no string to be inserted. This is now changed to '' being inserted, thus prepending a space to the output of: parallel echo {} b ::: ''
* $PARALLEL_ENV can now be set to an environment prepending the command. Used in env_parallel as mentioned in the manpage.
* --retry-failed will retry all failed jobs in a joblog. It will ignore any command given.
* --ssh and $PARALLEL_SSH can be used to set the command used for ssh. The command is assumed to behave the same way as ssh.
* --fifo now works in csh, too.
* Q(...) can be used in {= =} to shell quote a string.
* GNU Parallel was cited in: Contrasting regional architectures of schizophrenia and other complex diseases using fast variance components analysis http://biorxiv.org/content/biorxiv/early/2015/06/05/016527.full.pdf
* GNU Parallel was cited in: DockBench: An Integrated Informatic Platform Bridging the Gap between the Robust Validation of Docking Protocols and Virtual Screening Simulations http://www.mdpi.com/1420-3049/20/6/9977
* GNU Parallel was cited in: Swedes Online: You Are More Tracked Than You Think http://www.diva-portal.org/smash/get/diva2:807623/FULLTEXT01.pdf
* GNU Parallel was cited in: Tutorial: Lorenz-Mie theory for 2D scattering and resonance calculations http://arxiv.org/pdf/1505.07691.pdf
* GNU Parallel was cited in: A quantitative assessment of the Hadoop framework for analyzing massively parallel DNA sequencing data http://link.springer.com/article/10.1186/s13742-015-0058-5
* GNU Parallel was cited in: A composite genome approach to identify phylogenetically informative data from next-generation sequencing http://www.biomedcentral.com/content/pdf/s12859-015-0632-y.pdf
* GNU Parallel was cited in: Tutorial: Lorenz-Mie theory for 2D scattering and resonance calculations http://arxiv.org/pdf/1505.07691.pdf
* <<Har angiveligt submittet ny version - afventer opdatering>> GNU Parallel was used (unfortunately without citation) in: MUGBAS: a species free gene-based programme suite for post-GWAS analysis http://www.ncbi.nlm.nih.gov/pubmed/25765345
* <<Afventer updateret publisering>> GNU Parallel was used in: Large Scale Author Name Disambiguation in Digital Libraries http://ieeexplore.ieee.org/xpl/abstractReferences.jsp?tp=&arnumber=7004487&url=http%3A%2F%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D7004487
* <<kontaktet 2015-06-22>> GNU Parallel was used (unfortunately with wrong citation) in: TADSim: Discrete Event-Based Performance Prediction for Temperature-Accelerated Dynamics http://vruehle.de/publications/2015c.pdf
* <<kontaktet 2015-06-22 Afventer svar fra journal>> GNU Parallel was used (unfortunately with wrong citation) in: TADSim: Discrete Event-Based Performance Prediction for Temperature-Accelerated Dynamics http://vruehle.de/publications/2015c.pdf
* << Update forventet juni Rachel har lige svaret >> GNU Parallel was used in: SISRS: Site Identification from Short Read Sequences https://github.com/rachelss/SISRS/
* GNU Parallel is used in: taxator-tk http://algbio.cs.uni-duesseldorf.de/webapps/wa-download/
* GNU Parallel was cited in: Decomposing Time-Lapse Paintings into Layers http://cs.gmu.edu/~ygingold/timemap/Decomposing%20Time-Lapse%20Paintings%20into%20Layers%20(Tan%20et%20al%202015%20SIGGRAPH)%20600dpi.pdf
* GNU Parallel is used in: https://github.com/d2207197/local-mapreduce
* GNU Parallel was used in: Somatic mutation calling from the matched tumor-normal exome-sequencing http://fafner.meb.ki.se/biostatwiki/somac/
* GNU Parallel is used in: wiki-edit-news https://github.com/albert-decatur/wiki-edit-news
* Using GNU Parallel to speed up network operations http://vielmetti.typepad.com/vacuum/2015/06/using-gnu-parallel-to-speed-up-network-operations.html
* GNU Parallel is used in: A Fingerprint Identification System https://curve.carleton.ca/system/files/theses/28733.pdf
* Job ad asking for GNU Parallel experience: http://searchjobs.intel.com/gdansk-pol/software-validation-engineer/63A06826DAF24797AB414DC146201C2E/job/
* Using BLAT http://wangzhengyuan.blogspot.dk/2015/06/using-blat.html
* Simultaneously benchmark many URLs with ApacheBench and GNU parallel https://www.simonholywell.com/post/2015/06/parallel-benchmark-many-urls-with-apachebench/
* Bug fixes and man page updates.

View file

@ -357,6 +357,7 @@ sub spreadstdin {
$recstart,$recend,length $1);
}
} else {
eof($in) and last;
# Find the last recend-recstart in $buf
if($buf =~ s/(.*$recend)($recstart.*?)$/$2/os) {
# Copy to modifiable variable
@ -379,6 +380,7 @@ sub spreadstdin {
shorten(\$buf,$i);
}
} else {
eof($in) and last;
# Find the last recend+recstart in $buf
my $i = rindex64(\$buf,$recendrecstart);
if($i != -1) {
@ -753,8 +755,8 @@ sub options_hash {
"cleanup" => \$opt::cleanup,
"basefile|bf=s" => \@opt::basefile,
"B=s" => \$opt::retired,
"ctrlc|ctrl-c" => \$opt::ctrlc,
"noctrlc|no-ctrlc|no-ctrl-c" => \$opt::noctrlc,
"ctrlc|ctrl-c" => \$opt::retired,
"noctrlc|no-ctrlc|no-ctrl-c" => \$opt::retired,
"workdir|work-dir|wd=s" => \$opt::workdir,
"W=s" => \$opt::retired,
"tmpdir=s" => \$opt::tmpdir,
@ -886,7 +888,6 @@ sub parse_options {
# no-* overrides *
if($opt::nokeeporder) { $opt::keeporder = undef; }
if($opt::noctrlc) { $opt::ctrlc = undef; }
if(@opt::v) { $Global::verbose = $#opt::v+1; } # Convert -v -v to v=2
$Global::debug = $opt::D;
@ -936,7 +937,6 @@ sub parse_options {
$opt::blocksize = 2**31-1;
}
$opt::memfree = multiply_binary_prefix($opt::memfree);
if(defined $opt::controlmaster) { $opt::noctrlc = 1; }
if(defined $opt::timeout and $opt::timeout !~ /^\d+(\.\d+)?%?$/) {
::error("--timeout must be seconds or percentage.");
wait_and_exit(255);
@ -1055,6 +1055,8 @@ sub parse_options {
"-W has been retired. Use --wd.",
"-Y has been retired. Use --shebang.",
"-H has been retired. Use --halt.",
"--ctrlc has been retired.",
"--noctrlc has been retired.",
"--tollef has been retired. Use -u -q --arg-sep -- and --load for -l.");
::wait_and_exit(255);
}
@ -1079,7 +1081,7 @@ sub parse_options {
sub init_globals {
# Defaults:
$Global::version = 20150622;
$Global::version = 20150623;
$Global::progname = 'parallel';
$Global::infinity = 2**31;
$Global::debug = 0;
@ -9457,6 +9459,6 @@ sub mkdir_or_die {
}
# Keep perl -w happy
$opt::ctrlc = $opt::x = $Semaphore::timeout = $Semaphore::wait =
$opt::x = $Semaphore::timeout = $Semaphore::wait =
$opt::ignored_option = $Job::file_descriptor_warning_printed =
$Global::envdef = 0;

View file

@ -502,7 +502,7 @@ I<size> defaults to 1M.
See B<--pipe> and B<--pipepart> for use of this.
=item B<--cat> (alpha testing)
=item B<--cat> (beta testing)
Create a temporary file with content. Normally B<--pipe>/B<--pipepart>
will give data to the program on stdin (standard input). With B<--cat>
@ -568,12 +568,6 @@ Use I<prg> for (de)compressing temporary files. It is assumed that I<prg
output) unless B<--decompress-program> is given.
=item B<--ctrlc>
If receiving SIGNING, GNU B<parallel> will send SIGINT to tasks
running on remote computers thus killing them.
=item B<--delimiter> I<delim>
=item B<-d> I<delim>
@ -695,7 +689,7 @@ Implies B<--semaphore>.
See also B<--bg>, B<man sem>.
=item B<--fifo> (alpha testing)
=item B<--fifo> (beta testing)
Create a temporary fifo with content. Normally B<--pipe> and
B<--pipepart> will give data to the program on stdin (standard
@ -749,9 +743,9 @@ See also: B<--line-buffer> B<--ungroup>
Print a summary of the options to GNU B<parallel> and exit.
=item B<--halt-on-error> I<val> (alpha testing)
=item B<--halt-on-error> I<val> (beta testing)
=item B<--halt> I<val> (alpha testing)
=item B<--halt> I<val> (beta testing)
When should GNU B<parallel> terminate? In some situations it makes no
sense to run all jobs. GNU B<parallel> should simply give up as soon
@ -1491,7 +1485,7 @@ commands.
See also B<--joblog>, B<--resume>.
=item B<--retry-failed> (alpha testing)
=item B<--retry-failed> (beta testing)
Retry all failed jobs in joblog. By reading B<--joblog> GNU
B<parallel> will figure out the failed jobs and run those again.
@ -1736,7 +1730,7 @@ Does not run the command but quotes it. Useful for making quoted
composed commands for GNU B<parallel>.
=item B<--shuf> (beta testing)
=item B<--shuf>
Shuffle jobs. When having multiple input sources it is hard to
randomize jobs. --shuf will generate all jobs, and shuffle them before
@ -1750,7 +1744,7 @@ Do not use the first line of input (used by GNU B<parallel> itself
when called with B<--shebang>).
=item B<--ssh> I<sshcommand> (alpha testing)
=item B<--ssh> I<sshcommand> (beta testing)
GNU B<parallel> defaults to using B<ssh> for remote access. This can
be overridden with B<--ssh>. It can also be set on a per server
@ -1917,7 +1911,7 @@ I<str> and TAB (\t). I<str> can contain replacement strings such as
B<--tagstring> is ignored when using B<-u>, B<--onall>, and B<--nonall>.
=item B<--termseq> I<sequence> (alpha testing)
=item B<--termseq> I<sequence> (beta testing)
Termination sequence. When a job is killed due to B<--timeout>,
B<--memfree>, B<--halt>, or abnormal termination of GNU B<parallel>,
@ -1945,7 +1939,7 @@ Use B<tmux> for output. Start a B<tmux> session and run each job in a
window in that session. No other output will be produced.
=item B<--timeout> I<val> (alpha testing)
=item B<--timeout> I<val> (beta testing)
Time out for command. If the command runs for longer than I<val>
seconds it will get killed with SIGTERM, followed by SIGTERM 200 ms
@ -3543,7 +3537,7 @@ $SHELL. If undefined use:
=back
=item $PARALLEL_SSH (alpha testing)
=item $PARALLEL_SSH (beta testing)
GNU B<parallel> defaults to using B<ssh> for remote access. This can
be overridden with $PARALLEL_SSH, which again can be overridden with

View file

@ -91,9 +91,9 @@ bit tricky because there should be no files to clean up if GNU
B<parallel> is killed by a power outage.
GNU B<parallel> first selects a compress program. If the user has not
selected one, the first of these that are in $PATH is used: B<lzop
pigz pxz gzip plzip pbzip2 lzma xz lzip bzip2>. They are sorted by
speed on a 8 core machine.
selected one, the first of these that are in $PATH is used: B<lz4 pigz
lzop plzip pbzip2 pxz gzip lzma xz bzip2 lzip>. They are sorted by
speed on a 16 core machine.
Schematically the setup is as follows:
@ -241,7 +241,6 @@ are added to the title to force it to be outside the limits.
You can map the bad limits using:
perl -e 'sub r { int(rand(shift)).($_[0] && "\t".r(@_)) } print map { r(@ARGV)."\n" } 1..10000' 1600 1500 90 |
perl -ane '$F[0]+$F[1]+$F[2] < 2037 and print ' |
parallel --colsep '\t' --tagstring '{1}\t{2}\t{3}' tmux -S /tmp/p{%}-'{=3 $_="O"x$_ =}' \
@ -491,7 +490,6 @@ You can work around that by appending '&& true':
When run in a Perl script using B<system> with parallel as the first
string:
#!/usr/bin/perl
system("parallel",'setenv a {}; echo $a',":::",2);

View file

@ -51,6 +51,8 @@ parallel: Error: -U has been retired. Use --er.
parallel: Error: -W has been retired. Use --wd.
parallel: Error: -Y has been retired. Use --shebang.
parallel: Error: -H has been retired. Use --halt.
parallel: Error: --ctrlc has been retired.
parallel: Error: --noctrlc has been retired.
parallel: Error: --tollef has been retired. Use -u -q --arg-sep -- and --load for -l.
stdout parallel -g
parallel: Error: -g has been retired. Use --group.
@ -60,6 +62,8 @@ parallel: Error: -U has been retired. Use --er.
parallel: Error: -W has been retired. Use --wd.
parallel: Error: -Y has been retired. Use --shebang.
parallel: Error: -H has been retired. Use --halt.
parallel: Error: --ctrlc has been retired.
parallel: Error: --noctrlc has been retired.
parallel: Error: --tollef has been retired. Use -u -q --arg-sep -- and --load for -l.
stdout parallel -H 1
parallel: Error: -g has been retired. Use --group.
@ -69,6 +73,8 @@ parallel: Error: -U has been retired. Use --er.
parallel: Error: -W has been retired. Use --wd.
parallel: Error: -Y has been retired. Use --shebang.
parallel: Error: -H has been retired. Use --halt.
parallel: Error: --ctrlc has been retired.
parallel: Error: --noctrlc has been retired.
parallel: Error: --tollef has been retired. Use -u -q --arg-sep -- and --load for -l.
stdout parallel -T
parallel: Error: -g has been retired. Use --group.
@ -78,6 +84,8 @@ parallel: Error: -U has been retired. Use --er.
parallel: Error: -W has been retired. Use --wd.
parallel: Error: -Y has been retired. Use --shebang.
parallel: Error: -H has been retired. Use --halt.
parallel: Error: --ctrlc has been retired.
parallel: Error: --noctrlc has been retired.
parallel: Error: --tollef has been retired. Use -u -q --arg-sep -- and --load for -l.
stdout parallel -U foo
parallel: Error: -g has been retired. Use --group.
@ -87,6 +95,8 @@ parallel: Error: -U has been retired. Use --er.
parallel: Error: -W has been retired. Use --wd.
parallel: Error: -Y has been retired. Use --shebang.
parallel: Error: -H has been retired. Use --halt.
parallel: Error: --ctrlc has been retired.
parallel: Error: --noctrlc has been retired.
parallel: Error: --tollef has been retired. Use -u -q --arg-sep -- and --load for -l.
stdout parallel -W foo
parallel: Error: -g has been retired. Use --group.
@ -96,6 +106,8 @@ parallel: Error: -U has been retired. Use --er.
parallel: Error: -W has been retired. Use --wd.
parallel: Error: -Y has been retired. Use --shebang.
parallel: Error: -H has been retired. Use --halt.
parallel: Error: --ctrlc has been retired.
parallel: Error: --noctrlc has been retired.
parallel: Error: --tollef has been retired. Use -u -q --arg-sep -- and --load for -l.
stdout parallel -Y
parallel: Error: -g has been retired. Use --group.
@ -105,6 +117,8 @@ parallel: Error: -U has been retired. Use --er.
parallel: Error: -W has been retired. Use --wd.
parallel: Error: -Y has been retired. Use --shebang.
parallel: Error: -H has been retired. Use --halt.
parallel: Error: --ctrlc has been retired.
parallel: Error: --noctrlc has been retired.
parallel: Error: --tollef has been retired. Use -u -q --arg-sep -- and --load for -l.
echo '### Test --joblog followed by --resume --joblog'
### Test --joblog followed by --resume --joblog

View file

@ -6,6 +6,8 @@ parallel: Error: -U has been retired. Use --er.
parallel: Error: -W has been retired. Use --wd.
parallel: Error: -Y has been retired. Use --shebang.
parallel: Error: -H has been retired. Use --halt.
parallel: Error: --ctrlc has been retired.
parallel: Error: --noctrlc has been retired.
parallel: Error: --tollef has been retired. Use -u -q --arg-sep -- and --load for -l.
parallel: Error: -g has been retired. Use --group.
parallel: Error: -B has been retired. Use --bf.
@ -14,6 +16,8 @@ parallel: Error: -U has been retired. Use --er.
parallel: Error: -W has been retired. Use --wd.
parallel: Error: -Y has been retired. Use --shebang.
parallel: Error: -H has been retired. Use --halt.
parallel: Error: --ctrlc has been retired.
parallel: Error: --noctrlc has been retired.
parallel: Error: --tollef has been retired. Use -u -q --arg-sep -- and --load for -l.
parallel: Error: -g has been retired. Use --group.
parallel: Error: -B has been retired. Use --bf.
@ -22,6 +26,8 @@ parallel: Error: -U has been retired. Use --er.
parallel: Error: -W has been retired. Use --wd.
parallel: Error: -Y has been retired. Use --shebang.
parallel: Error: -H has been retired. Use --halt.
parallel: Error: --ctrlc has been retired.
parallel: Error: --noctrlc has been retired.
parallel: Error: --tollef has been retired. Use -u -q --arg-sep -- and --load for -l.
parallel: Error: -g has been retired. Use --group.
parallel: Error: -B has been retired. Use --bf.
@ -30,5 +36,7 @@ parallel: Error: -U has been retired. Use --er.
parallel: Error: -W has been retired. Use --wd.
parallel: Error: -Y has been retired. Use --shebang.
parallel: Error: -H has been retired. Use --halt.
parallel: Error: --ctrlc has been retired.
parallel: Error: --noctrlc has been retired.
parallel: Error: --tollef has been retired. Use -u -q --arg-sep -- and --load for -l.
<<< End test global config - must run alone so the global config does not confuse others

View file

@ -115,6 +115,8 @@ one 1
echo '### Test --tollef'
### Test --tollef
stdout parallel -k --tollef echo -- 1 2 3 ::: a b c | sort
parallel: Error: --ctrlc has been retired.
parallel: Error: --noctrlc has been retired.
parallel: Error: --tollef has been retired. Use -u -q --arg-sep -- and --load for -l.
parallel: Error: -B has been retired. Use --bf.
parallel: Error: -H has been retired. Use --halt.
@ -133,6 +135,8 @@ parallel: Error: -U has been retired. Use --er.
parallel: Error: -W has been retired. Use --wd.
parallel: Error: -Y has been retired. Use --shebang.
parallel: Error: -H has been retired. Use --halt.
parallel: Error: --ctrlc has been retired.
parallel: Error: --noctrlc has been retired.
parallel: Error: --tollef has been retired. Use -u -q --arg-sep -- and --load for -l.
echo '### Test --gnu'
### Test --gnu

View file

@ -157,8 +157,7 @@ parallel: Warning: A record was longer than 5. Increasing to --blocksize 8.
echo '### Test 10M records with too big block'; ( echo start; seq 1 1 | parallel -uj1 cat /tmp/blocktest\;true; echo end; echo start; seq 1 1 | parallel -uj1 cat /tmp/blocktest\;true; echo end; echo start; seq 1 1 | parallel -uj1 cat /tmp/blocktest\;true; echo end; ) | stdout parallel -k --block 10M -j2 --pipe --recstart 'start\n' wc -c | egrep -v '^0$'
### Test 10M records with too big block
6888906
6888906
6888906
13777812
echo '### Test --rrs -N1 --recend single'; echo 12a34a45a6 | parallel -k --pipe --recend a -N1 --rrs 'echo -n "$PARALLEL_SEQ>"; cat; echo; sleep 0.1'
### Test --rrs -N1 --recend single
1>12
@ -180,18 +179,15 @@ echo '### Test --rrs -N1 --recend single'; echo 12a34b45a6 | parallel -k --p
echo '### Test --rrs --recend single'; echo 12a34a45a6 | parallel -k --pipe --recend a --rrs 'echo -n "$PARALLEL_SEQ>"; cat; echo; sleep 0.1'
### Test --rrs --recend single
1>123445
2>6
1>1234456
echo '### Test --rrs --regexp --recend alternate'; echo 12a34b45a6 | parallel -k --pipe --regexp --recend 'a|b' --rrs 'echo -n "$PARALLEL_SEQ>"; cat; echo; sleep 0.1'
### Test --rrs --regexp --recend alternate
1>123445
2>6
1>1234456
echo '### Test --rrs --recend single'; echo 12a34b45a6 | parallel -k --pipe --recend 'b' --rrs 'echo -n "$PARALLEL_SEQ>"; cat; echo; sleep 0.1'
### Test --rrs --recend single
1>12a34
2>45a6
1>12a3445a6
echo '### Test -N even'; seq 1 10 | parallel -j2 -k -N 2 --pipe cat";echo ole;sleep 0.\$PARALLEL_SEQ"
### Test -N even
@ -251,7 +247,7 @@ ole
ole
echo '### Test --recstart + --recend'; cat /tmp/blocktest | parallel --block 1M -k --recstart 44 --recend "44" -j10 --pipe sort -n |md5sum
### Test --recstart + --recend
3c20e43c58152da30261c5827a1f9084 -
fc06ad6705d362075fcbc6de43315f8f -
echo '### Race condition bug - 1 - would block'; seq 1 80 | nice parallel -j0 'seq 1 10| parallel --block 1 --recend "" --pipe cat;true' >/dev/null
### Race condition bug - 1 - would block
echo '### Race condition bug - 2 - would block'; seq 1 100 | nice parallel -j100 --block 1 --recend "" --pipe cat >/dev/null