Skip to content

Commit

Permalink
*** empty log message ***
Browse files Browse the repository at this point in the history
  • Loading branch information
igouy-guest committed May 10, 2011
1 parent b5427d5 commit d5f5f08
Show file tree
Hide file tree
Showing 10 changed files with 272 additions and 0 deletions.
113 changes: 113 additions & 0 deletions website/websites/u32/code/threadring.4.gnat.code
@@ -0,0 +1,113 @@
<span class="hl slc">-- The Computer Language Benchmarks Game</span>
<span class="hl slc">-- http://shootout.alioth.debian.org/</span>
<span class="hl slc">-- Contributed by Jacob Sparre Andersen (with help from Alex Mason)</span>
<span class="hl slc">--</span>
<span class="hl slc">-- Modified by Francois Fabien (9 mai 2011)</span>
<span class="hl slc">-- Compile with:</span>
<span class="hl slc">-- gnatmake -gnatVn -O3 -gnatp threadring.adb</span>

<span class="hl slc">-- pragmas used for optimization of the run-time.</span>
<span class="hl kwa">pragma</span> Restrictions <span class="hl sym">(</span>Simple_Barriers<span class="hl sym">);</span>
<span class="hl kwa">pragma</span> Restrictions <span class="hl sym">(</span>No_Abort_Statements<span class="hl sym">);</span>
<span class="hl kwa">pragma</span> Restrictions <span class="hl sym">(</span>No_Asynchronous_Control<span class="hl sym">);</span>
<span class="hl kwa">pragma</span> Restrictions <span class="hl sym">(</span>No_Calendar<span class="hl sym">);</span>
<span class="hl kwa">pragma</span> Restrictions <span class="hl sym">(</span>No_Delay<span class="hl sym">);</span>
<span class="hl kwa">pragma</span> Restrictions <span class="hl sym">(</span>No_Dynamic_Attachment<span class="hl sym">);</span>
<span class="hl kwa">pragma</span> Restrictions <span class="hl sym">(</span>No_Dynamic_Priorities<span class="hl sym">);</span>
<span class="hl kwa">pragma</span> Restrictions <span class="hl sym">(</span>No_Entry_Calls_In_Elaboration_Code<span class="hl sym">);</span>
<span class="hl kwa">pragma</span> Restrictions <span class="hl sym">(</span>No_Entry_Queue<span class="hl sym">);</span>
<span class="hl kwa">pragma</span> Restrictions <span class="hl sym">(</span>No_Exception_Registration<span class="hl sym">);</span>
<span class="hl kwa">pragma</span> Restrictions <span class="hl sym">(</span>No_Initialize_Scalars<span class="hl sym">);</span>
<span class="hl kwa">pragma</span> Restrictions <span class="hl sym">(</span>No_Local_Protected_Objects<span class="hl sym">);</span>
<span class="hl kwa">pragma</span> Restrictions <span class="hl sym">(</span>No_Protected_Type_Allocators<span class="hl sym">);</span>
<span class="hl kwa">pragma</span> Restrictions <span class="hl sym">(</span>No_Relative_Delay<span class="hl sym">);</span>
<span class="hl kwa">pragma</span> Restrictions <span class="hl sym">(</span>No_Requeue_Statements<span class="hl sym">);</span>
<span class="hl kwa">pragma</span> Restrictions <span class="hl sym">(</span>No_Select_Statements<span class="hl sym">);</span>
<span class="hl kwa">pragma</span> Restrictions <span class="hl sym">(</span>No_Streams<span class="hl sym">);</span>
<span class="hl kwa">pragma</span> Restrictions <span class="hl sym">(</span>No_Task_Allocators<span class="hl sym">);</span>
<span class="hl kwa">pragma</span> Restrictions <span class="hl sym">(</span>No_Task_Attributes_Package<span class="hl sym">);</span>
<span class="hl kwa">pragma</span> Restrictions <span class="hl sym">(</span>No_Task_Termination<span class="hl sym">);</span>
<span class="hl kwa">pragma</span> Restrictions <span class="hl sym">(</span>No_Terminate_Alternatives<span class="hl sym">);</span>
<span class="hl kwa">pragma</span> Restrictions <span class="hl sym">(</span>Static_Priorities<span class="hl sym">);</span>
<span class="hl kwa">pragma</span> Restrictions <span class="hl sym">(</span>Static_Storage_Size<span class="hl sym">);</span>
<span class="hl kwa">pragma</span> Restrictions <span class="hl sym">(</span>Immediate_Reclamation<span class="hl sym">);</span>
<span class="hl kwa">pragma</span> Restrictions <span class="hl sym">(</span>No_Wide_Characters<span class="hl sym">);</span>
<span class="hl kwa">pragma</span> Restrictions <span class="hl sym">(</span>Max_Protected_Entries <span class="hl sym">=&gt;</span> <span class="hl num">1</span><span class="hl sym">);</span>
<span class="hl kwa">pragma</span> Restrictions <span class="hl sym">(</span>Max_Select_Alternatives <span class="hl sym">=&gt;</span> <span class="hl num">0</span><span class="hl sym">);</span>
<span class="hl kwa">pragma</span> Restrictions <span class="hl sym">(</span>Max_Task_Entries <span class="hl sym">=&gt;</span> <span class="hl num">1</span><span class="hl sym">);</span>
<span class="hl kwa">pragma</span> Restrictions <span class="hl sym">(</span>Max_Asynchronous_Select_Nesting <span class="hl sym">=&gt;</span> <span class="hl num">0</span><span class="hl sym">);</span>
<span class="hl kwa">pragma</span> Restrictions <span class="hl sym">(</span>No_Nested_Finalization<span class="hl sym">);</span>

