Older versions - par2cmdline 0.4 with Intel Threading Building Blocks
-
This is the standard CPU-only version and is considered stable. An experimental CPU/GPU version is available further down this page.
Download: [316kB] Source code (GPLv2).
Download: [180kB] FreeBSD 32-bit i386/ia32 binary (command line only).
Download: [180kB] FreeBSD 64-bit x86_64 binary (command line only).
Download: [188kB] GNU/Linux 32-bit i386/ia32 binary for kernel 2.6 / GCC 4 (command line only).
Download: [188kB] GNU/Linux 64-bit x86_64 binary for kernel 2.6 / GCC 4 (command line only).
Download: [200kB] 32-bit binary for Windows XP/Vista (command line only). Note: this version is untested under Windows 2000 - it may work, it may not.
Download: [228kB] 64-bit binary for 64-bit Windows XP or 64-bit Windows Vista (command line only). Warning: a 64-bit capable CPU is not sufficient to use this binary. You must also have a 64-bit version of Windows installed.
The changes in the 20090203 version are:
- fixed a bug which affected the Linux and Mac versions whereby repairs would fail if the file being repaired was short or had one or two bad blocks (because the async write to the file's last byte was failing).
- on Windows, the program now stores directory paths in par2 files using '/' as the path separator instead of '\' (as per the Par 2.0 specification document). Note: directory paths are stored only when the '-d' switch is used.
- merged the sources from the CPU-only and CPU/GPU versions so that both versions now build from the same set of source files using different 'configure' options (Mac, Linux, FreeBSD) or project files (Windows). See the source distribution's README_FIRST.txt for building instructions.
-
This is the standard CPU-only version and is considered stable. An experimental CPU/GPU version is available further down this page.
This version has a bug which causes repairs to fail. Do not use it.
Download: [296kB] Source code (GPLv2).
Download: [180kB] FreeBSD 32-bit i386/ia32 binary (command line only).
Download: [176kB] FreeBSD 64-bit x86_64 binary (command line only).
Download: [196kB] GNU/Linux 32-bit i386/ia32 binary for kernel 2.6 / GCC 4 (command line only).
Download: [196kB] GNU/Linux 64-bit x86_64 binary for kernel 2.6 / GCC 4 (command line only).
Download: [196kB] 32-bit binary for Windows XP/Vista (command line only). Note: this version is untested under Windows 2000 - it may work, it may not.
Download: [224kB] 64-bit binary for 64-bit Windows XP or 64-bit Windows Vista (command line only). Warning: a 64-bit capable CPU is not sufficient to use this binary. You must also have a 64-bit version of Windows installed.
The changes in the 20081005 version are:
- asynchronous reading of a large number of small files would sometimes not complete which caused the program to hang. Fixed by reverting to synchronous reading (most of the benefit of async I/O is from async writing so this change does not affect overall performance).
- some operating systems have limits on the number of open files which was easily exceeded when a large number of small files are being processed for par2 creation or for repair. Fixed by closing the source files as soon as they are no longer needed to be opened (which is determined by counting how many data blocks the file provides for creation/repair).
- the 64-bit Windows binary is built using the tbb20_20080408oss release of the TBB; the Mac, GNU/Linux, FreeBSD and 32-bit Windows binaries are built using the tbb21_009oss release of the TBB. The tbb21_009oss release does not support the VC7.1 runtime libraries on Win64 so it was necessary to fallback to a previous version for the Windows 64-bit binary.
- the pre-built FreeBSD binaries are built to only use synchronous I/O (to avoid a crash).
-
This is the experimental CPU/GPU version. It may be useless to you.
This version has a bug which causes repairs to fail. Do not use it.
Download: [312kB] Source code (GPLv2).
Download: [192kB] Mac OS X 10.5 32-bit Intel binary (command line only).
Download: [208kB] Windows XP 32-bit binary (command line only).
About this NVIDIA CUDA version
There is no guarantee that this program will perform correctly. It may not create or repair data files correctly due to unknown bugs in the program code. Even though it has been tested on test data and correctly worked on those files, it may not work on your files since the GPU program is new and may have unknown bugs in it. Caveat emptor.
This version of the par2 program has been modified to utilise NVIDIA CUDA 2.0 technology, which enables it to process data using the processor (GPU) on certain video cards. Most of the processing is still performed by the computer's CPU but some will be offloaded to the video card's GPU. The amount of offloading depends on how much speed/power the GPU has. After processing all of the data for par2 creation or par2 repair, the program will display, as a percentage, how much of the processing was done by the GPU (or whether the GPU was not available for use).
There are two factors which determine how much processing the GPU can provide:
- the amount of video card memory. Some of the memory will be used for the video display, and this is partly determined by the operating system. For example, if the OS/video-driver performs drawing acceleration using extra video memory, less memory is available for CUDA use. For example, on a 128MB video card running Mac OS X 10.5, only about 22MB was available for use by CUDA applications. If the parity data totals more than 22MB, only a portion of that data can be processed by the GPU. Of course this is only an example and your system will probably have a different amount of memory available for CUDA use. Because of OS use, it is recommended that for Mac OS X, a video card with at least 256MB of video memory is recommended. For Windows XP, a video card of at least 128MB is recommended, and for Windows Vista, at least 256MB is recommended.
- the video card's speed, which depends on both the GPU's speed and the video memory's bandwidth. For the GPU, its speed depends on both its clock rate and the number of stream processors it has. For example, a GeForce 8600 GT has 32 stream processors compared to a 9800 GTX which has 128 stream processors. Memory bandwidth depends on both how wide the data path is between the GPU and its memory (for example, a 64-bit wide data bus will transfer data half as quickly as a 128-bit wide data bus), as well as the clock rate of the video memory - the higher the clock rate, the faster the GPU can move data from/to the video memory and this in turn affects how fast it processes data.
Hardware requirements:
Requires a "Compute Capability 1.1" device, which is any 200 series GeForce card, any 9 series GeForce card, and most 8 series GeForce card EXCEPT for the first generation cards such as the 8800 Ultra, 8800 GTX, 8800 GTS, and certain Tesla and Quadro cards: search the web for "Compute Capability 1.0" devices. 1.0-only devices are not capable of being used. Cards such as the 8400, 8500, 8600, 8800 GS, 8800 GT, 8800M GTS (mobile), and 8800M GTX (mobile) are capable of being used.
Mobile variants will also work, for example, 8600 refers to both the desktop and mobile versions such as 8600 GT (desktop) and 8600M GT (mobile).
Software requirements:
The CUDA runtime/toolkit may need to be downloaded and installed by you because NVIDIA do not permit redistribution of it with third party executables. If you need to install the runtime, please search for "NVIDIA CUDA toolkit" in your favourite search engine.
On Windows, it appears that the CUDA runtime/toolkit ships with recent video card driver software from NVIDIA. You can verify this by checking for it at this path: "C:\Windows\system32\nvcuda.dll".
On Mac OS X 10.5, check for the driver at this path: "/System/Library/Extensions/CUDA.kext", and for the runtime library at this path: "/usr/local/cuda/lib/libcudart.dylib". Mac OS X users will probably need to download and install the CUDA runtime/toolkit. You should be aware that the default install options for the CUDA runtime/toolkit does not install the required CUDA driver, so it needs to be installed by performing a custom install of the runtime/toolkit: be sure to check the checkbox for "CUDA.kext".
Limitations:
- only available as a 32-bit executable for Windows XP and later, and Intel Mac OS X 10.5.2 and later. Due to time constraints, other systems such as GNU/Linux are not available at this time. You are most welcome to modify/build/test it for other systems if you feel up to the challenge :)
- "low end" GPUs are "slow", ie, they do not contribute to much of the processing. For example, to create 128MB (256 blocks of 524288 bytes) of parity data on a 128MB 8600M GT in a Core 2 Duo 2.2GHz machine, about 2% of the workload was offloaded to the GPU. For the same 128MB of parity data, a 256MB 8600M GT in a Core 2 Duo 2.4GHz machine offloaded about 5% of the workload to the GPU (mainly because having more memory allowed more data to be processed on the video card). It is expected that "high end" video cards will have even higher GPU offloading, but without access to such a video card (yes, some of us can't splurge on that top-of-the-line video card!), it's mere speculation as to what sort of performance will occur. :) Maybe someone will send an email with some answers :)
- sometimes the CUDA runtime reports little or no available memory on the video card for use by programs, which will result in this version not being able to use the GPU for processing. This problem is probably related to video display acceleration by the OS, in which case, closing windows and/or applications will probably free up video memory. It may, however, require a reboot to reset the video card (you should do this only as a last resort).
See the "--- About this NVIDIA CUDA version ---" section in the distribution's README_FIRST.txt file for more information such as source code building instructions/requirements.
-
Download: [296KB] Source code.
Download: [176KB] FreeBSD 32-bit i386/ia32 binary (command line only).
Download: [176KB] FreeBSD 64-bit x86_64 binary (command line only).
Download: [196KB] GNU/Linux 32-bit i386/ia32 binary for kernel 2.6 / GCC 4 (command line only).
Download: [196KB] GNU/Linux 64-bit x86_64 binary for kernel 2.6 / GCC 4 (command line only).
Download: [196KB] 32-bit binary for Windows XP/Vista (command line only). Note: this version is untested under Windows 2000 - it may work, it may not.
Download: [224KB] 64-bit binary for 64-bit Windows XP or 64-bit Windows Vista (command line only). Warning: a 64-bit capable CPU is not sufficient to use this binary. You must also have a 64-bit version of Windows installed.
The changes in the 20080919 version are:
- added more information to a few of the error messages to make it easier to specify block counts, etc. when using the -d option.
- redundancy can now be specified using floating point values instead of integral values, eg, 8.5% instead of 8% or 9%.
- added the -0 option to create dummy par2 files. This was done so that the actual size of the par2 files can be quickly determined. For example, suppose you wish to fill up a CD-R's or DVD-R's remaining empty space with par2 files of the files filling up the disc, then by using the -0 option, you can quickly work out whether the par2 files will fit and by how much, which in turn allows you to maximize the use of the remaining empty space (you would alter the block count number and/or size so that the optimal number of blocks are created to fill up the remaining space). To determine how much CD-R or DVD-R space you have to fill, find out how many blocks your blank disc has (using a burning program such as ImgBurn [Windows]) and how many blocks your data would occupy when burned (using an image creation program such as mkisofs [all platforms] which has a handy -print-size option). ImgBurn [Windows] can also tell you how many blocks you have for filling if you use its 'build' command. WARNING: be careful when using this command that you don't burn the dummy par2 files that it creates because they don't have any valid data in them. Remember, they are created only to determine the actual size of the real par2 files that would be created if you had not used the -0 option.
- added MMX-based code from Paul Houle's phpar2_12src version of par2cmdline-0.4. As a result, the repair and creation of par2 files using x86 or x86_64 MMX code is about 20% faster than the scalar version (the scalar version is used if your computer is not MMX capable). MMX CPUs: Intel Pentium II and later, AMD Athlon64 and later.
- added asynchronous I/O for platforms that support such I/O: Mac OS X, Windows, GNU/Linux. This results in a small (~1-5%) improvement in throughput, especially for repairing. Unfortunately, using async I/O causes a crash under FreeBSD, so the pre-built binaries are built to only use synchronous I/O.
- first release of 32-bit and 64-bit PowerPC binaries for Mac OS X. The 32-bit version requires at least 10.4, and the 64-bit version requires at least 10.5. The 64-bit version is UNTESTED (because of lack of access to a G5 Mac).
- first release of a 64-bit x86_64 binary for GNU/Linux. Tested under the 64-bit version of Gentoo 2008.0.
- the 64-bit Windows binary is built using the tbb20_20080408oss release of the TBB; the Mac, GNU/Linux, FreeBSD and 32-bit Windows binaries are built using the tbb21_009oss release of the TBB. The tbb21_009oss release does not support the VC7.1 runtime libraries on Win64 so it was necessary to fallback to a previous version for the Windows 64-bit binary.
-
Download: [280KB] Source code.
Download: [156KB] FreeBSD 32-bit i386/ia32 binary (command line only).
Download: [156KB] FreeBSD 64-bit x86_64 binary (command line only).
Download: [168KB] GNU/Linux 32-bit i386/ia32 binary for kernel 2.6 / GCC 4 (command line only).
Download: [272KB] Mac OS X 10.4 32-bit Intel and Mac OS X 10.5 64-bit Intel "fat" binary (command line only).
Download: [132KB] Windows XP/Vista 32-bit binary (command line only). Note: this version is untested under Windows 2000 - it may work, it may not.
Download: [168KB] 64-bit binary for Windows XP 64-bit or Vista 64-bit (command line only). Warning: a capable 64-bit CPU is not sufficient to use this binary. You must also have a 64-bit version of Windows installed.
The changes in the 20080420 version are:
- added the -t0 option to allow verification to be done serially but still perform repair concurrently, and for creation, MD5 checksumming will be done serially and par2 data creation will be done concurrently. The default is to perform all operations concurrently, so if you want the new behaviour, you will need to manually specify -t0 on the command line or build your own custom version of the executable.
- if the realpath() API returned NULL, the par2 files created would end up with the name of the first file in the list of files to create par2 files for. Fixed.
- no longer includes duplicate file names in the list of files to create redundancy data for (which would otherwise bloat the .par2 files).
- now displays the instruction set being executed.
- updated to use the tbb20_017oss_src.tar.gz version of the Intel TBB library.
- first release of a 64-bit Windows binary.
-
The changes in the 20080203 version are:
-
the Linux version wasn't working because it was not built correctly: the
reedsolomon-inner-i386-posix.s was using an incorrect include directive. Fixed.
*** WARNING ***
A consequence of this error is that par2 files created with the 20080116 Linux binary contain incorrect repair data and therefore cannot be used to repair data files. The par2 files will need to be created again using either the 20071128 build of the Linux binary or this build of it.
*** WARNING ***
- tweaked the Makefile and par2cmdline.h to allow for building under FreeBSD.
- first release of 32-bit and 64-bit binaries for FreeBSD (built under RELEASE 6.2).
- updated to use the 20080115 version of the Intel TBB library.
Download: [280KB] Source code.
Download: [168KB] FreeBSD 32-bit i386/ia32 binary (command line only).
Download: [160KB] FreeBSD 64-bit x86_64 binary (command line only).
Download: [168KB] GNU/Linux 32-bit i386/ia32 binary for kernel 2.6 / GCC 4 (command line only).
Download: Mac OS X binary - please download the 20080116 version below.
Download: Windows binary - please download the 20080116 version below.
-
the Linux version wasn't working because it was not built correctly: the
reedsolomon-inner-i386-posix.s was using an incorrect include directive. Fixed.
-
The changes in the 20080116 version are:
- the initial processing (creation) and verification (repair) of target files is now performed serially because of complaints that concurrent processing was causing disk thrashing.
- full paths are now only displayed when a -d parameter is given to the program, otherwise the original behavior of displaying just the file name now occurs.
- Unicode support was added. See the included README_FIRST.txt file for an explanation.
- split up the reedsolomon-inner.s file so that it builds correctly under Darwin and other POSIX systems.
- changed the way the pre-built Mac OS X version is built so that it now contains both a 32-bit executable built under 10.4 and a 64-bit executable built under 10.5; see the included README_FIRST.txt file for an explanation.
Download: par2cmdline-0.4-tbb-20080116.tar.gz (280KB) Source code.
Download: Linux binary removed - please download the 20080203 version
Download: par2cmdline-0.4-tbb-20080116-win32.zip (140KB) Windows XP/Vista 32-bit binary (command line only). Note: this version is untested under Windows 2000 - it may work, it may not. It definitely won't work under Windows 95/98/ME because of the newly added changes for Unicode support.
-
The changes in the 20071128 version are:
- if par2 was asked to verify/repair with just a single .par2 file, it would crash. Fixed.
- built for GNU/Linux using the Gentoo distribution (i386 version).
- updated to use the 20071030 version of the Intel TBB library.
Download: par2cmdline-0.4-tbb-20071128.tar.gz (247KB) Source code.
-
The changes in the 20071121 version are:
- changed several concurrent loops from using TBB's parallel_for to parallel_while so that files will be processed in a sequential (but still concurrent/threaded) manner. For example, 100 files were previously processed on dual core machines as: Thread 1: file 1, file 2, file 3, ..., file 50 Thread 2: file 51, file 52, file 53, ..., file 100 which caused hard disk head thrashing. Now the threads will process the files from file 1 to file 100 on a first-come-first-served basis.
- limited the rate at which cout was called to at most 10 times per second.
- when building for i386 using GCC, this version will now build with an assembler version of the inner Reed-Solomon loop because the code generated by GCC was not as fast/small as the Visual C++ version. Doing this should bring the GCC-built (POSIX) version's speed up to that of the Visual C++ (Windows) version.
- for canonicalising paths on POSIX systems, the program will now try to use the realpath() API, if it's available, instead of the fragile code in the original version.
- on POSIX systems, attempting to use a parameter of "-d." for par2 creation would cause the program to fail because it was not resolving a partial path to a canonical full path. Fixed.
Download: par2cmdline-0.4-tbb-20071121.tar.gz (256KB) Source code.
-
The changes in the 20071022 version are:
- synchronised the sources with the version of par2cmdline in the CVS at sourceforge.net/projects/parchive
- built against the 20070927 version of the Intel TBB
- tweaked the inner loop of the Reed Solomon code so that the compiler will produce faster/better/smaller code (which may or may not speed up the program).
- added support for creating and repairing data files in directory trees via the new -d<directory> command line switch. See the README_FIRST.txt file in the distribution for details on how to use this.
Download: par2cmdline-0.4-tbb-20071022.tar.gz (256KB) Source code.
-
The changes in the 20070927 version are:
- applied a fix for a bug reported by user 'shenhanc' on sourceforge in the file Par2CreatorSourceFile.cpp where a loop variable would not get incremented when silent output was requested.
Download: par2cmdline-0.4-tbb-20070927.tar.gz (260KB) Source code.
-
The changes in the 20070926 version are:
- fixed an integer overflow bug in Par2CreatorSourceFile.cpp which resulted in incorrect MD5 hashes being stored in par2 files when they were created from source files that were larger than or equal to 4GB in size. This bug affected all 32-bit builds of the program. It did not affect the 64-bit builds on those platforms where sizeof(size_t) == 8.
Download: par2cmdline-0.4-tbb-20070926.tar.gz (260KB) Source code.
-
The changes in the 20070924 version are:
- the original par2cmdline-0.4 sources were not able to process files larger than 2GB on the Win32 platform because diskfile.cpp used the stat() function which only returns a signed 32-bit number on Win32. This was changed to use _stati64() which returns a proper 64-bit file size. Note that the FAT32 file system from the Windows 95 era does not support files larger than 1 GB so this change is really applicable only to files on NTFS disks - the default file system on Windows 2000/XP/Vista.
Download: par2cmdline-0.4-tbb-20070924.tar.gz (260KB) Source code.
-
The changes in the 20070831 version are:
- modified to utilise Intel TBB 2.0.
Download: par2cmdline-0.4-tbb-20070831.tar.gz (260KB) Source code.
Questions? Remarks? Comments? Please use the contact page.
Copyright 2007-2009, chuchusoft.com
Hosted by www.000webhost.com