<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Parallel Quicksort version 1.01 ... in Intel® Moderncode for Parallel Architectures</title>
    <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/Parallel-Quicksort-version-1-01/m-p/847091#M1708</link>
    <description>&lt;P&gt;&lt;BR /&gt;Hello, &lt;/P&gt;&lt;P&gt;&lt;BR /&gt;I have just updated parallel quicksort , now you can parallel quicksort&lt;BR /&gt;on 'many' cores - not just two cores - look at the new program &lt;BR /&gt;pqsort2.pas inside the zip &lt;/P&gt;&lt;P&gt;Next step i will convert pqsort2.pas program to a unit that you can import...&lt;/P&gt;&lt;P&gt;I am using inside pqsort2.pas the following functions:&lt;BR /&gt;QSortStr() , QuickSrtInt() and Merge()&lt;/P&gt;&lt;P&gt;Parallel quicksort version 1.01 quicksort many array parts - of your &lt;BR /&gt;array - in parallel using Quicksort, and after that it finally merge &lt;BR /&gt;them - with the merge() procedure - &lt;/P&gt;&lt;P&gt;And as you know , Quicksort is a divide and conquer algorithm that&lt;BR /&gt;have the following best case performance: &lt;BR /&gt;&lt;BR /&gt;T(n) = T(n/2) + T(n/2) + (n)&lt;BR /&gt; = 2T(n/2) + (n)&lt;/P&gt;&lt;P&gt;And from case 2 of Master theorem, the recurrence equation gives:&lt;/P&gt;&lt;P&gt; T(n) = (n lg n)&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Now, i have tested mergesort in parallel , but quicksort() gives better &lt;BR /&gt;performance. &lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Note also that on Delphi parallel quicksort gave me 1.7x on two cores &lt;BR /&gt;- but with more optimization, delphi will give you better scalability...- .&lt;BR /&gt;&lt;BR /&gt;Freepascal on the other hand gave me just 1.2x on two cores, so, &lt;BR /&gt;FreePascal still have to be optimized on 'some' parts for better parallel &lt;BR /&gt;computing...&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;You can download parallel quicksort from:&lt;/P&gt;&lt;P&gt;&lt;A href="http://pages.videotron.com/aminer/"&gt;http://pages.videotron.com/aminer/&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Sincerely&lt;BR /&gt;Amine Moulay Ramdane.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;</description>
    <pubDate>Tue, 13 Apr 2010 19:55:55 GMT</pubDate>
    <dc:creator>aminer10</dc:creator>
    <dc:date>2010-04-13T19:55:55Z</dc:date>
    <item>
      <title>Parallel Quicksort version 1.01 ...</title>
      <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/Parallel-Quicksort-version-1-01/m-p/847091#M1708</link>
      <description>&lt;P&gt;&lt;BR /&gt;Hello, &lt;/P&gt;&lt;P&gt;&lt;BR /&gt;I have just updated parallel quicksort , now you can parallel quicksort&lt;BR /&gt;on 'many' cores - not just two cores - look at the new program &lt;BR /&gt;pqsort2.pas inside the zip &lt;/P&gt;&lt;P&gt;Next step i will convert pqsort2.pas program to a unit that you can import...&lt;/P&gt;&lt;P&gt;I am using inside pqsort2.pas the following functions:&lt;BR /&gt;QSortStr() , QuickSrtInt() and Merge()&lt;/P&gt;&lt;P&gt;Parallel quicksort version 1.01 quicksort many array parts - of your &lt;BR /&gt;array - in parallel using Quicksort, and after that it finally merge &lt;BR /&gt;them - with the merge() procedure - &lt;/P&gt;&lt;P&gt;And as you know , Quicksort is a divide and conquer algorithm that&lt;BR /&gt;have the following best case performance: &lt;BR /&gt;&lt;BR /&gt;T(n) = T(n/2) + T(n/2) + (n)&lt;BR /&gt; = 2T(n/2) + (n)&lt;/P&gt;&lt;P&gt;And from case 2 of Master theorem, the recurrence equation gives:&lt;/P&gt;&lt;P&gt; T(n) = (n lg n)&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Now, i have tested mergesort in parallel , but quicksort() gives better &lt;BR /&gt;performance. &lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Note also that on Delphi parallel quicksort gave me 1.7x on two cores &lt;BR /&gt;- but with more optimization, delphi will give you better scalability...- .&lt;BR /&gt;&lt;BR /&gt;Freepascal on the other hand gave me just 1.2x on two cores, so, &lt;BR /&gt;FreePascal still have to be optimized on 'some' parts for better parallel &lt;BR /&gt;computing...&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;You can download parallel quicksort from:&lt;/P&gt;&lt;P&gt;&lt;A href="http://pages.videotron.com/aminer/"&gt;http://pages.videotron.com/aminer/&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Sincerely&lt;BR /&gt;Amine Moulay Ramdane.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 13 Apr 2010 19:55:55 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/Parallel-Quicksort-version-1-01/m-p/847091#M1708</guid>
      <dc:creator>aminer10</dc:creator>
      <dc:date>2010-04-13T19:55:55Z</dc:date>
    </item>
    <item>
      <title>Parallel Quicksort version 1.01 ...</title>
      <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/Parallel-Quicksort-version-1-01/m-p/847092#M1709</link>
      <description>&lt;P&gt;&lt;BR /&gt;I wrote:&lt;BR /&gt;&amp;gt;And as you know , Quicksort is a divide and conquer algorithm that &lt;BR /&gt;&amp;gt;have the following best case performance: &lt;BR /&gt;&amp;gt;&lt;BR /&gt;&amp;gt;T(n) = T(n/2) + T(n/2) + (n) &lt;/P&gt;&lt;P&gt;I mean T(n) = T(n/2) + T(n/2) + O(n) &lt;/P&gt;&lt;P&gt; = 2T(n/2) + (n) &lt;/P&gt;&lt;P&gt;&lt;BR /&gt;And from case 2 of Master theorem, the recurrence equation gives: &lt;/P&gt;&lt;P&gt;&lt;BR /&gt; T(n) = (n lg n) &lt;/P&gt;&lt;P&gt;&lt;BR /&gt;You can download parallel quicksort from: &lt;/P&gt;&lt;P&gt;&lt;A href="http://pages.videotron.com/aminer/"&gt;http://pages.videotron.com/aminer/&lt;/A&gt; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Sincerely,&lt;BR /&gt;Amine Moulay Ramdane.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 13 Apr 2010 20:03:50 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/Parallel-Quicksort-version-1-01/m-p/847092#M1709</guid>
      <dc:creator>aminer10</dc:creator>
      <dc:date>2010-04-13T20:03:50Z</dc:date>
    </item>
  </channel>
</rss>