<span class="hl kwa">with</span> Ada<span class="hl sym">.</span>Text_IO<span class="hl sym">,</span> Ada<span class="hl sym">.</span>Command_Line<span class="hl sym">;</span>
<span class="hl kwa">use</span> Ada<span class="hl sym">;</span>

<span class="hl kwa">procedure</span> Threadring <span class="hl kwa">is</span>

Ring_Size <span class="hl sym">:</span> <span class="hl kwa">constant</span> <span class="hl sym">:=</span> <span class="hl num">503</span><span class="hl sym">;</span>
<span class="hl kwa">type</span> Ring_Index <span class="hl kwa">is mod</span> Ring_Size<span class="hl sym">;</span><span class="hl slc">-- 0 to 502</span>

<span class="hl kwa">package</span> Int_IO <span class="hl kwa">is new</span> Text_IO<span class="hl sym">.</span>Integer_IO <span class="hl sym">(</span><span class="hl kwb">Integer</span><span class="hl sym">);</span>

<span class="hl kwa">pragma</span> Warnings <span class="hl sym">(</span>Off<span class="hl sym">);</span>
<span class="hl kwa">protected type</span> Semaphore <span class="hl kwa">is</span>
<span class="hl kwa">entry</span> Seize <span class="hl sym">(</span>Item <span class="hl sym">:</span> <span class="hl kwa">out</span> <span class="hl kwb">Integer</span><span class="hl sym">);</span>
<span class="hl kwa">procedure</span> Release <span class="hl sym">(</span>Item <span class="hl sym">:</span> <span class="hl kwa">in</span> <span class="hl kwb">Integer</span><span class="hl sym">);</span>
<span class="hl kwa">private</span>
Value <span class="hl sym">:</span> <span class="hl kwb">Integer</span><span class="hl sym">;</span>
Ready <span class="hl sym">:</span> <span class="hl kwb">Boolean</span> <span class="hl sym">:=</span> <span class="hl kwd">False</span><span class="hl sym">;</span>
<span class="hl kwa">end</span> Semaphore<span class="hl sym">;</span>

<span class="hl kwa">protected body</span> Semaphore <span class="hl kwa">is</span>
<span class="hl kwa">entry</span> Seize <span class="hl sym">(</span>Item <span class="hl sym">:</span> <span class="hl kwa">out</span> <span class="hl kwb">Integer</span><span class="hl sym">)</span> <span class="hl kwa">when</span> Ready <span class="hl kwa">is</span>
<span class="hl kwa">begin</span>
Item <span class="hl sym">:=</span> Value<span class="hl sym">;</span>
Ready <span class="hl sym">:=</span> <span class="hl kwd">False</span><span class="hl sym">;</span>
<span class="hl kwa">end</span> Seize<span class="hl sym">;</span>

