coz/benchmarks/pbzip2/AUTHORS
Charlie Curtsinger d1c592b097 Moving benchmarks to properly named dir
--HG--
rename : tests/Makefile => benchmarks/Makefile
rename : tests/experiment.py => benchmarks/experiment.py
rename : tests/histogram/Makefile => benchmarks/histogram/Makefile
rename : tests/histogram/histogram-pthread.c => benchmarks/histogram/histogram-pthread.c
rename : tests/histogram/stddefines.h => benchmarks/histogram/stddefines.h
rename : tests/kmeans/Makefile => benchmarks/kmeans/Makefile
rename : tests/kmeans/kmeans-pthread.c => benchmarks/kmeans/kmeans-pthread.c
rename : tests/kmeans/stddefines.h => benchmarks/kmeans/stddefines.h
rename : tests/linear_regression/Makefile => benchmarks/linear_regression/Makefile
rename : tests/linear_regression/linear_regression-pthread.c => benchmarks/linear_regression/linear_regression-pthread.c
rename : tests/linear_regression/stddefines.h => benchmarks/linear_regression/stddefines.h
rename : tests/matrix_multiply/Makefile => benchmarks/matrix_multiply/Makefile
rename : tests/matrix_multiply/map_reduce.h => benchmarks/matrix_multiply/map_reduce.h
rename : tests/matrix_multiply/matrix_multiply-pthread.c => benchmarks/matrix_multiply/matrix_multiply-pthread.c
rename : tests/matrix_multiply/stddefines.h => benchmarks/matrix_multiply/stddefines.h
rename : tests/pbzip2/AUTHORS => benchmarks/pbzip2/AUTHORS
rename : tests/pbzip2/BZ2StreamScanner.cpp => benchmarks/pbzip2/BZ2StreamScanner.cpp
rename : tests/pbzip2/BZ2StreamScanner.h => benchmarks/pbzip2/BZ2StreamScanner.h
rename : tests/pbzip2/COPYING => benchmarks/pbzip2/COPYING
rename : tests/pbzip2/ErrorContext.cpp => benchmarks/pbzip2/ErrorContext.cpp
rename : tests/pbzip2/ErrorContext.h => benchmarks/pbzip2/ErrorContext.h
rename : tests/pbzip2/Makefile => benchmarks/pbzip2/Makefile
rename : tests/pbzip2/README => benchmarks/pbzip2/README
rename : tests/pbzip2/pbzip2.cpp => benchmarks/pbzip2/pbzip2.cpp
rename : tests/pbzip2/pbzip2.h => benchmarks/pbzip2/pbzip2.h
rename : tests/pca/Makefile => benchmarks/pca/Makefile
rename : tests/pca/pca-pthread.c => benchmarks/pca/pca-pthread.c
rename : tests/pca/stddefines.h => benchmarks/pca/stddefines.h
rename : tests/producer_consumer/Makefile => benchmarks/producer_consumer/Makefile
rename : tests/producer_consumer/producer_consumer.cpp => benchmarks/producer_consumer/producer_consumer.cpp
rename : tests/string_match/Makefile => benchmarks/string_match/Makefile
rename : tests/string_match/map_reduce.h => benchmarks/string_match/map_reduce.h
rename : tests/string_match/stddefines.h => benchmarks/string_match/stddefines.h
rename : tests/string_match/string_match-pthread.c => benchmarks/string_match/string_match-pthread.c
rename : tests/unbalanced/Makefile => benchmarks/unbalanced/Makefile
rename : tests/unbalanced/unbalanced.cpp => benchmarks/unbalanced/unbalanced.cpp
rename : tests/word_count/Makefile => benchmarks/word_count/Makefile
rename : tests/word_count/sort-pthread.c => benchmarks/word_count/sort-pthread.c
rename : tests/word_count/sort-pthread.h => benchmarks/word_count/sort-pthread.h
rename : tests/word_count/stddefines.h => benchmarks/word_count/stddefines.h
rename : tests/word_count/word_count-pthread.c => benchmarks/word_count/word_count-pthread.c
rename : tests/work_queue/Makefile => benchmarks/work_queue/Makefile
rename : tests/work_queue/work_queue.cpp => benchmarks/work_queue/work_queue.cpp
2014-07-07 11:33:04 -04:00

