]> mj.ucw.cz Git - libucw.git/log
libucw.git
16 years agoAuto-tune radix-sort width according to CPU type.
Martin Mares [Tue, 11 Sep 2007 13:26:48 +0000 (15:26 +0200)]
Auto-tune radix-sort width according to CPU type.

16 years agoSweeping over TODO.
Martin Mares [Tue, 11 Sep 2007 13:17:38 +0000 (15:17 +0200)]
Sweeping over TODO.

16 years agoAnother minor optimization: Added AddRadixBits.
Martin Mares [Tue, 11 Sep 2007 12:49:31 +0000 (14:49 +0200)]
Another minor optimization: Added AddRadixBits.

16 years agoYet another sorter tuning utility.
Martin Mares [Tue, 11 Sep 2007 12:07:42 +0000 (14:07 +0200)]
Yet another sorter tuning utility.

16 years agoOops, some typos have crept in.
Martin Mares [Mon, 10 Sep 2007 19:00:35 +0000 (21:00 +0200)]
Oops, some typos have crept in.

16 years agoRedefined RadixThreshold to bound the array size instead of the number
Martin Mares [Mon, 10 Sep 2007 18:55:23 +0000 (20:55 +0200)]
Redefined RadixThreshold to bound the array size instead of the number
of elements -- the switching point seems to be related more to cache
effects than decision performance.

16 years agoRewritten handling of small chunks in the parallel radix-sorter.
Martin Mares [Mon, 10 Sep 2007 18:05:10 +0000 (20:05 +0200)]
Rewritten handling of small chunks in the parallel radix-sorter.

They are now immediately submitted to the worker thread instead of keeping
them in a list of delayed chunks for the whole course of the algorithm.
This avoids memory usage explosions caused by queueing lots of smallish
chunks. We prefer to wait for the small chunks to complete before starting
the next large chunk.

16 years agoLet eltpools maintain the number of allocated items. The overhead
Martin Mares [Mon, 10 Sep 2007 18:03:27 +0000 (20:03 +0200)]
Let eltpools maintain the number of allocated items. The overhead
is minimal and it helps debugging.

16 years agoImplemented ThreadChunk limit.
Martin Mares [Mon, 10 Sep 2007 17:47:03 +0000 (19:47 +0200)]
Implemented ThreadChunk limit.

16 years agoMade radix-sorting threshold configurable and let radix-tune-bits
Martin Mares [Mon, 10 Sep 2007 17:31:00 +0000 (19:31 +0200)]
Made radix-sorting threshold configurable and let radix-tune-bits
help find the optimum.

16 years agoFixed several bugs in swapping of buffers in the threaded radix-sorter,
Martin Mares [Mon, 10 Sep 2007 15:18:52 +0000 (17:18 +0200)]
Fixed several bugs in swapping of buffers in the threaded radix-sorter,
which caused it to malfunction with some bit widths.

16 years agoAdded a simple utility for tuning the radix-sorter width.
Martin Mares [Mon, 10 Sep 2007 15:18:02 +0000 (17:18 +0200)]
Added a simple utility for tuning the radix-sorter width.