<span class="hl kwa">procedure</span> Release <span class="hl sym">(</span>Item <span class="hl sym">:</span> <span class="hl kwa">in</span> <span class="hl kwb">Integer</span><span class="hl sym">)</span> <span class="hl kwa">is</span>
<span class="hl kwa">begin</span>
Value <span class="hl sym">:=</span> Item<span class="hl sym">;</span>
Ready <span class="hl sym">:=</span> <span class="hl kwd">True</span><span class="hl sym">;</span>
<span class="hl kwa">end</span> Release<span class="hl sym">;</span>
<span class="hl kwa">end</span> Semaphore<span class="hl sym">;</span>
<span class="hl kwa">pragma</span> Warnings <span class="hl sym">(</span>On<span class="hl sym">);</span>

<span class="hl kwa">type</span> Semaphore_Ring <span class="hl kwa">is array</span> <span class="hl sym">(</span>Ring_Index<span class="hl sym">)</span> <span class="hl kwa">of</span> Semaphore<span class="hl sym">;</span>
Semaphores <span class="hl sym">:</span> Semaphore_Ring<span class="hl sym">;</span>

<span class="hl slc">-- tasks are mapped on OS threads.</span>
<span class="hl kwa">task type</span> Node <span class="hl kwa">is</span>
<span class="hl kwa">entry</span> Initialize <span class="hl sym">(</span>Identifier <span class="hl sym">:</span> <span class="hl kwa">in</span> Ring_Index<span class="hl sym">);</span>
<span class="hl kwa">end</span> Node<span class="hl sym">;</span>

<span class="hl kwa">task body</span> Node <span class="hl kwa">is</span>
ID <span class="hl sym">:</span> Ring_Index<span class="hl sym">;</span>
Token <span class="hl sym">:</span> <span class="hl kwb">Integer</span><span class="hl sym">;</span>
<span class="hl kwa">begin</span>
<span class="hl kwa">accept</span> Initialize <span class="hl sym">(</span>Identifier <span class="hl sym">:</span> <span class="hl kwa">in</span> Ring_Index<span class="hl sym">)</span> <span class="hl kwa">do</span>
ID <span class="hl sym">:=</span> Identifier<span class="hl sym">;</span>
<span class="hl kwa">end</span> Initialize<span class="hl sym">;</span>

<span class="hl kwa">loop</span>
Semaphores <span class="hl sym">(</span>ID<span class="hl sym">).</span>Seize <span class="hl sym">(</span>Token<span class="hl sym">);</span>
<span class="hl kwa">if</span> Token <span class="hl sym">=</span> <span class="hl num">0</span> <span class="hl kwa">then</span>
Int_IO<span class="hl sym">.</span>Put <span class="hl sym">(</span><span class="hl kwb">Integer</span> <span class="hl sym">(</span>ID<span class="hl sym">) +</span> <span class="hl num">1</span><span class="hl sym">,</span> Width <span class="hl sym">=&gt;</span> <span class="hl num">0</span><span class="hl sym">);</span>
Text_IO<span class="hl sym">.</span>New_Line<span class="hl sym">;</span>
<span class="hl kwa">end if</span><span class="hl sym">;</span>
Semaphores <span class="hl sym">(</span>ID <span class="hl sym">+</span> <span class="hl num">1</span><span class="hl sym">).</span>Release <span class="hl sym">(</span>Token <span class="hl sym">-</span> <span class="hl num">1</span><span class="hl sym">);</span>
<span class="hl kwa">exit when</span> Token <span class="hl sym">&lt;</span> <span class="hl num">0</span><span class="hl sym">;</span>
<span class="hl kwa">end loop</span><span class="hl sym">;</span>

<span class="hl kwa">end</span> Node<span class="hl sym">;</span>

<span class="hl kwa">type</span> Node_Ring <span class="hl kwa">is array</span> <span class="hl sym">(</span>Ring_Index<span class="hl sym">)</span> <span class="hl kwa">of</span> Node<span class="hl sym">;</span>
Nodes <span class="hl sym">:</span> Node_Ring<span class="hl sym">;</span>