220 lines
14 KiB
Plaintext

Authors of pbzip2
-----------------
Jeff Gilchrist (http://gilchrist.ca/jeff/)
- Using modified producer/consumer threading code from
Andrae Muys <andrae@humbug.org.au.au>
- Uses libbzip2 by Julian Seward (http://www.bzip.org/)
- Major contributions by Yavor Nikolov <nikolov.javor+pbzip2@gmail.com>
Contributions
-------------
Bryan Stillwell <bryan@bokeoa.com> - code cleanup, RPM spec, and prep work for inclusion in Fedora Extras
Dru Lemley [http://lemley.net/smp.html] - help with large file support
Kir Kolyshkin <kir@sacred.ru> - autodetection for # of CPUs
Joergen Ramskov <joergen@ramskov.org> - initial version of man page
Peter Cordes <peter@cordes.ca> - code cleanup
Kurt Fitzner <kfitzner@excelcia.org> - port to Windows compilers and decompression throttling
Oliver Falk <oliver@linux-kernel.at> - RPM spec update
Jindrich Novy <jnovy@redhat.com> - code cleanup and bug fixes
Benjamin Reed <ranger@befunk.com> - autodetection for # of CPUs in OSX
Chris Dearman <chris@mips.com> - fixed pthreads race condition that led to pthread resources issues when processing large numbers of files and random segfaults
Richard Russon <ntfs@flatcap.org> - help fix decompression bug
Paul Pluzhnikov <paul@parasoft.com> - fixed minor memory leak
Aníbal Monsalve Salazar <anibal@debian.org> - creates and maintains Debian packages
Steve Christensen - creates and maintains Solaris packages (sunfreeware.com)
Alessio Cervellin - creates and maintains Solaris packages (blastwave.org)
Ying-Chieh Liao <ijliao@FreeBSD.org> - created the FreeBSD port
Andrew Pantyukhin <sat@FreeBSD.org> - maintains the FreeBSD ports and willing to resolve any FreeBSD-related problems
Roland Illig <rillig@NetBSD.org> - creates and maintains NetBSD packages
Matt Turner <mattst88@gmail.com> - code cleanup
Álvaro Reguly <alvaro@reguly.com> - RPM spec update to support SUSE Linux
Ivan Voras <ivoras@freebsd.org> - support for stdin and pipes during compression and CPU detect changes
John Dalton <john@johndalton.info> - code cleanup and bug fix for stdin support
Rene Georgi <rene.georgi@online.de> - code and Makefile cleanup, support for direct decompress and bzcat
René Rhéaume & Jeroen Roovers <jer@xs4all.nl> - patch to support uclibc's lack of a getloadavg function
Reinhard Schiedermeier <rs@cs.hm.edu> - support for tar --use-compress-prog=pbzip2
Elbert Pol - creates and maintains OS/2 packages
Nico Vrouwe <nico@gojelly.com> - support for CPU detection on Win32
Eduardo Terol <EduardoTerol [at] gmx {dot} net> - creates and maintains Windows 32bit package
Nikita Zhuk <nikita@zhuk.fi> - creates and maintains Mac OS X Automator action and workflow/service
Jari Aalto <jari.aalto@cante.net> - added long options to man page and -h output, added --loadavg, --read long options
Scott Emery <emery@sgi.com> - ignore fwrite return and pass chown errors in writeFileMetaData if effective uid root
Steven Chamberlain <steven@pyro.eu.org> - code to support throttling compression to prevent memory exhaustion with slow output pipe
Yavor Nikolov <nikolov.javor+pbzip2@gmail.com> - code to support throttling compression to
prevent memory exhaustion with slow output, cleanup of debug output
- fixed infinite loop on when fileWriter fails to create output file
at start
- allDone renamed to producerDone and added mutex synchronized-access
- Changed fileWriter loop exit condition: now protected from
simultaneous access
- Mutex initialization/disposal refactored
- Throttling loops using thread condition wait
- Fatal error handling refactored
- Removed allDone checks used to signal error (now handled by
handle_error function)
- Prevented dangling threads on switch from Multi to Single threaded
- Inline hint added on a few functions
- Some additional error_handlers placed instead of returns (kill any
dangling threads)
- Cleanup and termination changed in attempt to prevent
signal-handling issues in mulit-threaded environment (still some
problems are observed on signalling e.g. with Ctrl+C)
- Signal-handling in child threads disabled. The goal is to have
single thread only which accepts signals
- Using abort instead of exit on error termination
- Fixed command-line parsing problem (e.g. -m100 -p12 -> 120 CPUs)
(Problem was unterminated strings afer strncpy).
- Signal handlers setup refactored to separate function and
switched from signal to sigaction as per POSIX recommendations
- Added mutexes unlocking before error-termination.
- Termination flag introduced (terminateFlag) to indicate abrupt
termination and facilitate thread finishing in error conditon.
- fileWriter: error_handler instead of exit on write error.
- percentComplete progress printed only if changed.
- signal handling redesigned: using sigwait in separate thread.
- Makefile: -D_POSIX_PTHREAD_SEMANTICS (used in Solaris).
- CHAR_BIT instead of 8 used in a warning message.
- SIGUSR1 signal handling added and used to terminate signal handling
thread. (Resolved issue with pthread_cancel on Windows-Cygwin)
- Fixed wrongly issued exit code 1 instead of 0.
- Corrected some error messages and added a few new ones at signal and
terminator threads join.
- Added support for thread stack size customization (-S# option)
Needs USE_STACKSIZE_CUSTOMIZATION to be defined to enable that option
- Added define of PTHREAD_STACK_MIN if such is not available in
standard headers.
- OutputBuffer usage redesigned as fixed-size circular buffer. Adding
new elements to it refactored as separate function.
- OutputBuffer resizing removed from producer_decompress since now
buffer should be with fixed size.
- Fixed debug print of OutputBuffer now referencing OutputBuffer in
old-style absolute index (in fileWriter and others).
- memstr function implementation simplified (delegated to standard
library function which is doing the same more efficiently).
- Changed some variables from int to size_t to get rid of compiler
warnings (signed + unsigned expressions).
- Sequential processing of input file/pipe/redirect implemented (capsulated
as separate class: BZ2StreamScanner)
- Parallel decompression enabled (now possible with the sequential in)
- Refactored declarations moved to separate header file (pbzip2.h) to
make global definitions available to other source modules
- Progress reporting modified since we don't have number of
blocks up-front with sequential input read (now based on bytes). fileSize
moved as InFileSize global variable for that purpose
- Progress computation in fileWriter moved to QuietMode != 0
(not needed to do it if we won't print it)
- disposeMemory helper function implemented to ease memory disposal
- Processing functions of threads declared as extern "C" since pthread_t
requires plain "C" calling convention instead of the default "C++"
- pthread_mutex_{lock|unlock} replaced with safe_mutex_{lock|unlock}
where appropriate (to prevent from issues like out of sys mutexes)
- Makefile modified to include the new source files for BZ2StreamScanner
- Makefile refined (library flags specified in LDFLAGS variable)
- Makefile.solaris.sunstudio included as example makefile for Solaris
and SunStudio 12 C++ compiler
- bz2HeaderZero in main initialized to value 0x90 > 127 which is in general
out of char type range. Changed to unsigned along with tmpBuff to avoid
some compiler(e.g. c++0x)/runtime warnings/errors.
- Some thread conditions signalling added on termination requested to ease
termination of blocked on conditions threads
- Other pthread_* calls (signal, wait) migrated to safe_* wrappers to
handle error return codes (and simplify code where already handled)
- Timed pthread cond waits refactored to separate function and moved to
debug sections only; non-timed wait used in non-debug mode. Signalling
consitions to wake threads waiting on these conditions guaranteed.
- memstr function templetized to allow working with other data types but
not only char (e.g. unsigned char)
- safe_cond_broadcast implemented and additional signalling added at
fileWriter end to prevent consumers blocking at end.
- Signal error when the input file doesn't contain any bzip2 headers.
- Fixed problems with not-handling zero-file length special header on compression
and decompression.
- Signalling error on stdin decompression when file doesn't start with
correct bzip2 magic header.
- Implemented outputBufferInit(size_t size) utility function for output
buffer initialization/resetting.
- Plain C headers moved to extern "C" section.
- Modified file-names handling to avoid issues with file-sizes > 2040
- Fixed out of array pointer for OutFilename in strncasecmp calls
- A few other minor modifications
- consumer_decompress using low-level API now to improve performance of
long bzip2 streams
- Fixed issue in safe_cond_timed_wait which caused segmentation fault
when compiled in DEBUG mode
- Handle decompression of very long bz2 streams incrementally instead of
loading whole streams in memory at once
- Progress calculation changed: fixed issue when large file support is
disabled and enabled monitoring of segmented long bzip2 streams
- Fixed issue with Sun Studio compiler - required explicit declaration
of static const members in .cpp.
- consumer_decompress throttling loosed a bit to prevent potential
deadlock/infinite loop in certain situations. (Addition to all-empty-block
tails in OutputBuffer is non-blocking now).
- fixed error message for block size range (max size was wrong)
- consumer_decompress: fixed bug which caused hang while decompressing
prematurely truncated bzip2 stream.
- modified fileWriter to prevent from throttling when output buffers are full
(condition signalling added when block is ready to wake up sleeping writer early)
- Debug print bug fixed in queue::remove.
- Debuging and error handling improvements and refactoring.
- Fixed hang on decompress of some truncated archives (bug #590225).
- Implemented --ignore-trailing-garbage feature (bug #594868)
- Fixed hang on decompress of some truncated archives (bug #590225)
- Fixed hang on decompress with --ignore-trailing-garbage=1 and higher
numCPU (e.g. > 2) (bug #740502)
- Default extension on decompress of .tbz2 changed to .tar for
bzip2 compatibility (bug #743639)
- Print trailing garbage errors even when in quiet mode (bug #743635)
- Fixed hang on decompress with --ignore-trailing-garbage=1 and higher
numCPU (e.g. > 2) (bug #740502)
- Default extension on decompress of .tbz2 changed to .tar for
bzip2 compatibility (bug #743639)
- Print trailing garbage errors even when in quiet mode (bug #743635)
- Fixed excessive output permissions while compress/decompress
is in progress (bug #807536)
- Prevent deletion of input files on error (bug #874543)
- Add more detailed kernel error messages - inspired by Gordon's patch (bug #874605)
- Error-handling improvements - mainly for multi-archive scenarios (bug #883782)
David James <davidjames at chromium.org> - provided patch to fix deadlock due to unsynchronized broadcast (bug #876686)
Gordon - provided patch for improving I/O error messages (bug #874605)
Special thanks for suggestions and testing
-------------------------------------------
Phillippe Welsh, James Terhune, Dru Lemley, Bryan Stillwell, George Chalissery, Kir Kolyshkin, Madhu Kangara, Mike Furr, Joergen Ramskov, Kurt Fitzner, Peter Cordes, Oliver Falk, Jindrich Novy, Benjamin Reed, Chris Dearman, Richard Russon, Aníbal Monsalve Salazar, Jim Leonard, Paul Pluzhniko, Robert Archard, Coran Fisher, Ken Takusagawa, David Pyke, Matt Turner, Damien Ancelin, Álvaro Reguly, Ivan Voras, John Dalton, Sami Liedes, Rene Georgi, René Rhéaume, Jeroen Roovers, Reinhard Schiedermeier, Kari Pahula, Elbert Pol, Nico Vrouwe, Eduardo Terol, Samuel Thibault, Michael Fuereder, Jari Aalto, Scott Emery, Steven Chamberlain, Yavor Nikolov, Nikita Zhuk, Joao Seabra, Conn Clark, Mark A. Haun, Tim Bielawa, Michal Gorny, Mikolaj Habdank, Christian Kujau, Marc-Christian Petersen, Piero Ottuzzi, Ephraim Ofir, Laszlo Ersek, Dima Tisnek.