16 years agoA subset of tests can be requested now. Also, the radix sort width
Martin Mares [Mon, 10 Sep 2007 15:17:38 +0000 (17:17 +0200)]
A subset of tests can be requested now. Also, the radix sort width
can be overridden by making with `CEXTRA="-DFORCE_RADIX_BITS=n"'.

16 years agoRadix sort bit width is now controlled by the configure script.
Martin Mares [Mon, 10 Sep 2007 15:16:39 +0000 (17:16 +0200)]
Radix sort bit width is now controlled by the configure script.

16 years agoFixed a typo in usage text.
Martin Mares [Mon, 10 Sep 2007 15:14:50 +0000 (17:14 +0200)]
Fixed a typo in usage text.

16 years agoAdded CEXTRA and LEXTRA, which can be used to add new compilation/linking
Martin Mares [Mon, 10 Sep 2007 15:14:24 +0000 (17:14 +0200)]
Added CEXTRA and LEXTRA, which can be used to add new compilation/linking
flags without removing the original ones.

16 years agoWe want to keep the results of retros benchmarking, but the rest of BENCH
Martin Mares [Mon, 10 Sep 2007 11:40:44 +0000 (13:40 +0200)]
We want to keep the results of retros benchmarking, but the rest of BENCH
is obsolete.

16 years agoSlightly improved user interface of {asio,file}-test and renamed them
Martin Mares [Mon, 10 Sep 2007 11:38:43 +0000 (13:38 +0200)]
Slightly improved user interface of {asio,file}-test and renamed them
to radix-*.

16 years agoRemoved sorter_presort_bufsize, it was no longer used.
Martin Mares [Sat, 8 Sep 2007 20:53:46 +0000 (22:53 +0200)]
Removed sorter_presort_bufsize, it was no longer used.

16 years agoClean up #undef's.
Martin Mares [Sat, 8 Sep 2007 20:49:54 +0000 (22:49 +0200)]
Clean up #undef's.

16 years agoExplain why we don't need the join hack for custom presorting.
Martin Mares [Sat, 8 Sep 2007 20:40:29 +0000 (22:40 +0200)]
Explain why we don't need the join hack for custom presorting.

16 years agoConvert the most important users of arraysort.h to sorter/array.h.
Martin Mares [Sat, 8 Sep 2007 18:25:00 +0000 (20:25 +0200)]
Convert the most important users of arraysort.h to sorter/array.h.

So far, I didn't have used radix-sorting, because I want to save memory,
but if any of these sorters will turn up on the profiles, I will convert it
later.

16 years agoChanged the interface of the array sorter: the buffer and hash_bits parameters
Martin Mares [Sat, 8 Sep 2007 17:51:30 +0000 (19:51 +0200)]
Changed the interface of the array sorter: the buffer and hash_bits parameters
are passed only if hashing is enabled.

16 years agoMoved the last few relevant NOTES to TODO.
Martin Mares [Sat, 8 Sep 2007 14:35:50 +0000 (16:35 +0200)]
Moved the last few relevant NOTES to TODO.

16 years agoInstall API of the new sorter.
Martin Mares [Sat, 8 Sep 2007 14:28:23 +0000 (16:28 +0200)]
Install API of the new sorter.

I had to get rid of the $(?F) construct, because did not work with includes
in subdirectories (like sorter has). I have replaced it by a direct reference
to the include list macro, which also allows to add the missing dependency
on autoconf.h.

16 years agoThe old sorter is gone.
Martin Mares [Sat, 8 Sep 2007 14:20:16 +0000 (16:20 +0200)]
The old sorter is gone.

16 years agoCleanup FIXME's.
Martin Mares [Sat, 8 Sep 2007 14:07:59 +0000 (16:07 +0200)]
Cleanup FIXME's.

16 years agoShaved off a couple of items from the TODO.
Martin Mares [Fri, 7 Sep 2007 17:15:36 +0000 (19:15 +0200)]
Shaved off a couple of items from the TODO.

16 years agoBoth quicksort and radix-sort can be parallelized to multiple threads now.
Martin Mares [Fri, 7 Sep 2007 17:03:04 +0000 (19:03 +0200)]
Both quicksort and radix-sort can be parallelized to multiple threads now.

16 years agoImproved heuristics for internal sorter capacity estimation.
Martin Mares [Fri, 7 Sep 2007 14:45:50 +0000 (16:45 +0200)]
Improved heuristics for internal sorter capacity estimation.

16 years agoA few improvements of sort-test.
Martin Mares [Fri, 7 Sep 2007 13:55:47 +0000 (15:55 +0200)]
A few improvements of sort-test.

16 years agoSave cache misses by keeping a copy of the hash value next to the pointer.
Martin Mares [Fri, 7 Sep 2007 13:34:05 +0000 (15:34 +0200)]
Save cache misses by keeping a copy of the hash value next to the pointer.

This trades cache efficiency for extra memory, but it seems to be very well
worth it (e.g., graph sorting in sort-test is 8 times faster now).

16 years agoMerge with git+ssh://cvs.ucw.cz/projects/sherlock/GIT/sherlock.git#dev-sorter
Martin Mares [Fri, 7 Sep 2007 12:33:55 +0000 (14:33 +0200)]
Merge with git+ssh://cvs.ucw.cz/projects/sherlock/GIT/sherlock.git#dev-sorter

16 years agoAdded basic threading parameters.
Martin Mares [Fri, 7 Sep 2007 12:33:45 +0000 (14:33 +0200)]
Added basic threading parameters.

16 years agoMerge with git+ssh://git.ucw.cz/projects/sherlock/GIT/sherlock.git#dev-sorter
Martin Mares [Fri, 7 Sep 2007 12:33:26 +0000 (14:33 +0200)]
Merge with git+ssh://git.ucw.cz/projects/sherlock/GIT/sherlock.git#dev-sorter

16 years agoAdded a debugging hack.
Martin Mares [Fri, 7 Sep 2007 12:31:37 +0000 (14:31 +0200)]
Added a debugging hack.

16 years agoIntroduced ARRAY_LONG_HASH and unrolled radix-sorting primitives.
Martin Mares [Fri, 7 Sep 2007 12:29:34 +0000 (14:29 +0200)]
Introduced ARRAY_LONG_HASH and unrolled radix-sorting primitives.

Also tuned ASORT_RADIX_BITS for P4 Xeon (Sherlock3) -- the L1 cache is
so small there that it is better to tune radix-sort for L2 cache size.

16 years agoAdded numbering of tests.
Martin Mares [Fri, 7 Sep 2007 12:27:29 +0000 (14:27 +0200)]
Added numbering of tests.

16 years agoCleanup of array sorter interface and added quicksplit.
Martin Mares [Fri, 7 Sep 2007 10:30:18 +0000 (12:30 +0200)]
Cleanup of array sorter interface and added quicksplit.

16 years agoA few bits of commentary.
Martin Mares [Thu, 6 Sep 2007 20:00:10 +0000 (22:00 +0200)]
A few bits of commentary.

16 years agoMore bits of the array sorter: radix-sort implemented.
Martin Mares [Thu, 6 Sep 2007 19:27:31 +0000 (21:27 +0200)]
More bits of the array sorter: radix-sort implemented.

16 years agoFixed multi-way sorting with custom presorting.
Martin Mares [Thu, 6 Sep 2007 19:26:49 +0000 (21:26 +0200)]
Fixed multi-way sorting with custom presorting.

16 years agoAdded a sketch of a new array sorter implementation.
Martin Mares [Thu, 6 Sep 2007 15:16:10 +0000 (17:16 +0200)]
Added a sketch of a new array sorter implementation.

The interface is already hopefully fixed, I am going to add the missing bits
of implementation soon.

16 years agoAdded a simple allocator for fixed-size objects.
Martin Mares [Thu, 6 Sep 2007 14:17:42 +0000 (16:17 +0200)]
Added a simple allocator for fixed-size objects.

16 years agoMerge with git+ssh://git.ucw.cz/projects/sherlock/GIT/sherlock.git
Pavel Charvat [Thu, 6 Sep 2007 07:19:33 +0000 (09:19 +0200)]
Merge with git+ssh://git.ucw.cz/projects/sherlock/GIT/sherlock.git

16 years agoUnified top-level Makefile with main-line.
Martin Mares [Wed, 5 Sep 2007 18:14:08 +0000 (20:14 +0200)]
Unified top-level Makefile with main-line.

16 years agoWe don't need this as 2-way merging is used rarely.
Martin Mares [Wed, 5 Sep 2007 18:10:16 +0000 (20:10 +0200)]
We don't need this as 2-way merging is used rarely.

16 years agobugfix in the installer
Pavel Charvat [Tue, 4 Sep 2007 16:42:04 +0000 (18:42 +0200)]
bugfix in the installer

16 years agoNew TODO notes.
Martin Mares [Fri, 31 Aug 2007 19:07:15 +0000 (21:07 +0200)]
New TODO notes.

16 years agoA couple of things done.
Martin Mares [Fri, 31 Aug 2007 14:08:26 +0000 (16:08 +0200)]
A couple of things done.

16 years agoJoin in the rare case that presorting creates a single run, which is
Martin Mares [Fri, 31 Aug 2007 13:45:28 +0000 (15:45 +0200)]
Join in the rare case that presorting creates a single run, which is
not known in advance to be final.

16 years agoCleaned up joining logic and implemented joins in multi-way merges.
Martin Mares [Fri, 31 Aug 2007 13:37:02 +0000 (15:37 +0200)]
Cleaned up joining logic and implemented joins in multi-way merges.

16 years agoAdded decision logic which switches between 2-way merges, n-way merges
Martin Mares [Fri, 31 Aug 2007 12:57:49 +0000 (14:57 +0200)]
Added decision logic which switches between 2-way merges, n-way merges
and radix splits.

16 years agoMerge with git+ssh://git.ucw.cz/projects/sherlock/GIT/sherlock.git#dev-sorter
Martin Mares [Fri, 31 Aug 2007 11:42:50 +0000 (13:42 +0200)]
Merge with git+ssh://git.ucw.cz/projects/sherlock/GIT/sherlock.git#dev-sorter

16 years agoThe GCC bug (I hope I have ruled out all possibilities of a bug at my side)
Martin Mares [Fri, 31 Aug 2007 11:42:43 +0000 (13:42 +0200)]
The GCC bug (I hope I have ruled out all possibilities of a bug at my side)
turned out to bite even in GCC 4.2.1, so I have reported it and enabled
the workaround for all compiler versions.

16 years agoMerge with git+ssh://git.ucw.cz/projects/sherlock/GIT/sherlock.git
Pavel Charvat [Fri, 31 Aug 2007 11:09:11 +0000 (13:09 +0200)]
Merge with git+ssh://git.ucw.cz/projects/sherlock/GIT/sherlock.git

16 years agoMerge with git+ssh://git.ucw.cz/projects/sherlock/GIT/sherlock.git#dev-sorter
Martin Mares [Fri, 31 Aug 2007 09:47:12 +0000 (11:47 +0200)]
Merge with git+ssh://git.ucw.cz/projects/sherlock/GIT/sherlock.git#dev-sorter

16 years agoBetter (and correct) handling of joins and empty buckets.
Martin Mares [Fri, 31 Aug 2007 09:46:44 +0000 (11:46 +0200)]
Better (and correct) handling of joins and empty buckets.

16 years agoCleanup and commentary.
Martin Mares [Thu, 30 Aug 2007 09:58:00 +0000 (11:58 +0200)]
Cleanup and commentary.

16 years agoAdded a work-around for nasty GCC bug.
Martin Mares [Thu, 30 Aug 2007 09:48:57 +0000 (11:48 +0200)]
Added a work-around for nasty GCC bug.

16 years agoYet another swap-out.
Martin Mares [Thu, 30 Aug 2007 09:37:14 +0000 (11:37 +0200)]
Yet another swap-out.

16 years agoFixed the yesterday's mysterious bug.
Martin Mares [Thu, 30 Aug 2007 08:00:35 +0000 (10:00 +0200)]
Fixed the yesterday's mysterious bug.

16 years agoPresorting for multi-way merge should swap out the buckets.
Martin Mares [Thu, 30 Aug 2007 08:00:20 +0000 (10:00 +0200)]
Presorting for multi-way merge should swap out the buckets.

16 years agoSo far buggy support for multi-way unification.
Martin Mares [Wed, 29 Aug 2007 21:10:30 +0000 (23:10 +0200)]
So far buggy support for multi-way unification.

16 years agoFixed bug in error message.
Martin Mares [Wed, 29 Aug 2007 21:10:13 +0000 (23:10 +0200)]
Fixed bug in error message.

16 years agoMerge with git+ssh://cvs.ucw.cz/projects/sherlock/GIT/sherlock.git#dev-sorter
Martin Mares [Wed, 29 Aug 2007 21:09:52 +0000 (23:09 +0200)]
Merge with git+ssh://cvs.ucw.cz/projects/sherlock/GIT/sherlock.git#dev-sorter

16 years agoFixed a bug.
Martin Mares [Wed, 29 Aug 2007 21:09:48 +0000 (23:09 +0200)]
Fixed a bug.

16 years agoAdded options for gcc 4.2.x.
Martin Mares [Wed, 29 Aug 2007 20:47:37 +0000 (22:47 +0200)]
Added options for gcc 4.2.x.

16 years agoBugfix in keywords module -- fb-dir does not support appending to an
Pavel Charvat [Wed, 29 Aug 2007 18:20:56 +0000 (20:20 +0200)]
Bugfix in keywords module -- fb-dir does not support appending to an
unaligned file.

16 years agoformat_size() no longer exists.
Martin Mares [Wed, 29 Aug 2007 14:04:14 +0000 (16:04 +0200)]
format_size() no longer exists.

16 years agoMulti-way merges work fine in simple cases.
Martin Mares [Wed, 29 Aug 2007 13:25:36 +0000 (15:25 +0200)]
Multi-way merges work fine in simple cases.
I am going to give them a try on large data to see if they are viable.

16 years agoSetting of LIBS is no longer necessary.
Martin Mares [Sat, 25 Aug 2007 18:49:17 +0000 (20:49 +0200)]
Setting of LIBS is no longer necessary.

16 years agoUpdated TODO.
Martin Mares [Sat, 25 Aug 2007 18:41:01 +0000 (20:41 +0200)]
Updated TODO.

16 years agoDependencies of test programs are no longer hard-wired in the rules.
Martin Mares [Sat, 25 Aug 2007 14:27:39 +0000 (16:27 +0200)]
Dependencies of test programs are no longer hard-wired in the rules.

16 years agoCosmetics.
Martin Mares [Sat, 25 Aug 2007 14:19:16 +0000 (16:19 +0200)]
Cosmetics.

16 years agoShared file handles now use is_temp_file == 2 instead of -1
Martin Mares [Sat, 25 Aug 2007 14:19:01 +0000 (16:19 +0200)]
Shared file handles now use is_temp_file == 2 instead of -1
to avoid collisions with negative return values of bconfig()
meaning "not supported".

16 years agoCleanup of file fastbufs.
Martin Mares [Sat, 25 Aug 2007 14:15:08 +0000 (16:15 +0200)]
Cleanup of file fastbufs.

  o  Common parts of close code moved to bclose_file_helper().
  o  Compatibility wrappers moved to fb-param.c.
  o  Everything related to temp files moved to fb-temp.c.
  o  Several byte -> char conversions.
  o  Better comments.
  o  Testing code compiles again.

16 years agobopen_tmp_file(NULL) works.
Martin Mares [Sat, 25 Aug 2007 11:56:18 +0000 (13:56 +0200)]
bopen_tmp_file(NULL) works.

16 years agoUse bfix_tmp_file() whereever possible.
Martin Mares [Sat, 25 Aug 2007 11:38:23 +0000 (13:38 +0200)]
Use bfix_tmp_file() whereever possible.

16 years agoImplemented bfix_tmp_file(), which turns a temporary file fastbuf
Martin Mares [Sat, 25 Aug 2007 11:36:22 +0000 (13:36 +0200)]
Implemented bfix_tmp_file(), which turns a temporary file fastbuf
to a permanent one.

16 years agoLet bconfig() return the original value.
Martin Mares [Sat, 25 Aug 2007 11:14:15 +0000 (13:14 +0200)]
Let bconfig() return the original value.

16 years agoRemoved obsolete comment.
Martin Mares [Sat, 25 Aug 2007 10:57:02 +0000 (12:57 +0200)]
Removed obsolete comment.

16 years agoFixed a typo.
Martin Mares [Sat, 25 Aug 2007 10:43:56 +0000 (12:43 +0200)]
Fixed a typo.

16 years agoLIBUCW needs to be declared early, because it is used by sub-Makefiles.
Martin Mares [Sat, 25 Aug 2007 10:19:50 +0000 (12:19 +0200)]
LIBUCW needs to be declared early, because it is used by sub-Makefiles.

16 years agoMerge with git+ssh://git.ucw.cz/projects/sherlock/GIT/sherlock.git
Martin Mares [Sat, 25 Aug 2007 10:08:53 +0000 (12:08 +0200)]
Merge with git+ssh://git.ucw.cz/projects/sherlock/GIT/sherlock.git

Hand-merged:

  debug/Makefile
  lib/Makefile
  gather/shepherd/shep-select.c

16 years agoMerge with git+ssh://cvs.ucw.cz/projects/sherlock/GIT/sherlock.git
Martin Mares [Fri, 24 Aug 2007 12:32:16 +0000 (14:32 +0200)]
Merge with git+ssh://cvs.ucw.cz/projects/sherlock/GIT/sherlock.git

16 years agoShell utilities should link with libucw, not libsh.
Martin Mares [Thu, 26 Jul 2007 10:11:30 +0000 (12:11 +0200)]
Shell utilities should link with libucw, not libsh.

16 years agoCommented more libucw configuration switches.
Martin Mares [Thu, 26 Jul 2007 09:50:57 +0000 (11:50 +0200)]
Commented more libucw configuration switches.

16 years agoUse lib/default.cfg and get the version string from there.
Martin Mares [Thu, 26 Jul 2007 09:50:44 +0000 (11:50 +0200)]
Use lib/default.cfg and get the version string from there.
Avoid sherlock/autoconf.cfg.

16 years agoMoved default settings of the UCW library to a separate config file.
Martin Mares [Thu, 26 Jul 2007 09:46:54 +0000 (11:46 +0200)]
Moved default settings of the UCW library to a separate config file.
This config file also contains the master version number.

16 years agoRenamed both instances of `defconfig' to `default.cfg' to keep the names
Martin Mares [Thu, 26 Jul 2007 09:39:22 +0000 (11:39 +0200)]
Renamed both instances of `defconfig' to `default.cfg' to keep the names
in line with the rest of the configuration files.

