Tuesday, December 22, 2009

New release of QuickThread available.

A new release of QuickThread is now available to registered users at the download and support site.

Principal difference is optimization of parallel_for. A new class of task node has been created: an iterating task node. The new parallel_for (and parallel_task) are now modified to make use of this new task node. Prior versions would enqueue multiple task nodes per slice of iteration space (per chunk when chunks used), resulting in one task enqueue per thread (or chunk as the case may be). New code enqueues one iterating task node regardless of the number of slices.

int chunk=100;
int nObjects = 123456789;
parallel_for(chunk, fnObject, 0, nObjects, a3);

old format has nObjects number of task node and enqueue/dequeue
new format has 1 task node and enqueue/dequeue

The new format has significantly fewer demands on task enqueue/dequeue and numbers of task nodes in flight. In the event that you experience problems you can disable this feature by editing parallel_for_v1.h and commenting out

#define USE_new_parallel_for

New Home page at www.quickthreadprogramming.com too.

The home page contains a new document comparing QuickThread and OpenMP under various system loads.

Jim Dempsey