<span class="hl kwa">begin</span>
<span class="hl kwa">for</span> ID <span class="hl kwa">in</span> Nodes'<span class="hl kwa">Range loop</span>
Nodes <span class="hl sym">(</span>ID<span class="hl sym">).</span>Initialize <span class="hl sym">(</span>Identifier <span class="hl sym">=&gt;</span> ID<span class="hl sym">);</span>
<span class="hl kwa">end loop</span><span class="hl sym">;</span>

Semaphores <span class="hl sym">(</span>Ring_Index'First<span class="hl sym">).</span>Release
<span class="hl sym">(</span><span class="hl kwb">Integer</span>'Value <span class="hl sym">(</span>Ada<span class="hl sym">.</span>Command_Line<span class="hl sym">.</span>Argument <span class="hl sym">(</span><span class="hl num">1</span><span class="hl sym">)));</span>
<span class="hl kwa">end</span> Threadring<span class="hl sym">;</span>
20 changes: 20 additions & 0 deletions website/websites/u32/code/threadring.4.gnat.log
@@ -0,0 +1,20 @@

Mon, 09 May 2011 23:59:19 GMT

MAKE:
/usr/bin/gnatchop -r -w threadring.gnat-4.gnat
splitting threadring.gnat-4.gnat into:
threadring.adb
/usr/bin/gnatmake -gnatEpVn -O3 -fomit-frame-pointer -march=native -mfpmath=sse -msse2 -f threadring.adb -o threadring.gnat-4.gnat_run
gcc-4.4 -c -gnatEpVn -O3 -fomit-frame-pointer -march=native -mfpmath=sse -msse2 threadring.adb
gnatbind -x threadring.ali
gnatlink threadring.ali -fomit-frame-pointer -march=native -mfpmath=sse -msse2 -o threadring.gnat-4.gnat_run
0.38s to complete and log all make actions

COMMAND LINE:
./threadring.gnat-4.gnat_run 50000000

TIMED OUT after 3600s


PROGRAM OUTPUT:
1 change: 1 addition & 0 deletions website/websites/u32/data/data.csv
Expand Up @@ -675,6 +675,7 @@ threadring,java,4,50000000,894,30.698,137172,0,0% 0% 0% 100%,30.839
threadring,perl,3,50000000,489,493.011,498904,0,0% 0% 0% 100%,493.320
threadring,java,5,50000000,432,16.233,72668,0,0% 0% 0% 100%,16.249
threadring,ocaml,3,50000000,296,115.711,2952,0,0% 0% 0% 100%,115.745
threadring,gnat,4,50000000,949,0.000,6584,-1,1% 1% 0% 4%,3604.440
threadring,fsharp,2,50000000,612,0.000,33024,-1,0% 0% 0% 1%,3604.262
threadring,ruby,2,50000000,228,2112.200,17372,0,0% 0% 0% 100%,2111.227
threadring,vw,2,50000000,566,41.155,17632,0,0% 0% 0% 100%,41.152
Expand Down
3 changes: 3 additions & 0 deletions website/websites/u32/data/ndata.csv
Expand Up @@ -1955,6 +1955,9 @@ threadring,java,5,50000000,432,16.233,72668,0,0% 0% 0% 100%,16.249
threadring,ocaml,3,500000,296,1.188,2952,0,0% 0% 2% 100%,1.194
threadring,ocaml,3,5000000,296,11.669,2948,0,0% 0% 1% 100%,11.679
threadring,ocaml,3,50000000,296,115.711,2952,0,0% 0% 0% 100%,115.745
threadring,gnat,4,500000,949,1.972,6584,0,0% 1% 1% 99%,1.986
threadring,gnat,4,5000000,949,19.193,6588,0,0% 0% 0% 100%,19.217
threadring,gnat,4,50000000,949,0.000,6584,-1,1% 1% 0% 4%,3604.440
threadring,fsharp,2,500000,612,2.840,18088,0,0% 2% 0% 100%,2.855
threadring,fsharp,2,5000000,612,27.210,33416,0,0% 0% 0% 100%,27.235
threadring,fsharp,2,50000000,612,0.000,33024,-1,0% 0% 0% 1%,3604.262
Expand Down
Binary file modified website/websites/u32/data/u32_bulkdata.csv.bz2
Binary file not shown.

0 comments on commit d5f5f08

Please sign in to comment.