Community
cancel
Showing results for 
Search instead for 
Did you mean: 
aminer10
Beginner
84 Views

Parallel Quicksort 1.0 is here.



Hello,

Parallel Quicksort 1.0 is here.


Description:

Parallel Quicksort that uses my threadpool engine.

Parallel Quicksort gave me 3x scaling when sorting strings on a quad cores,
it scales better than the parallel quicksort in the parallelsort library..

Please use Lazarus-1.1-38262-fpc-2.6.1 from
http://mirrors.iwi.me/lazarus/snapshots / cause it scales better on this
version.

Language: FPC Pascal v2.2.0+ / Delphi 7+: http://www.freepascal.org/

or Lazarus 32 bits or 64 bits from:

http://mirrors.iwi.me/lazarus/snapshots/

Operating Systems: Win , Linux and Mac (x86).


You can download parallelquicksort from:

http://pages.videotron.com/aminer/



Thank you,
Amine Moulay Ramdane.



0 Kudos
4 Replies
aminer10
Beginner
84 Views


Hello,

It is easy to use parallel quicksort , you can sort strings , integers  , reals, doubles etc
you can sort even sort then when they are inside objects.

Here is an example that i gave you inside the zip file, i am sorting strings that are inside objects:

:
---
program test;
uses parallelquicksort,sysutils,timer;

type
TStudent = Class
public
Name: string;
end;

var tab:Ttabpointer;
myobj:TParallelSort;
student:TStudent;
i:integer;
 
function comp(Item1, Item2: Pointer): integer;

begin

if TStudent(Item1).name < TStudent(Item2).name
then
 begin
  result:=-1;
  exit;
 end;
if TStudent(Item1).name > TStudent(Item2).name
then
 begin
  result:=1;
  exit;
 end;
if TStudent(Item1).name = TStudent(Item2).name
then
 begin 
  result:=0;
 exit;
 end;

end;

begin

myobj:=TParallelSort.create(4); // set to the number of cores...
setlength(tab,100000);
for i:=low(tab) to high(tab)
do
 begin
  student:=TStudent.create;
  student.name:= inttostr(i);
  tab[high(tab)-i]:= student;
 end;

HPT.Timestart;
myobj.pqsort(tab,comp);
writeln;
writeln('Time in microseconds: ',hpt.TimePeriod);

writeln;
writeln('Please press a key to continu...');
readln;
for i := LOW(tab) to HIGH(Tab)
do
begin
 writeln(TStudent(tab).name,' ');
end;

for i := 0 to HIGH(Tab) do freeandnil(TStudent(tab));

setlength(tab,0);
myobj.free;
 
end.
---


Thank you,
Amine Moulay Ramdane.


aminer10
Beginner
84 Views


I wrote:
>It is easy to use parallel quicksort , you can sort strings ,
>integers  , reals, doubles etc
>you can sort even sort then when they are inside objects.
 

Sorry for the typo, i mean you can even sort them when they are inside objects.
 
 
 
Thank you,
Amine Moulay Ramdane.
Andrey_Tikhonov
Beginner
84 Views

Will there be a C/C++ version?
SergeyKostrov
Valued Contributor II
84 Views

>>Will there be a C/C++ version? Aminer10, could you follow up, please? You're doing programming with Pascal and many of users on Intel forums are using C/C++ and Fortran.
Reply