16 years agoMention doc/configure.
Martin Mares [Thu, 26 Jul 2007 09:35:02 +0000 (11:35 +0200)]
Mention doc/configure.

16 years agoUpdated documentation on using libraries.
Martin Mares [Thu, 26 Jul 2007 09:24:58 +0000 (11:24 +0200)]
Updated documentation on using libraries.

16 years agoMoved the tests of linking with Sherlock libraries to free/libs/examples/.
Martin Mares [Thu, 26 Jul 2007 09:18:24 +0000 (11:18 +0200)]
Moved the tests of linking with Sherlock libraries to free/libs/examples/.

16 years agoThe separate library distribution now compiles.
Martin Mares [Thu, 26 Jul 2007 09:05:33 +0000 (11:05 +0200)]
The separate library distribution now compiles.

16 years agoMoved the rule for cf/library to lib/Makefile and the default empty
Martin Mares [Thu, 26 Jul 2007 09:04:54 +0000 (11:04 +0200)]
Moved the rule for cf/library to lib/Makefile and the default empty
rule for extras to build/Maketop.

16 years agoAn unfinished experiment in making a separate release of all libraries.
Martin Mares [Wed, 25 Jul 2007 21:37:45 +0000 (23:37 +0200)]
An unfinished experiment in making a separate release of all libraries.

16 years agoComments must not be indented, otherwise they are passed to the shell.
Martin Mares [Wed, 25 Jul 2007 21:05:53 +0000 (23:05 +0200)]
Comments must not be indented, otherwise they are passed to the shell.

16 years agoMerge with git+ssh://git.ucw.cz/projects/sherlock/GIT/sherlock.git
Pavel Charvat [Wed, 25 Jul 2007 11:06:58 +0000 (13:06 +0200)]
Merge with git+ssh://git.ucw.cz/projects/sherlock/GIT/sherlock.git

16 years agoComment on optionality of UCW::CGI::error_hook.
Martin Mares [Fri, 20 Jul 2007 15:24:15 +0000 (17:24 +0200)]
Comment on optionality of UCW::CGI::error_hook.