Intel® Moderncode for Parallel Architectures
Support for developing parallel programming applications on Intel® Architecture.
Announcements
FPGA community forums and blogs on community.intel.com are migrating to the new Altera Community and are read-only. For urgent support needs during this transition, please visit the FPGA Design Resources page or contact an Altera Authorized Distributor.

Parallel Quicksort 1.0 is here.

aminer10
Novice
1,132 Views


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
Novice
1,132 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.


0 Kudos
aminer10
Novice
1,132 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.
0 Kudos
Andrey_Tikhonov
Beginner
1,132 Views
Will there be a C/C++ version?
0 Kudos
SergeyKostrov
Valued Contributor II
1,132 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.
0 Kudos
Reply