From - Sun Jan 06 19:26:49 2008
X-Account-Key: account2
X-UIDL: <477D4F88.2070504@shaw.ca>
X-Mozilla-Status: 0005
X-Mozilla-Status2: 00000000
X-Mozilla-Keys: $label2                                                                         
Return-Path: <pentam@shaw.ca>
Received: from hrndva-mxlb.mail.rr.com ([10.128.255.7])
          by hrndva-imta13.mail.rr.com with ESMTP
          id <20080103225319.JQDG29039.hrndva-imta13.mail.rr.com@hrndva-mxlb.mail.rr.com>
          for <jmccalpin@austin.rr.com>; Thu, 3 Jan 2008 22:53:19 +0000
X-IronPort: hrndva-mx04.mail.rr.com 296171809
X-RR-Connecting-IP: 128.143.137.19
Received: from ares.cs.virginia.edu ([128.143.137.19])
  by hrndva-mxlb.mail.rr.com with ESMTP; 03 Jan 2008 22:53:19 +0000
Received: from pd2mo3so.prod.shaw.ca (idcmail-mo1so.shaw.ca [24.71.223.10])
	by ares.cs.Virginia.EDU (8.13.8/8.13.8/UVACS-2007111101) with ESMTP id m03MrFLX009915
	for <mccalpin@cs.virginia.edu>; Thu, 3 Jan 2008 14:53:15 -0800 (PST)
Received: from pd2mr3so.prod.shaw.ca
 (pd2mr3so-qfe3.prod.shaw.ca [10.0.141.108]) by l-daemon
 (Sun ONE Messaging Server 6.0 HotFix 1.01 (built Mar 15 2004))
 with ESMTP id <0JU300BCB8SCMF30@l-daemon> for mccalpin@cs.virginia.edu; Thu,
 03 Jan 2008 14:53:00 -0700 (MST)
Received: from pn2ml4so.prod.shaw.ca ([10.0.121.148])
 by pd2mr3so.prod.shaw.ca (Sun Java System Messaging Server 6.2-7.05 (built Sep
 5 2006)) with ESMTP id <0JU3003HK6UWIU90@pd2mr3so.prod.shaw.ca> for
 mccalpin@cs.virginia.edu; Thu, 03 Jan 2008 14:11:22 -0700 (MST)
Received: from [192.168.1.108] ([68.147.43.233])
 by l-daemon (Sun ONE Messaging Server 6.0 HotFix 1.01 (built Mar 15 2004))
 with ESMTP id <0JU300F686UX8T60@l-daemon> for mccalpin@cs.virginia.edu; Thu,
 03 Jan 2008 14:11:21 -0700 (MST)
Date: Thu, 03 Jan 2008 14:11:36 -0700
From: Doug Fortune <pentam@shaw.ca>
Subject: stream results, AMD Athlon X2 4600+ dual core
To: "John D. McCalpin" <mccalpin@cs.virginia.edu>
Message-id: <477D4F88.2070504@shaw.ca>
MIME-version: 1.0
Content-type: text/plain; charset=ISO-8859-1; format=flowed
Content-transfer-encoding: 7bit
User-Agent: Thunderbird 1.5.0.14pre (X11/20071023)


re: http://www.cs.virginia.edu/stream/#PeeCeeResults


Prof McCalpin:

I don't know if you are still collecting results, but here they are
for my AMD Athlon X2 4600+ dual core Linux box.   I have installed
the fastest memory allowed by this motherboard.


Also, soon to arrive is my new HP Proliant DualCPU Quadcore DL360 G5
server, I notice you don't have any results for the Generation 5 box. 

Let me know if you are interested, and I'll forward that bench to you
when I can.

cheers
Doug Fortune
Pentam Aerospace
Calgary




gcc -O3 stream.c -o stream

./stream
-------------------------------------------------------------
STREAM version $Revision: 5.8 $

.
.
.
-------------------------------------------------------------
Function      Rate (MB/s)   Avg time     Min time     Max time
Copy:        3728.3001       0.0088       0.0086       0.0093
Scale:       3693.0179       0.0091       0.0087       0.0096
Add:         3993.6767       0.0122       0.0120       0.0127
Triad:       4052.3428       0.0122       0.0118       0.0128
-------------------------------------------------------------
Solution Validates
-------------------------------------------------------------




doug@warp5:~$ cat /proc/cpuinfo
processor       : 0
vendor_id       : AuthenticAMD
cpu family      : 15
model           : 75
model name      : AMD Athlon(tm) 64 X2 Dual Core Processor 4600+
stepping        : 2
cpu MHz         : 2400.000
cache size      : 512 KB
physical id     : 0
siblings        : 2
core id         : 0
cpu cores       : 2
fdiv_bug        : no
hlt_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 1
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge 
mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext 
fxsr_opt lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm cr8legacy ts 
fid vid ttp tm stc
bogomips        : 5000.18

processor       : 1
vendor_id       : AuthenticAMD
cpu family      : 15
model           : 75
model name      : AMD Athlon(tm) 64 X2 Dual Core Processor 4600+
stepping        : 2
cpu MHz         : 2400.000
cache size      : 512 KB
physical id     : 0
siblings        : 2
core id         : 1
cpu cores       : 2
fdiv_bug        : no
hlt_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 1
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge 
mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext 
fxsr_opt lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm cr8legacy ts 
fid vid ttp tm stc
bogomips        : 5000.18


From - Wed Jan 30 10:41:39 2008
X-Account-Key: account2
X-UIDL: <479FD027.7030005@azulsystems.com>
X-Mozilla-Status: 0015
X-Mozilla-Status2: 10000000
X-Mozilla-Keys: $label2                                                                         
Return-Path: <cliffc@azulsystems.com>
Received: from hrndva-mxlb.mail.rr.com ([10.128.255.4])
          by hrndva-imta02.mail.rr.com with ESMTP
          id <20080130011740.YKYP2031.hrndva-imta02.mail.rr.com@hrndva-mxlb.mail.rr.com>
          for <jmccalpin@austin.rr.com>; Wed, 30 Jan 2008 01:17:40 +0000
X-IronPort: hrndva-mx01.mail.rr.com 378973193
X-RR-Connecting-IP: 209.217.50.103
Received: from smtp-andy.catalog.com (HELO andy.catalog.com) ([209.217.50.103])
  by hrndva-mxlb.mail.rr.com with SMTP; 30 Jan 2008 01:17:40 +0000
Received: (qmail 11679 invoked by uid 10000); 30 Jan 2008 01:17:38 -0000
Delivered-To: mccalpin.com-john@mccalpin.com
Received: (qmail 11673 invoked by uid 0); 30 Jan 2008 01:17:38 -0000
Received: from unknown (HELO spamfilter.catalog.com) (209.217.50.108)
  by smtp3.catalog.com with SMTP; 30 Jan 2008 01:17:38 -0000
X-ASG-Debug-ID: 1201655853-29ec029d0000-TpEisi
X-Barracuda-URL: http://209.217.50.108:8000/cgi-bin/mark.cgi
Received: from apollo.azulsystems.com (localhost [127.0.0.1])
	by spamfilter.catalog.com (Spam Firewall) with ESMTP id 0A170CE0FF
	for <john@mccalpin.com>; Tue, 29 Jan 2008 19:17:33 -0600 (CST)
Received: from apollo.azulsystems.com (mail.azulsystems.com [208.66.102.26]) by spamfilter.catalog.com with ESMTP id GHf8uBCmdYEPCU1v for <john@mccalpin.com>; Tue, 29 Jan 2008 19:17:33 -0600 (CST)
Received: from apollo.azulsystems.com (localhost [127.0.0.1])
	by apollo.azulsystems.com (Postfix) with ESMTP id 2BAAB16265
	for <john@mccalpin.com>; Tue, 29 Jan 2008 17:22:19 -0800 (PST)
Received: from XCHMTV1.azulsystems.com (gw-10-10-110.azulsystems.com [10.10.110.1])
	by apollo.azulsystems.com (Postfix) with ESMTP id 1E0A516247
	for <john@mccalpin.com>; Tue, 29 Jan 2008 17:22:19 -0800 (PST)
Received: from [10.10.11.215] ([10.10.11.215]) by XCHMTV1.azulsystems.com over TLS secured channel with Microsoft SMTPSVC(6.0.3790.3959);
	 Tue, 29 Jan 2008 17:17:27 -0800
Message-ID: <479FD027.7030005@azulsystems.com>
Date: Tue, 29 Jan 2008 17:17:27 -0800
From: Cliff Click <cliffc@azulsystems.com>
Organization: Azul Systems
User-Agent: Thunderbird 2.0.0.9 (Windows/20071031)
MIME-Version: 1.0
To: john@mccalpin.com
Cc: David Lebsack <dlebsack@azulsystems.com>
X-ASG-Orig-Subj: Re: Java-based STREAM result for Azul?
Subject: Re: Java-based STREAM result for Azul?
References: <47602BC4.1090206@acm.org> <4798CEB0.7060908@austin.rr.com> <479928CD.1030804@azulsystems.com> <479A077D.7020308@austin.rr.com>
In-Reply-To: <479A077D.7020308@austin.rr.com>
Content-Type: multipart/mixed;
 boundary="------------010300060000060706000206"
X-OriginalArrivalTime: 30 Jan 2008 01:17:27.0340 (UTC) FILETIME=[E0794EC0:01C862DD]
X-Virus-Scanned: ClamAV using ClamSMTP
X-Barracuda-Connect: mail.azulsystems.com[208.66.102.26]
X-Barracuda-Start-Time: 1201655855
X-Barracuda-Virus-Scanned: by Catalog.com Spam Firewall at catalog.com
X-Barracuda-Spam-Score: 0.20
X-Barracuda-Spam-Status: No, SCORE=0.20 using per-user scores of TAG_LEVEL=4.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=5.0 tests=BSF_SC7_SA015e, HTML_MESSAGE
X-Barracuda-Spam-Report: Code version 3.1, rules version 3.1.40830
	Rule breakdown below
	 pts rule name              description
	---- ---------------------- --------------------------------------------------
	0.00 HTML_MESSAGE           BODY: HTML included in message
	0.20 BSF_SC7_SA015e         Custom Rule SA015e

This is a multi-part message in MIME format.
--------------010300060000060706000206
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffcc" text="#000000">
Ok, I did a Java version "The Right Way" - parallelize only around the
individual loops, just like the OpenMP pragmas suggest, and a full
barrier between loops.&nbsp; In order to get decent runtimes for each loop
(and not get swamped by thread start/stop - since I'm use a real "os
puts these threads to sleep" barrier) I raised N to 10billion
elements.&nbsp; This makes an array larger than Java can express (limit to
2billion elements), so I made the actual timing loops double-nested: a
total of 10billion elements get touched, but I end up repeating over
the same elements several times.<br>
<br>
The invariant is: N == N1 *&nbsp; a.length<br>
<br>
In the spirit of Java (and not Fortran MP) I stripe across the loops
expressly.<br>
Inner loops look like:<br>
<br>
<code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for( int i=0; i&lt;N1; i++ )&nbsp;&nbsp;&nbsp;&nbsp; // repeat inner loop, to
make runtime longer<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int j=min; j&lt;max; j++)&nbsp; // striped per CPU, still much
larger than all caches<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a[j] = b[j]+scalar*c[j];&nbsp; // original loop body<br>
</code><br>
with a little Java boilerplate around it to control the parallelism.<br>
I also tossed out the first 3 runs as warm-up, to give the JIT a chance
to profile &amp; compile optimized.<br>
Other than these changes, I made as clean a translation into Java from
C as I could; the printing and formatting remains all the same.&nbsp; So
does the verify, etc.&nbsp; Source code included.<br>
<br>
I hope this result is acceptable to you; I would very much like to see
an Azul result on the STREAM webpage.<br>
Let me know what you think!<br>
<br>
Thanks,<br>
Cliff<br>
<hr size="2" width="100%"><br>
<br>
[swx2021:bugs] java -Xmx25g -Xms25g -Xmn22g -XX:+UseParallelGC stream<br>
-------------------------------------------------------------<br>
STREAM version $Revision: 5.8 $<br>
-------------------------------------------------------------<br>
This system uses 8 bytes per DOUBLE PRECISION word.<br>
-------------------------------------------------------------<br>
Array size = 10000000000, Offset = 125000<br>
Total memory required = 228881.8 MB.<br>
Each test is run 20 times, but only<br>
the *best* time for each is used.<br>
-------------------------------------------------------------<br>
Number of Threads requested = 730<br>
-------------------------------------------------------------<br>
Printing one line per active thread....<br>
-------------------------------------------------------------<br>
Your clock granularity/precision appears to be 2 microseconds.<br>
Each test below will take on the order of 2373563 microseconds.<br>
&nbsp;&nbsp; (= 1186781 clock ticks)<br>
Increase the size of the arrays if this shows that<br>
you are not getting at least 20 clock ticks per test.<br>
-------------------------------------------------------------<br>
WARNING -- The above is only a rough guideline.<br>
For best results, please be sure you know the<br>
precision of your system timer.<br>
-------------------------------------------------------------<br>
Function&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Rate (MB/s)&nbsp;&nbsp; Avg time&nbsp;&nbsp;&nbsp;&nbsp; Min time&nbsp;&nbsp;&nbsp;&nbsp; Max time<br>
Copy:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 83968.3776&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.7372&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.9055&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.0023<br>
Scale:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 83223.5639&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.7872&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.9225&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.0820<br>
Add:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 90757.0839&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.3871&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.6444&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.7425<br>
Triad:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 91394.1568&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.3662&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.6260&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.6663<br>
-<br>
-------------------------------------------------------------<br>
Solution Validates<br>
-------------------------------------------------------------<br>
<br>
<hr size="2" width="100%"><br>
<br>
John D. McCalpin, Ph.D. wrote:
<blockquote cite="mid:479A077D.7020308@austin.rr.com" type="cite">
  <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
This is why my timers are external to the parallel sections -- I count
the wall time from before the first thread starts until after the last
thread stops.&nbsp;&nbsp; Bad scheduling can make performance worse, but it
cannot make performance "better".&nbsp;&nbsp; Of course the difficulty of
describing what you want the computer to do in these cases is one
reason why creating more threads than processors is uncommon in
homogeneous throughput applications.<br>
  <br>
Cliff Click wrote:
  <blockquote cite="mid:479928CD.1030804@azulsystems.com" type="cite">
    <meta content="text/html;charset=ISO-8859-1"
 http-equiv="Content-Type">
Looking over this benchmark more (the Java version &amp; the C version
I port'd from - NOT necessarily anything from your website), there's an
obvious flaw in the multi-threaded measurements: the many threads are
not required to run simultaneously.&nbsp; They are all released from the
barrier at the same time of course, but the OS is free to not bother to
give them any cycles.&nbsp; I can observe this unfair behavior easily on my
2-way linux box.<br>
    <br>
The effect is that if I launch 1000 threads on my 2-way box, I'll get
essentially 500 pairs-of-threads running, where each pair gets the
entire bandwidth of the machine.&nbsp; Sometimes during the outer-loop
best-of-10 tries the OS will switch threads and some poor loser thread
will get a really sucky time for that try.&nbsp; But unless the OS switches
him out on all 10 attempts it's likely he'll get at least 1 run in at
the full bandwidth of the machine.&nbsp; The best score per thread is
reported &amp; summed; the "sucky loser" score that realistically
represents a lack of machine resources is tossed out.<br>
    <br>
Hence the final score will be 500 pairs, each reporting 3G/sec or 1500
G/sec on my el-cheapo linux blade.&nbsp; Blah.&nbsp; If I switch to "avgtime"
instead of "mintime", and report bandwidth as (total memory moved) /
(total time across all threads)&nbsp; I get a much more reasonable result
that waffles around between 3G/sec to 4G/sec total depending on the
phase of the moon.<br>
    <br>
This next version reports a respectable 86G/sec on Azul's
currently-shipping hardware.<br>
Sample output and source code included.<br>
I'm open to suggestions on improving the measurement.<br>
    <br>
Thanks,<br>
Cliff<br>
    <br>
    <hr size="2" width="100%"><br>
[swx2021:bugs] java -Xmx50g -Xms50g -XX:+UseParallelGC STREAM 750<br>
-------------------------------------------------------------<br>
This system uses 8 bytes per DOUBLE PRECISION word.<br>
Array size = 2000000, Offset = 0<br>
Total memory required = 32043.45703125 MB.<br>
Each test is run 10 times, but only the *best* time for each is used.<br>
=== Warmup 0<br>
PID 0 begins setup (0 secs since last report)<br>
PID 0 begins to init array (0 secs since last report)<br>
PID 0 waits on lock (0 secs since last report)<br>
PID 0 starts main loop (0 secs since last report)<br>
PID: 0 Copy: 1075.8308521769286MB/sec&nbsp; Scale: 587.273524049533MB/sec&nbsp;
Add: 933.9771012072665MB/sec&nbsp; Triad: 603.0731362242764MB/sec&nbsp; <br>
PID 0 exits (2 secs since last report)<br>
=== Warmup 1<br>
PID 0 begins setup (0 secs since last report)<br>
PID 0 begins to init array (0 secs since last report)<br>
.....<br>
    <br>
PID: 662 PID 621 exits (17 secs since last report)<br>
Copy: 98.767475684564MB/sec&nbsp; Scale: 98.42488154787503MB/sec&nbsp; Add:
117.56838098470504MB/sec&nbsp; Triad: 115.49884828210581MB/sec&nbsp; <br>
PID: 35 PID 662 exits (17 secs since last report)<br>
Copy: 110.98078010891447MB/sec&nbsp; Scale: 107.66635593588056MB/sec&nbsp; Add:
122.13051560896352MB/sec&nbsp; Triad: 126.85864547720726MB/sec&nbsp; <br>
PID 35 exits (17 secs since last report)<br>
PID: 171 Copy: 114.38891792050323MB/sec&nbsp; Scale:
106.18831294828703MB/sec&nbsp; Add: 129.38213050929102MB/sec&nbsp; Triad:
130.12129703049794MB/sec&nbsp; <br>
PID 171 exits (17 secs since last report)<br>
PID: 389 Copy: 104.5781427749813MB/sec&nbsp; Scale:
109.57665020255511MB/sec&nbsp; Add: 122.10444364468034MB/sec&nbsp; Triad:
122.04530606238013MB/sec&nbsp; <br>
PID 389 exits (17 secs since last report)<br>
=== Caught the last thread.<br>
Average cpu bandwidth:&nbsp; Copy: 108MB/sec/cpu Scale: 108MB/sec/cpu Add:
123MB/sec/cpu Triad: 123MB/sec/cpu <br>
Total system bandwidth: Copy: 76287MB/sec&nbsp; Scale: 75932MB/sec&nbsp; Add:
86282MB/sec&nbsp; Triad: 86448MB/sec&nbsp; <br>
    <br>
    <hr size="2" width="100%"><br>
    <br>
    <br>
John D. McCalpin, Ph.D. wrote:
    <blockquote cite="mid:4798CEB0.7060908@austin.rr.com" type="cite">Sorry
for the delay -- lost almost two weeks with seasonal allergies and then
lost the last week packing and unpacking my office and lab (AMD is in
the midst of moving all its Austin folks to a new consolidated campus).
      <br>
      <br>
The code below looks good to me, but I don't know very much about
Java.&nbsp;&nbsp; It worked right away on my dual-core Windows box with 1 or 2
threads. <br>
      <br>
The biggest problem from a philosophical point of view is that all the
data is locally allocated, rather than globally shared.&nbsp;&nbsp; Of course
this is also true of the MPI version of STREAM, but it is obvious in
that case that there is no other choice, while a multithreaded Java
implementation might be expected to operated on a globally shared
memory pool (like the Fortran and C versions). <br>
      <br>
Is it difficult/impossible/slow to build a Java implementation that
uses multiple threads to update non-overlapping portions of a single
globally accessible address range? <br>
      <br>
john <br>
      <br>
Cliff Click wrote: <br>
      <blockquote type="cite">Can we use a multi-threaded Java port of
STREAM to measure bandwidth, and still call it 'STREAM'? <br>
Would you "bless" the code and add the results to your stream results
table? <br>
        <br>
A very plain-vanilla Java port of stream.c running on a 768-way Azul
box achieves 70Gb/sec of total system bandwidth - which puts us in the
top 20 results in a 14-U sized box.&nbsp; We'd like to tout that, if we can
get your blessing. <br>
        <br>
Thanks, <br>
Cliff </blockquote>
    </blockquote>
  </blockquote>
  <br>
  <br>
  <pre class="moz-signature" cols="72">-- 
John D. McCalpin, Ph.D.                                              "Dr. Bandwidth"
<a moz-do-not-send="true" class="moz-txt-link-abbreviated"
 href="mailto:john@mccalpin.com">john@mccalpin.com</a>                                          <a
 moz-do-not-send="true" class="moz-txt-link-freetext"
 href="http://www.streambench.org/">http://www.streambench.org/</a>
<a moz-do-not-send="true" class="moz-txt-link-freetext"
 href="http://home.austin.rr.com/mccalpin/">http://home.austin.rr.com/mccalpin/</a>                 <a
 moz-do-not-send="true" class="moz-txt-link-freetext"
 href="http://www.cs.virginia.edu/stream/">http://www.cs.virginia.edu/stream/</a></pre>
</blockquote>
</body>
</html>

--------------010300060000060706000206
Content-Type: text/plain;
 name="stream.java"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="stream.java"

/*-----------------------------------------------------------------------*/
/* Program: Stream                                                       */
/* Revision: $Id: stream.c,v 5.8 2007/02/19 23:57:39 mccalpin Exp mccalpin $ */
/* Original code developed by John D. McCalpin                           */
/* Programmers: John D. McCalpin                                         */
/*              Joe R. Zagar                                             */
/*                                                                       */
/* This program measures memory transfer rates in MB/s for simple        */
/* computational kernels coded in C.                                     */
/*-----------------------------------------------------------------------*/
/* Copyright 1991-2005: John D. McCalpin                                 */
/*-----------------------------------------------------------------------*/
/* License:                                                              */
/*  1. You are free to use this program and/or to redistribute           */
/*     this program.                                                     */
/*  2. You are free to modify this program for your own use,             */
/*     including commercial use, subject to the publication              */
/*     restrictions in item 3.                                           */
/*  3. You are free to publish results obtained from running this        */
/*     program, or from works that you derive from this program,         */
/*     with the following limitations:                                   */
/*     3a. In order to be referred to as "STREAM benchmark results",     */
/*         published results must be in conformance to the STREAM        */
/*         Run Rules, (briefly reviewed below) published at              */
/*         http://www.cs.virginia.edu/stream/ref.html                    */
/*         and incorporated herein by reference.                         */
/*         As the copyright holder, John McCalpin retains the            */
/*         right to determine conformity with the Run Rules.             */
/*     3b. Results based on modified source code or on runs not in       */
/*         accordance with the STREAM Run Rules must be clearly          */
/*         labelled whenever they are published.  Examples of            */
/*         proper labelling include:                                     */
/*         "tuned STREAM benchmark results"                              */
/*         "based on a variant of the STREAM benchmark code"             */
/*         Other comparable, clear and reasonable labelling is           */
/*         acceptable.                                                   */
/*     3c. Submission of results to the STREAM benchmark web site        */
/*         is encouraged, but not required.                              */
/*  4. Use of this program or creation of derived works based on this    */
/*     program constitutes acceptance of these licensing restrictions.   */
/*  5. Absolutely no warranty is expressed or implied.                   */
/*-----------------------------------------------------------------------*/

import java.util.concurrent.*;

/* INSTRUCTIONS:
 *
 *	1) Stream requires a good bit of memory to run.  Adjust the
 *          value of 'N' (below) to give a 'timing calibration' of 
 *          at least 20 clock-ticks.  This will provide rate estimates
 *          that should be good to about 5% precision.
 */

public abstract class stream {
  static final long N = 10000000000L;
  // Because Java is limited to 31bit array indices, I loop over the same
  // array data enough times to reach 'N' total array elements.  The actual
  // array is sized below, and must exceed any cache by a substantial amount.
  static final int N0 =    10000000;
  static final int N1 = (int)(N/N0);
  static final int NTIMES = 20;
  static final int OFFSET =  125000;

/*
 *	3) Compile the code with full optimization.  Many compilers
 *	   generate unreasonably bad code before the optimizer tightens
 *	   things up.  If the results are unreasonably good, on the
 *	   other hand, the optimizer might be too smart for me!
 *
 *         Try compiling with:
 *               cc -O stream_omp.c -o stream_omp
 *
 *         This is known to work on Cray, SGI, IBM, and Sun machines.
 *
 *
 *	4) Mail the results to mccalpin@cs.virginia.edu
 *	   Be sure to include:
 *		a) computer hardware model number and software revision
 *		b) the compiler flags
 *		c) all of the output from the test case.
 * Thanks!
 *
 */

  static final String HLINE = "-------------------------------------------------------------\n";

  static double	a[] = new double[N0+OFFSET];
  static double	b[] = new double[N0+OFFSET];
  static double	c[] = new double[N0+OFFSET];

  static double	avgtime[] = {0.0, 0.0, 0.0, 0.0};
  static double	maxtime[] = {0.0, 0.0, 0.0, 0.0};
  static double	mintime[] = {Double.MAX_VALUE,Double.MAX_VALUE,Double.MAX_VALUE,Double.MAX_VALUE};

  static final String label[] = {"Copy:      ", "Scale:     ",  "Add:       ", "Triad:     "};

  static final double BytesPerWord = 8.0;
  static final double bytes[] = {
    2 * BytesPerWord * N,
    2 * BytesPerWord * N,
    3 * BytesPerWord * N,
    3 * BytesPerWord * N
  };

  // Worker threads
  static Thread workers[];
  static volatile stream _work;
  static CyclicBarrier _barrier_start;
  static CyclicBarrier _barrier_stop;
  abstract boolean work( final int min, final int max );

  void do_par( ) throws InterruptedException, BrokenBarrierException {
    _work = this;               // Inform workers of what to do
    _barrier_start.await();     // Start workers
    _barrier_stop .await();     // Main continues when work is done
  }


  static public void main( String args[] ) throws InterruptedException, BrokenBarrierException {
    /* --- SETUP --- determine precision and check timing --- */
    System.out.printf(HLINE);
    System.out.printf("STREAM version $Revision: 5.8 $\n");
    System.out.printf(HLINE);
    System.out.printf("This system uses %d bytes per DOUBLE PRECISION word.\n", (int)BytesPerWord);

    System.out.printf(HLINE);
    System.out.printf("Array size = %d, Offset = %d\n" , N, OFFSET);
    System.out.printf("Total memory required = %.1f MB.\n",
	(3.0 * BytesPerWord) * ( (double) N / 1048576.0));
    System.out.printf("Each test is run %d times, but only\n", NTIMES);
    System.out.printf("the *best* time for each is used.\n");

    System.out.printf(HLINE);
    final int num_threads = args.length > 0 ? Integer.parseInt(args[0]) : Runtime.getRuntime().availableProcessors();
    System.out.printf ("Number of Threads requested = %d\n",num_threads);
    // Classic cyclic-barriers.  Number of threads is +1, so the
    // workers will await for the main thread before proceeding.
    _barrier_start = new CyclicBarrier(num_threads+1);
    _barrier_stop  = new CyclicBarrier(num_threads+1);
    // Array of worker threads
    workers = new Thread[num_threads];
    final int NSLICE = N0/num_threads;
    for( int i=0; i<num_threads; i++ ) {
      final int pid = i;
      final int min = pid*NSLICE;
      final int max = (i == num_threads-1) ? N0 :(pid+1)*NSLICE;
      workers[i] = new Thread() { public void run() { 
        // Workers do_forever: await barrier, then do "_work"
        try { 
          _barrier_start.await();
          while( _work.work(min,max) ) {
            _barrier_stop .await();
            _barrier_start.await();
          }
        }
        catch( InterruptedException   e ) { return; }
        catch( BrokenBarrierException e ) { return; }
      } };
      workers[i].start();
    }

    System.out.printf(HLINE);
    System.out.printf ("Printing one line per active thread....\n");

    /* Get initial value for system clock. */
    new stream() { public boolean work( final int min, final int max ) { 
      //System.out.println(" min="+min+" max="+max);
      for( int j=min; j<max; j++ ) {
        a[j] = 1.0;
        b[j] = 2.0;
        c[j] = 0.0;
      }
      return true;              // do not kill worker
    } }.do_par();

    System.out.printf(HLINE);

    int	quantum = checktick();
    if( quantum >= 1 )
      System.out.printf("Your clock granularity/precision appears to be %d microseconds.\n", quantum);
    else {
      System.out.printf("Your clock granularity appears to be less than one microsecond.\n");
      quantum = 1;
    }

    double t = mysecond();
    new stream() { public boolean work( final int min, final int max ) { 
      for( int j=min; j<max; j++ )
        a[j] = 2.0E0 * a[j];
      return true;              // do not kill worker
    } }.do_par();
    t = 1.0E6 * (mysecond() - t);

    System.out.printf("Each test below will take on the order of %d microseconds.\n", (int) t  );
    System.out.printf("   (= %d clock ticks)\n", (int) (t/quantum) );
    System.out.printf("Increase the size of the arrays if this shows that\n");
    System.out.printf("you are not getting at least 20 clock ticks per test.\n");

    System.out.printf(HLINE);

    System.out.printf("WARNING -- The above is only a rough guideline.\n");
    System.out.printf("For best results, please be sure you know the\n");
    System.out.printf("precision of your system timer.\n");
    System.out.printf(HLINE);
    
    /*	--- MAIN LOOP --- repeat test cases NTIMES times --- */

    double times[][] = new double[4][NTIMES];
    final double scalar = 3.0;
    for( int k=0; k<NTIMES; k++ ) {
      times[0][k] = mysecond();
      new stream() { public boolean work( final int min, final int max ) { 
        for( int i=0; i<N1; i++ )
          for(int j=min; j<max; j++)
            c[j] = a[j];
        return true;            // do not kill worker
      } }.do_par();
      times[0][k] = mysecond() - times[0][k];
	
      times[1][k] = mysecond();
      new stream() { public boolean work( final int min, final int max ) { 
        for( int i=0; i<N1; i++ )
          for(int j=min; j<max; j++)
            b[j] = scalar*c[j];
        return true;            // do not kill worker
      } }.do_par();
      times[1][k] = mysecond() - times[1][k];
	
      times[2][k] = mysecond();
      new stream() { public boolean work( final int min, final int max ) { 
        for( int i=0; i<N1; i++ )
          for(int j=min; j<max; j++)
            c[j] = a[j]+b[j];
        return true;            // do not kill worker
      } }.do_par();
      times[2][k] = mysecond() - times[2][k];
	
      times[3][k] = mysecond();
      new stream() { public boolean work( final int min, final int max ) { 
        for( int i=0; i<N1; i++ )
          for(int j=min; j<max; j++)
            a[j] = b[j]+scalar*c[j];
        return true;            // do not kill worker
      } }.do_par();
      times[3][k] = mysecond() - times[3][k];
    }

    // Shutdown workers
    _work = new stream() { public boolean work( final int min, final int max ) { return false; } };
    _barrier_start.await();

    /*	--- SUMMARY --- */
    for( int k=3; k<NTIMES; k++) { /* note -- skip first three iterations as warmup */
      for(int j=0; j<4; j++) {
        avgtime[j] = avgtime[j] + times[j][k];
        mintime[j] = Math.min(mintime[j], times[j][k]);
        maxtime[j] = Math.max(maxtime[j], times[j][k]);
      }
    }
    
    System.out.printf("Function      Rate (MB/s)   Avg time     Min time     Max time\n");
    for(int j=0; j<4; j++) {
      avgtime[j] = avgtime[j]/(double)(NTIMES-1);

      System.out.printf("%s%11.4f  %11.4f  %11.4f  %11.4f\n", label[j],
             1.0E-06 * bytes[j]/mintime[j],
             avgtime[j],
             mintime[j],
             maxtime[j]);
    }
    System.out.printf(HLINE);

    /* --- Check Results --- */
    checkSTREAMresults();
    System.out.printf(HLINE);
  }

  static int checktick() {
    final int M = 20;
    double timesfound[] = new double[M];

/*  Collect a sequence of M unique time values from the system. */
    for( int i = 0; i < timesfound.length; i++) {
      final double t1 = mysecond();
      double t2;
      while( ((t2=mysecond()) - t1) < 1.0E-6 )
        ;
      timesfound[i] = t2;
    }

/*
 * Determine the minimum difference between these M values.
 * This result will be our estimate (in microseconds) for the
 * clock granularity.
 */

    double minDelta = 1000000;
    for( int i = 1; i < timesfound.length; i++ ) {
      final double Delta = (int)( 1.0E6 * (timesfound[i]-timesfound[i-1]));
      minDelta = Math.min(minDelta, Math.max(Delta,0));
    }
    
    return (int)minDelta;
  }

/* A gettimeofday routine to give access to the wall
   clock timer on most UNIX-like systems.  */

  static double mysecond() {
    return ((double)System.nanoTime())/ 1.0e9;
  }

  static void checkSTREAMresults () {

    /* reproduce initialization */
    double aj = 1.0;
    double bj = 2.0;
    double cj = 0.0;
    /* a[] is modified during timing check */
    aj = 2.0E0 * aj;
    /* now execute timing loop */
    final double scalar = 3.0;
    for( int k=0; k<NTIMES; k++) {
      cj = aj;
      bj = scalar*cj;
      cj = aj+bj;
      aj = bj+scalar*cj;
    }
    aj = aj * (double) (N);
    bj = bj * (double) (N);
    cj = cj * (double) (N);
    
    double asum = 0.0;
    double bsum = 0.0;
    double csum = 0.0;

    for(int j=0; j<N0; j++) {
      asum += a[j]*N1;
      bsum += b[j]*N1;
      csum += c[j]*N1;
    }
    //System.out.printf ("Results Comparison: \n");
    //System.out.printf ("        Expected  : %f %f %f \n",aj,bj,cj);
    //System.out.printf ("        Observed  : %f %f %f \n",asum,bsum,csum);

    final double epsilon = 1.e-8;
    if (Math.abs(aj-asum)/asum > epsilon) {
      System.out.printf ("Failed Validation on array a[]\n");
      System.out.printf ("        Expected  : %f \n",aj);
      System.out.printf ("        Observed  : %f \n",asum);
    }
    else if (Math.abs(bj-bsum)/bsum > epsilon) {
      System.out.printf ("Failed Validation on array b[]\n");
      System.out.printf ("        Expected  : %f \n",bj);
      System.out.printf ("        Observed  : %f \n",bsum);
    }
    else if (Math.abs(cj-csum)/csum > epsilon) {
      System.out.printf ("Failed Validation on array c[]\n");
      System.out.printf ("        Expected  : %f \n",cj);
      System.out.printf ("        Observed  : %f \n",csum);
    }
    else {
      System.out.printf ("Solution Validates\n");
    }
  }

}

--------------010300060000060706000206
Content-Type: text/x-vcard; charset=utf-8;
 name="cliffc.vcf"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
 filename="cliffc.vcf"

begin:vcard
fn:Dr. Cliff Click
n:Click;Cliff
org:Azul Systems
adr;dom:;;1600 Plymouth St;Mountain View;CA;94043
email;internet:cliffc@acm.org
title:Distinguished Engineer
tel;work:650-230-6512
tel;home:408-323-8283
tel;cell:408-307-0321
x-mozilla-html:TRUE
url:http://www.azulsystems.com
version:2.1
end:vcard


--------------010300060000060706000206--


From - Mon Apr 07 21:45:36 2008
X-Account-Key: account2
X-UIDL: <OF4C5BF6A7.884E81C6-ON87257424.0077A4C2-86257424.0083C6E1@us.ibm.com>
X-Mozilla-Status: 0005
X-Mozilla-Status2: 00000000
X-Mozilla-Keys: $label2                                                                         
Return-Path: <lyvu@us.ibm.com>
Received: from hrndva-mxlb.mail.rr.com ([10.128.255.4])
          by hrndva-imta06.mail.rr.com with ESMTP
          id <20080408003506.KZVG16536.hrndva-imta06.mail.rr.com@hrndva-mxlb.mail.rr.com>
          for <jmccalpin@austin.rr.com>; Tue, 8 Apr 2008 00:35:06 +0000
X-IronPort: hrndva-mx01.mail.rr.com 585437697
X-RR-Connecting-IP: 128.143.137.19
Received: from ares.cs.virginia.edu ([128.143.137.19])
  by hrndva-mxlb.mail.rr.com with ESMTP; 08 Apr 2008 00:35:05 +0000
Received: from over.ny.us.ibm.com (over.ny.us.ibm.com [32.97.182.150])
	by ares.cs.Virginia.EDU (8.13.8/8.13.8/UVACS-2007111101) with ESMTP id m380Z03d005900
	for <mccalpin@cs.virginia.edu>; Mon, 7 Apr 2008 17:35:00 -0700 (PDT)
Received: from e31.co.us.ibm.com (e31.co.us.ibm.com [32.97.110.149])
	by pokfb.esmtp.ibm.com (8.12.11.20060308/8.12.11) with ESMTP id m37NxSGQ017661
	(version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK)
	for <mccalpin@cs.virginia.edu>; Mon, 7 Apr 2008 19:59:29 -0400
Received: from d03relay04.boulder.ibm.com (d03relay04.boulder.ibm.com [9.17.195.106])
	by e31.co.us.ibm.com (8.13.8/8.13.8) with ESMTP id m37NxMZU015108
	for <mccalpin@cs.virginia.edu>; Mon, 7 Apr 2008 19:59:22 -0400
Received: from d03av02.boulder.ibm.com (d03av02.boulder.ibm.com [9.17.195.168])
	by d03relay04.boulder.ibm.com (8.13.8/8.13.8/NCO v8.7) with ESMTP id m37NxMv5127800
	for <mccalpin@cs.virginia.edu>; Mon, 7 Apr 2008 17:59:22 -0600
Received: from d03av02.boulder.ibm.com (loopback [127.0.0.1])
	by d03av02.boulder.ibm.com (8.12.11.20060308/8.13.3) with ESMTP id m37NxMjq032674
	for <mccalpin@cs.virginia.edu>; Mon, 7 Apr 2008 17:59:22 -0600
Received: from d03nm116.boulder.ibm.com (d03nm116.boulder.ibm.com [9.17.195.142])
	by d03av02.boulder.ibm.com (8.12.11.20060308/8.12.11) with ESMTP id m37NxMj5032671
	for <mccalpin@cs.virginia.edu>; Mon, 7 Apr 2008 17:59:22 -0600
To: mccalpin@cs.virginia.edu
Cc: jacobt@us.ibm.com
MIME-Version: 1.0
Subject: STREAM results for IBM Power 595 (5.0 GHz, POWER6)
X-Mailer: Lotus Notes Release 6.0.2CF1 June 9, 2003
Message-ID: <OF4C5BF6A7.884E81C6-ON87257424.0077A4C2-86257424.0083C6E1@us.ibm.com>
From: Ly Vu <lyvu@us.ibm.com>
Date: Mon, 7 Apr 2008 18:59:21 -0500
X-MIMETrack: Serialize by Router on D03NM116/03/M/IBM(Release 8.0|August 02, 2007) at 04/07/2008
 17:59:21,
	Serialize complete at 04/07/2008 17:59:21
Content-Type: multipart/alternative; boundary="=_alternative 0083C6E086257424_="

This is a multipart message in MIME format.
--=_alternative 0083C6E086257424_=
Content-Type: text/plain; charset="US-ASCII"

These are standard STREAM results on an IBM Power 595
with sixty-four 5.0 GHz cores. This is a POWER6 SMP machine.
Large pages were used in all cases.

Function     Rate (MB/s)  Avg time   Min time  Max time
Copy:           679207.1738             .0509             .0506  .0515
Scale:          624707.8380             .0554             .0550  .0557
Add:            777334.8234             .0664             .0663  .0666
Triad:          805804.6461             .0640             .0640  .0640

Here is the full output file:
--------------------------------------------------
 Requesting LARGE pages
 Running TRIAD kernel
 Setting up for  64  chips
 Setting up for  64  threads
 Number of segments per array =  64
 Reading cpu binding list for page placement
 DATA binding list :  0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 
21 22 23 24 25 26 27 28 29 30 31 32 3
3 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 
58 59 60 61 62 63
 Beginning allocation of data segments....
GETSHRSEG: requesting large pages
GETSHRSEG ENTRY: shmgetflag -2147481216

 Starting Initialization
 Done With Initialization
 a(1) 1.00000000000000000
 a(M) 1.00000000000000000
 b(1) 1.00000000000000000
 b(M) 1.00000000000000000
 c(1) 1.00000000000000000
 c(M) 1.00000000000000000

 Moff =  75775
 Incremental Offset =  706
 504403158265495552 504403175445370376 504403192625245208
----------------------------------------------
 Double precision appears to have 16 digits of accuracy
 Assuming 8 bytes per DOUBLE PRECISION word
----------------------------------------------
 Array size = 2147407873
 The total memory requirement is   49150 MB
 You are running each test   5 times
 --
 The *best* time for each test is used
 *EXCLUDING* the first and last iterations
 ----------------------------------------------------
 Your clock granularity appears to be less than one microsecond
 Your clock granularity/precision appears to be          1 microseconds
 ----------------------------------------------------
Function     Rate (MB/s)  Avg time   Min time  Max time
Copy:           679207.1738             .0509             .0506  .0515
Scale:          624707.8380             .0554             .0550  .0557
Add:            777334.8234             .0664             .0663  .0666
Triad:          805804.6461             .0640             .0640  .0640
 ----------------------------------------------------
 Solution Validates!
 ----------------------------------------------------
--=_alternative 0083C6E086257424_=
Content-Type: text/html; charset="US-ASCII"


<br><font size=2 face="sans-serif">These are standard STREAM results on
an IBM Power 595</font>
<br><font size=2 face="sans-serif">with sixty-four 5.0 GHz cores. This
is a POWER6 SMP machine.</font>
<br><font size=2 face="sans-serif">Large pages were used in all cases.</font>
<br>
<br><font size=2 face="sans-serif">Function &nbsp; &nbsp; Rate (MB/s) &nbsp;Avg
time &nbsp; Min time &nbsp;Max time</font>
<br><font size=2 face="sans-serif">Copy: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
679207.1738 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .0509 &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; .0506 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
.0515</font>
<br><font size=2 face="sans-serif">Scale: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;624707.8380
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .0554 &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; .0550 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .0557</font>
<br><font size=2 face="sans-serif">Add: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp;777334.8234 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .0664 &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .0663 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; .0666</font>
<br><font size=2 face="sans-serif">Triad: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;805804.6461
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .0640 &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; .0640 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .0640</font>
<br>
<br><font size=2 face="sans-serif">Here is the full output file:</font>
<br><font size=2 face="sans-serif">--------------------------------------------------</font>
<br><font size=2 face="sans-serif">&nbsp;Requesting LARGE pages</font>
<br><font size=2 face="sans-serif">&nbsp;Running TRIAD kernel</font>
<br><font size=2 face="sans-serif">&nbsp;Setting up for &nbsp;64 &nbsp;chips</font>
<br><font size=2 face="sans-serif">&nbsp;Setting up for &nbsp;64 &nbsp;threads</font>
<br><font size=2 face="sans-serif">&nbsp;Number of segments per array =
&nbsp;64</font>
<br><font size=2 face="sans-serif">&nbsp;Reading cpu binding list for page
placement</font>
<br><font size=2 face="sans-serif">&nbsp;DATA binding list : &nbsp;0 1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
29 30 31 32 3</font>
<br><font size=2 face="sans-serif">3 34 35 36 37 38 39 40 41 42 43 44 45
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63</font>
<br><font size=2 face="sans-serif">&nbsp;Beginning allocation of data segments....</font>
<br><font size=2 face="sans-serif">GETSHRSEG: requesting large pages</font>
<br><font size=2 face="sans-serif">GETSHRSEG ENTRY: shmgetflag -2147481216</font>
<br>
<br><font size=2 face="sans-serif">&nbsp;Starting Initialization</font>
<br><font size=2 face="sans-serif">&nbsp;Done With Initialization</font>
<br><font size=2 face="sans-serif">&nbsp;a(1) 1.00000000000000000</font>
<br><font size=2 face="sans-serif">&nbsp;a(M) 1.00000000000000000</font>
<br><font size=2 face="sans-serif">&nbsp;b(1) 1.00000000000000000</font>
<br><font size=2 face="sans-serif">&nbsp;b(M) 1.00000000000000000</font>
<br><font size=2 face="sans-serif">&nbsp;c(1) 1.00000000000000000</font>
<br><font size=2 face="sans-serif">&nbsp;c(M) 1.00000000000000000</font>
<br>
<br><font size=2 face="sans-serif">&nbsp;Moff = &nbsp;75775</font>
<br><font size=2 face="sans-serif">&nbsp;Incremental Offset = &nbsp;706</font>
<br><font size=2 face="sans-serif">&nbsp;504403158265495552 504403175445370376
504403192625245208</font>
<br><font size=2 face="sans-serif">----------------------------------------------</font>
<br><font size=2 face="sans-serif">&nbsp;Double precision appears to have
16 digits of accuracy</font>
<br><font size=2 face="sans-serif">&nbsp;Assuming 8 bytes per DOUBLE PRECISION
word</font>
<br><font size=2 face="sans-serif">----------------------------------------------</font>
<br><font size=2 face="sans-serif">&nbsp;Array size = 2147407873</font>
<br><font size=2 face="sans-serif">&nbsp;The total memory requirement is
&nbsp; 49150 MB</font>
<br><font size=2 face="sans-serif">&nbsp;You are running each test &nbsp;
5 times</font>
<br><font size=2 face="sans-serif">&nbsp;--</font>
<br><font size=2 face="sans-serif">&nbsp;The *best* time for each test
is used</font>
<br><font size=2 face="sans-serif">&nbsp;*EXCLUDING* the first and last
iterations</font>
<br><font size=2 face="sans-serif">&nbsp;----------------------------------------------------</font>
<br><font size=2 face="sans-serif">&nbsp;Your clock granularity appears
to be less than one microsecond</font>
<br><font size=2 face="sans-serif">&nbsp;Your clock granularity/precision
appears to be &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;1 microseconds</font>
<br><font size=2 face="sans-serif">&nbsp;----------------------------------------------------</font>
<br><font size=2 face="sans-serif">Function &nbsp; &nbsp; Rate (MB/s) &nbsp;Avg
time &nbsp; Min time &nbsp;Max time</font>
<br><font size=2 face="sans-serif">Copy: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
679207.1738 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .0509 &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; .0506 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
.0515</font>
<br><font size=2 face="sans-serif">Scale: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;624707.8380
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .0554 &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; .0550 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .0557</font>
<br><font size=2 face="sans-serif">Add: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp;777334.8234 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .0664 &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .0663 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; .0666</font>
<br><font size=2 face="sans-serif">Triad: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;805804.6461
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .0640 &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; .0640 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .0640</font>
<br><font size=2 face="sans-serif">&nbsp;----------------------------------------------------</font>
<br><font size=2 face="sans-serif">&nbsp;Solution Validates!</font>
<br><font size=2 face="sans-serif">&nbsp;----------------------------------------------------</font>
--=_alternative 0083C6E086257424_=--


From - Mon Apr 07 21:45:36 2008
X-Account-Key: account2
X-UIDL: <OFFD4D551C.5536E642-ON87257424.00782AE4-86257425.000028AB@us.ibm.com>
X-Mozilla-Status: 0005
X-Mozilla-Status2: 00000000
X-Mozilla-Keys: $label2                                                                         
Return-Path: <lyvu@us.ibm.com>
Received: from hrndva-mxlb.mail.rr.com ([10.128.255.13])
          by hrndva-imta07.mail.rr.com with ESMTP
          id <20080408000156.TNSL27158.hrndva-imta07.mail.rr.com@hrndva-mxlb.mail.rr.com>
          for <jmccalpin@austin.rr.com>; Tue, 8 Apr 2008 00:01:56 +0000
X-IronPort: hrndva-mx10.mail.rr.com 446907233
X-RR-Connecting-IP: 128.143.137.19
Received: from ares.cs.virginia.edu ([128.143.137.19])
  by hrndva-mxlb.mail.rr.com with ESMTP; 08 Apr 2008 00:01:56 +0000
Received: from e34.co.us.ibm.com (e34.co.us.ibm.com [32.97.110.152])
	by ares.cs.Virginia.EDU (8.13.8/8.13.8/UVACS-2007111101) with ESMTP id m3801oOE006875
	for <mccalpin@cs.virginia.edu>; Mon, 7 Apr 2008 17:01:51 -0700 (PDT)
Received: from d03relay02.boulder.ibm.com (d03relay02.boulder.ibm.com [9.17.195.227])
	by e34.co.us.ibm.com (8.13.8/8.13.8) with ESMTP id m37NxqMp008150
	for <mccalpin@cs.virginia.edu>; Mon, 7 Apr 2008 19:59:52 -0400
Received: from d03av02.boulder.ibm.com (d03av02.boulder.ibm.com [9.17.195.168])
	by d03relay02.boulder.ibm.com (8.13.8/8.13.8/NCO v8.7) with ESMTP id m3801jNg220946
	for <mccalpin@cs.virginia.edu>; Mon, 7 Apr 2008 18:01:45 -0600
Received: from d03av02.boulder.ibm.com (loopback [127.0.0.1])
	by d03av02.boulder.ibm.com (8.12.11.20060308/8.13.3) with ESMTP id m3801iEQ007531
	for <mccalpin@cs.virginia.edu>; Mon, 7 Apr 2008 18:01:44 -0600
Received: from d03nm116.boulder.ibm.com (d03nm116.boulder.ibm.com [9.17.195.142])
	by d03av02.boulder.ibm.com (8.12.11.20060308/8.12.11) with ESMTP id m3801ijE007523
	for <mccalpin@cs.virginia.edu>; Mon, 7 Apr 2008 18:01:44 -0600
To: mccalpin@cs.virginia.edu
Cc: Jacob Thomas <jacobt@us.ibm.com>
MIME-Version: 1.0
Subject: STREAM results for IBM Power 575 (4.7GHz, POWER6)
X-Mailer: Lotus Notes Release 6.0.2CF1 June 9, 2003
Message-ID: <OFFD4D551C.5536E642-ON87257424.00782AE4-86257425.000028AB@us.ibm.com>
From: Ly Vu <lyvu@us.ibm.com>
Date: Mon, 7 Apr 2008 19:01:44 -0500
X-MIMETrack: Serialize by Router on D03NM116/03/M/IBM(Release 8.0|August 02, 2007) at 04/07/2008
 18:01:44,
	Serialize complete at 04/07/2008 18:01:44
Content-Type: multipart/alternative; boundary="=_alternative 000028A986257425_="

This is a multipart message in MIME format.
--=_alternative 000028A986257425_=
Content-Type: text/plain; charset="US-ASCII"

These are standard STREAM results on an IBM Power 575
with thirty-two 4.7 GHz cores. This is a POWER6 SMP machine.
Large pages were used in all cases.

Function     Rate (MB/s)  Avg time   Min time  Max time
Copy:           142708.1898             .1204             .1204  .1205
Scale:          142612.4358             .1205             .1205  .1205
Add:            159010.6786             .1624             .1621  .1628
Triad:          162844.0220             .1585             .1582  .1588

Here is the full output file:
--------------------------------------------------
 Environment variable MEMSUITE set to DETAILS
 Requesting LARGE pages
 Running TRIAD kernel
 Setting up for  32  chips
 Setting up for  32  threads
 Number of segments per array =  32
 Reading cpu binding list for page placement
 DATA binding list :  0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 
21 22 23 24 25 26 27 28 29 30 31
 Beginning allocation of data segments....
GETSHRSEG: requesting large pages
GETSHRSEG ENTRY: shmgetflag -2147481216

 Moff =  75776
 Incremental Offset =  678
 504403158265495552 504403166855435560 504403175445375576
----------------------------------------------
 Double precision appears to have 16 digits of accuracy
 Assuming 8 bytes per DOUBLE PRECISION word
----------------------------------------------
 Array size = 1073666048
 The total memory requirement is   24574 MB
 You are running each test   5 times
 --
 The *best* time for each test is used
 *EXCLUDING* the first and last iterations
 ----------------------------------------------------
 Your clock granularity appears to be less than one microsecond
 Your clock granularity/precision appears to be          1 microseconds
 ----------------------------------------------------
Function     Rate (MB/s)  Avg time   Min time  Max time
Copy:           142708.1898             .1204             .1204  .1205
Scale:          142612.4358             .1205             .1205  .1205
Add:            159010.6786             .1624             .1621  .1628
Triad:          162844.0220             .1585             .1582  .1588
 ----------------------------------------------------
 Solution Validates!
 ----------------------------------------------------
--=_alternative 000028A986257425_=
Content-Type: text/html; charset="US-ASCII"


<br><font size=2 face="sans-serif">These are standard STREAM results on
an IBM Power 575</font>
<br><font size=2 face="sans-serif">with thirty-two 4.7 GHz cores. This
is a POWER6 SMP machine.</font>
<br><font size=2 face="sans-serif">Large pages were used in all cases.</font>
<br>
<br><font size=2 face="sans-serif">Function &nbsp; &nbsp; Rate (MB/s) &nbsp;Avg
time &nbsp; Min time &nbsp;Max time</font>
<br><font size=2 face="sans-serif">Copy: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
142708.1898 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .1204 &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; .1204 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
.1205</font>
<br><font size=2 face="sans-serif">Scale: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;142612.4358
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .1205 &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; .1205 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .1205</font>
<br><font size=2 face="sans-serif">Add: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp;159010.6786 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .1624 &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .1621 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; .1628</font>
<br><font size=2 face="sans-serif">Triad: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;162844.0220
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .1585 &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; .1582 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .1588</font>
<br>
<br><font size=2 face="sans-serif">Here is the full output file:</font>
<br><font size=2 face="sans-serif">--------------------------------------------------</font>
<br><font size=2 face="sans-serif">&nbsp;Environment variable MEMSUITE
set to DETAILS</font>
<br><font size=2 face="sans-serif">&nbsp;Requesting LARGE pages</font>
<br><font size=2 face="sans-serif">&nbsp;Running TRIAD kernel</font>
<br><font size=2 face="sans-serif">&nbsp;Setting up for &nbsp;32 &nbsp;chips</font>
<br><font size=2 face="sans-serif">&nbsp;Setting up for &nbsp;32 &nbsp;threads</font>
<br><font size=2 face="sans-serif">&nbsp;Number of segments per array =
&nbsp;32</font>
<br><font size=2 face="sans-serif">&nbsp;Reading cpu binding list for page
placement</font>
<br><font size=2 face="sans-serif">&nbsp;DATA binding list : &nbsp;0 1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
29 30 31</font>
<br><font size=2 face="sans-serif">&nbsp;Beginning allocation of data segments....</font>
<br><font size=2 face="sans-serif">GETSHRSEG: requesting large pages</font>
<br><font size=2 face="sans-serif">GETSHRSEG ENTRY: shmgetflag -2147481216</font>
<br>
<br><font size=2 face="sans-serif">&nbsp;Moff = &nbsp;75776</font>
<br><font size=2 face="sans-serif">&nbsp;Incremental Offset = &nbsp;678</font>
<br><font size=2 face="sans-serif">&nbsp;504403158265495552 504403166855435560
504403175445375576</font>
<br><font size=2 face="sans-serif">----------------------------------------------</font>
<br><font size=2 face="sans-serif">&nbsp;Double precision appears to have
16 digits of accuracy</font>
<br><font size=2 face="sans-serif">&nbsp;Assuming 8 bytes per DOUBLE PRECISION
word</font>
<br><font size=2 face="sans-serif">----------------------------------------------</font>
<br><font size=2 face="sans-serif">&nbsp;Array size = 1073666048</font>
<br><font size=2 face="sans-serif">&nbsp;The total memory requirement is
&nbsp; 24574 MB</font>
<br><font size=2 face="sans-serif">&nbsp;You are running each test &nbsp;
5 times</font>
<br><font size=2 face="sans-serif">&nbsp;--</font>
<br><font size=2 face="sans-serif">&nbsp;The *best* time for each test
is used</font>
<br><font size=2 face="sans-serif">&nbsp;*EXCLUDING* the first and last
iterations</font>
<br><font size=2 face="sans-serif">&nbsp;----------------------------------------------------</font>
<br><font size=2 face="sans-serif">&nbsp;Your clock granularity appears
to be less than one microsecond</font>
<br><font size=2 face="sans-serif">&nbsp;Your clock granularity/precision
appears to be &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;1 microseconds</font>
<br><font size=2 face="sans-serif">&nbsp;----------------------------------------------------</font>
<br><font size=2 face="sans-serif">Function &nbsp; &nbsp; Rate (MB/s) &nbsp;Avg
time &nbsp; Min time &nbsp;Max time</font>
<br><font size=2 face="sans-serif">Copy: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
142708.1898 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .1204 &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; .1204 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
.1205</font>
<br><font size=2 face="sans-serif">Scale: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;142612.4358
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .1205 &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; .1205 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .1205</font>
<br><font size=2 face="sans-serif">Add: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp;159010.6786 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .1624 &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .1621 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; .1628</font>
<br><font size=2 face="sans-serif">Triad: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;162844.0220
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .1585 &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; .1582 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .1588</font>
<br><font size=2 face="sans-serif">&nbsp;----------------------------------------------------</font>
<br><font size=2 face="sans-serif">&nbsp;Solution Validates!</font>
<br><font size=2 face="sans-serif">&nbsp;----------------------------------------------------</font>
--=_alternative 000028A986257425_=--


From - Sat May 03 10:06:03 2008
X-Account-Key: account2
X-UIDL: <481A5688.6000205@yottayotta.com>
X-Mozilla-Status: 0005
X-Mozilla-Status2: 00000000
X-Mozilla-Keys: $label2                                                                         
Return-Path: <cyoub@YottaYotta.com>
Received: from hrndva-mxlb.mail.rr.com ([10.128.255.5])
          by hrndva-imta07.mail.rr.com with ESMTP
          id <20080501234726.HWPI27158.hrndva-imta07.mail.rr.com@hrndva-mxlb.mail.rr.com>
          for <jmccalpin@austin.rr.com>; Thu, 1 May 2008 23:47:26 +0000
X-IronPort: hrndva-mx02.mail.rr.com 632622235
X-RR-Connecting-IP: 209.217.50.103
Received: from smtp-andy.catalog.com (HELO andy.catalog.com) ([209.217.50.103])
  by hrndva-mxlb.mail.rr.com with SMTP; 01 May 2008 23:47:25 +0000
Received: (qmail 17311 invoked by uid 10000); 1 May 2008 23:47:25 -0000
Delivered-To: mccalpin.com-john@mccalpin.com
Received: (qmail 17300 invoked by uid 0); 1 May 2008 23:47:25 -0000
Received: from unknown (HELO spamfilter.catalog.com) (209.217.52.101)
  by smtp3.catalog.com with SMTP; 1 May 2008 23:47:25 -0000
X-ASG-Debug-ID: 1209685631-783a01600000-TpEisi
X-Barracuda-URL: http://209.217.52.101:8000/cgi-bin/mark.cgi
Received: from mx1.yottayotta.com (localhost [127.0.0.1])
	by spamfilter.catalog.com (Spam Firewall) with ESMTP id DDCBCD2FF4AA
	for <john@mccalpin.com>; Thu,  1 May 2008 18:47:11 -0500 (CDT)
Received: from mx1.yottayotta.com ([198.161.246.32]) by spamfilter.catalog.com with ESMTP id EbLGkIlUWyJckbEm for <john@mccalpin.com>; Thu, 01 May 2008 18:47:11 -0500 (CDT)
Received: from [192.168.1.2] (helo=edm-exchange.yottayotta.com)
	by mx1.yottayotta.com with esmtp (Exim 4.63)
	(envelope-from <cyoub@YottaYotta.com>)
	id 1JriZV-0008Ub-JZ
	for john@mccalpin.com; Thu, 01 May 2008 17:52:17 -0600
Received: from [10.0.3.198] ([10.0.3.198]) by edm-exchange.yottayotta.com with Microsoft SMTPSVC(5.0.2195.6713);
	 Thu, 1 May 2008 17:47:20 -0600
Message-ID: <481A5688.6000205@yottayotta.com>
Date: Thu, 01 May 2008 17:47:20 -0600
From: Chris Youb <cyoub@yottayotta.com>
User-Agent: Mozilla Thunderbird 1.0 (X11/20041206)
X-Accept-Language: en-us, en
MIME-Version: 1.0
To:  john@mccalpin.com
X-ASG-Orig-Subj: STREAM: Result set - Dell PowerEdge 1950 III - 2 x Intel Xeon Quad
 Core E5440
Subject: STREAM: Result set - Dell PowerEdge 1950 III - 2 x Intel Xeon Quad
 Core E5440
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-OriginalArrivalTime: 01 May 2008 23:47:20.0896 (UTC) FILETIME=[B2662C00:01C8ABE5]
X-Barracuda-Connect: UNKNOWN[198.161.246.32]
X-Barracuda-Start-Time: 1209685631
X-Barracuda-Bayes: INNOCENT GLOBAL 0.8401 1.0000 2.6087
X-Barracuda-Virus-Scanned: by Catalog.com Spam Firewall at catalog.com
X-Barracuda-Spam-Score: 2.71
X-Barracuda-Spam-Status: No, SCORE=2.71 using per-user scores of TAG_LEVEL=4.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=5.0 tests=RDNS_NONE
X-Barracuda-Spam-Report: Code version 3.1, rules version 3.1.49403
	Rule breakdown below
	 pts rule name              description
	---- ---------------------- --------------------------------------------------
	0.10 RDNS_NONE              Delivered to trusted network by a host with no rDNS

Here are my results from running STREAM on the configuration listed 
below.  For the most part the results are tightly grouped with little 
variation.  I noticed that I achieved better results as I increased the 
number of OMP_NUM_THREADS, until they peaked at 8.  Incidently this is 
the number of cores in my system (2 x Quad core).

However, on my dual CPU AMD 2212HE based system the results are not very 
consistent at all.  When using identical software and configuration to 
that listed below, my results can range from 3500MB/s to 7700MB/s.  Do 
you have any advice or suggestions about what could be wrong?

--------------------------------------------------------------

Hardware:
- Dell PowerEdge 1950 III
- Two (2) Intel Xeon Quad Core E5440
- Memory stick confirguration (from factory): 2G x 0 x 2G x 0 x 2G x 0 x 
2G x 0 = 8G total memory

--------------------------------------------------------------

Operating System:
- Ubuntu 8.04 AMD64 Desktop

Compiled as follows:
    gcc -O3 -fopenmp -D_OPENMP stream.c -o stream

Run as follows:
    export OMP_NUM_THREADS=8
    ./stream

--------------------------------------------------------------

Results:

    [cyoub@cyoub.edmonton.yottayotta.com]$ cat results
    -------------------------------------------------------------
    STREAM version $Revision: 5.8 $
    -------------------------------------------------------------
    This system uses 8 bytes per DOUBLE PRECISION word.
    -------------------------------------------------------------
    Array size = 2000000, Offset = 0
    Total memory required = 45.8 MB.
    Each test is run 10 times, but only
    the *best* time for each is used.
    -------------------------------------------------------------
    Number of Threads requested = 8
    -------------------------------------------------------------
    Printing one line per active thread....
    Printing one line per active thread....
    Printing one line per active thread....
    Printing one line per active thread....
    Printing one line per active thread....
    Printing one line per active thread....
    Printing one line per active thread....
    Printing one line per active thread....
    -------------------------------------------------------------
    Your clock granularity/precision appears to be 1 microseconds.
    Each test below will take on the order of 3380 microseconds.
       (= 3380 clock ticks)
    Increase the size of the arrays if this shows that
    you are not getting at least 20 clock ticks per test.
    -------------------------------------------------------------
    WARNING -- The above is only a rough guideline.
    For best results, please be sure you know the
    precision of your system timer.
    -------------------------------------------------------------
    Function      Rate (MB/s)   Avg time     Min time     Max time
    Copy:        6341.4944       0.0051       0.0050       0.0051
    Scale:       5992.3979       0.0054       0.0053       0.0054
    Add:         5572.2832       0.0086       0.0086       0.0086
    Triad:       5771.3161       0.0083       0.0083       0.0083
    -------------------------------------------------------------
    Solution Validates
    -------------------------------------------------------------
    -------------------------------------------------------------
    STREAM version $Revision: 5.8 $
    -------------------------------------------------------------
    This system uses 8 bytes per DOUBLE PRECISION word.
    -------------------------------------------------------------
    Array size = 2000000, Offset = 0
    Total memory required = 45.8 MB.
    Each test is run 10 times, but only
    the *best* time for each is used.
    -------------------------------------------------------------
    Number of Threads requested = 8
    -------------------------------------------------------------
    Printing one line per active thread....
    Printing one line per active thread....
    Printing one line per active thread....
    Printing one line per active thread....
    Printing one line per active thread....
    Printing one line per active thread....
    Printing one line per active thread....
    Printing one line per active thread....
    -------------------------------------------------------------
    Your clock granularity/precision appears to be 1 microseconds.
    Each test below will take on the order of 3644 microseconds.
       (= 3644 clock ticks)
    Increase the size of the arrays if this shows that
    you are not getting at least 20 clock ticks per test.
    -------------------------------------------------------------
    WARNING -- The above is only a rough guideline.
    For best results, please be sure you know the
    precision of your system timer.
    -------------------------------------------------------------
    Function      Rate (MB/s)   Avg time     Min time     Max time
    Copy:        6282.1310       0.0051       0.0051       0.0051
    Scale:       5982.2485       0.0054       0.0053       0.0056
    Add:         5561.3544       0.0087       0.0086       0.0087
    Triad:       5761.5715       0.0083       0.0083       0.0084
    -------------------------------------------------------------
    Solution Validates
    -------------------------------------------------------------
    -------------------------------------------------------------
    STREAM version $Revision: 5.8 $
    -------------------------------------------------------------
    This system uses 8 bytes per DOUBLE PRECISION word.
    -------------------------------------------------------------
    Array size = 2000000, Offset = 0
    Total memory required = 45.8 MB.
    Each test is run 10 times, but only
    the *best* time for each is used.
    -------------------------------------------------------------
    Number of Threads requested = 8
    -------------------------------------------------------------
    Printing one line per active thread....
    Printing one line per active thread....
    Printing one line per active thread....
    Printing one line per active thread....
    Printing one line per active thread....
    Printing one line per active thread....
    Printing one line per active thread....
    Printing one line per active thread....
    -------------------------------------------------------------
    Your clock granularity/precision appears to be 1 microseconds.
    Each test below will take on the order of 5143 microseconds.
       (= 5143 clock ticks)
    Increase the size of the arrays if this shows that
    you are not getting at least 20 clock ticks per test.
    -------------------------------------------------------------
    WARNING -- The above is only a rough guideline.
    For best results, please be sure you know the
    precision of your system timer.
    -------------------------------------------------------------
    Function      Rate (MB/s)   Avg time     Min time     Max time
    Copy:        6268.3415       0.0054       0.0051       0.0071
    Scale:       5839.3617       0.0056       0.0055       0.0060
    Add:         5910.5922       0.0084       0.0081       0.0085
    Triad:       5944.9754       0.0082       0.0081       0.0083
    -------------------------------------------------------------
    Solution Validates
    -------------------------------------------------------------
    -------------------------------------------------------------
    STREAM version $Revision: 5.8 $
    -------------------------------------------------------------
    This system uses 8 bytes per DOUBLE PRECISION word.
    -------------------------------------------------------------
    Array size = 2000000, Offset = 0
    Total memory required = 45.8 MB.
    Each test is run 10 times, but only
    the *best* time for each is used.
    -------------------------------------------------------------
    Number of Threads requested = 8
    -------------------------------------------------------------
    Printing one line per active thread....
    Printing one line per active thread....
    Printing one line per active thread....
    Printing one line per active thread....
    Printing one line per active thread....
    Printing one line per active thread....
    Printing one line per active thread....
    Printing one line per active thread....
    -------------------------------------------------------------
    Your clock granularity/precision appears to be 1 microseconds.
    Each test below will take on the order of 2902 microseconds.
       (= 2902 clock ticks)
    Increase the size of the arrays if this shows that
    you are not getting at least 20 clock ticks per test.
    -------------------------------------------------------------
    WARNING -- The above is only a rough guideline.
    For best results, please be sure you know the
    precision of your system timer.
    -------------------------------------------------------------
    Function      Rate (MB/s)   Avg time     Min time     Max time
    Copy:        6566.7463       0.0051       0.0049       0.0053
    Scale:       6043.3936       0.0054       0.0053       0.0056
    Add:         5772.8055       0.0086       0.0083       0.0087
    Triad:       5993.2898       0.0082       0.0080       0.0084
    -------------------------------------------------------------
    Solution Validates
    -------------------------------------------------------------
    -------------------------------------------------------------
    STREAM version $Revision: 5.8 $
    -------------------------------------------------------------
    This system uses 8 bytes per DOUBLE PRECISION word.
    -------------------------------------------------------------
    Array size = 2000000, Offset = 0
    Total memory required = 45.8 MB.
    Each test is run 10 times, but only
    the *best* time for each is used.
    -------------------------------------------------------------
    Number of Threads requested = 8
    -------------------------------------------------------------
    Printing one line per active thread....
    Printing one line per active thread....
    Printing one line per active thread....
    Printing one line per active thread....
    Printing one line per active thread....
    Printing one line per active thread....
    Printing one line per active thread....
    Printing one line per active thread....
    -------------------------------------------------------------
    Your clock granularity/precision appears to be 1 microseconds.
    Each test below will take on the order of 5073 microseconds.
       (= 5073 clock ticks)
    Increase the size of the arrays if this shows that
    you are not getting at least 20 clock ticks per test.
    -------------------------------------------------------------
    WARNING -- The above is only a rough guideline.
    For best results, please be sure you know the
    precision of your system timer.
    -------------------------------------------------------------
    Function      Rate (MB/s)   Avg time     Min time     Max time
    Copy:        6210.0462       0.0058       0.0052       0.0074
    Scale:       5911.6335       0.0061       0.0054       0.0078
    Add:         5853.0276       0.0090       0.0082       0.0104
    Triad:       5756.6292       0.0087       0.0083       0.0106
    -------------------------------------------------------------
    Solution Validates
    -------------------------------------------------------------


From - Sat May 17 10:10:24 2008
X-Account-Key: account2
X-UIDL: <482D0230.6D4B@Yahoo.com>
X-Mozilla-Status: 0005
X-Mozilla-Status2: 10000000
X-Mozilla-Keys: $label2                                                                         
Return-Path: <MichaelandShoSho@Yahoo.com>
Received: from hrndva-mxlb.mail.rr.com ([10.128.255.21])
          by hrndva-imta01.mail.rr.com with ESMTP
          id <20080516044037.SDZR1943.hrndva-imta01.mail.rr.com@hrndva-mxlb.mail.rr.com>
          for <jmccalpin@austin.rr.com>; Fri, 16 May 2008 04:40:37 +0000
X-IronPort: hrndva-mx18.mail.rr.com 1597182083
X-RR-Connecting-IP: 209.217.50.103
Received: from smtp-andy.catalog.com (HELO andy.catalog.com) ([209.217.50.103])
  by hrndva-mxlb.mail.rr.com with SMTP; 16 May 2008 04:40:37 +0000
Received: (qmail 14949 invoked by uid 10000); 16 May 2008 04:40:36 -0000
Delivered-To: mccalpin.com-john@mccalpin.com
Received: (qmail 14928 invoked by uid 0); 16 May 2008 04:40:36 -0000
Received: from unknown (HELO spamfilter.catalog.com) (209.217.36.23)
  by smtp3.catalog.com with SMTP; 16 May 2008 04:40:36 -0000
X-ASG-Debug-ID: 1210912801-450503470000-TpEisi
X-Barracuda-URL: http://209.217.36.23:8000/cgi-bin/mark.cgi
Received: from smtp4.telebecinternet.com (localhost [127.0.0.1])
	by spamfilter.catalog.com (Spam Firewall) with ESMTP id 37B2D232460
	for <john@mccalpin.com>; Thu, 15 May 2008 23:40:01 -0500 (CDT)
Received: from smtp4.telebecinternet.com (smtp4.bellnordiq.ca [142.217.217.73]) by spamfilter.catalog.com with ESMTP id V1FUrqKvCBnzfiFf for <john@mccalpin.com>; Thu, 15 May 2008 23:40:01 -0500 (CDT)
Received: from Saratoga (NTL208H101-89-192.nt.net [208.101.89.192])
	by smtp4.telebecinternet.com (8.14.2/8.13.1) with SMTP id m4G4eKie005168;
	Fri, 16 May 2008 00:40:20 -0400
Message-ID: <482D0230.6D4B@Yahoo.com>
Date: Thu, 15 May 2008 23:40:32 -0400
From: Michael Lancop <MichaelandShoSho@Yahoo.com>
Reply-To: MichaelandShoSho@Yahoo.com
X-Mailer: Mozilla 3.04 (Win95; U)
MIME-Version: 1.0
To: john@mccalpin.com
CC: MichaelandShoSho@Yahoo.com
X-ASG-Orig-Subj: Stream for Windows
Subject: Stream for Windows
Content-Type: multipart/mixed; boundary="------------597E6A4842B8"
X-Scanned-By: MIMEDefang 2.63 on 192.168.150.24
X-Barracuda-Connect: smtp4.bellnordiq.ca[142.217.217.73]
X-Barracuda-Start-Time: 1210912802
X-Barracuda-Virus-Scanned: by Catalog.com Spam Firewall at catalog.com
X-Barracuda-Spam-Score: 0.20
X-Barracuda-Spam-Status: No, SCORE=0.20 using per-user scores of TAG_LEVEL=4.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=5.0 tests=BSF_SC0_MJ615
X-Barracuda-Spam-Report: Code version 3.1, rules version 3.1.45799
	Rule breakdown below
	 pts rule name              description
	---- ---------------------- --------------------------------------------------
	0.20 BSF_SC0_MJ615          Custom Rule MJ615

This is a multi-part message in MIME format.

--------------597E6A4842B8
Content-Type: application/x-zip-compressed; name="Stream.zip"
Content-Transfer-Encoding: base64
Content-Disposition: inline; filename="Stream.zip"

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
3/UQ9SP+NP/m38j8T4740/6bf0N5TdSoQaMBO5sawbeBqDRBhfxHP0h3FrCKTt0+rYe5jvMR
57IJ7FbMp6UJyeCHGB9+csuTU0NoXvxEdXfuVt36X3biVKQsdT7ivgzwgV0f7zJR323qB1XX
EnL/9G/Cp4fcPQD/3q/P/vpW6h+/ln794E3hLXU7iW8VMJpVHxd8bKIKP/Z8PPfb8CdOnukc
oKg5dUM5VYNvp9H2h6wSMviK+OK3sIyaUTNqRs2oGTWjZtSMmlEzakbNqBk1o2bUjJpRM2pG
zagZNaNm1IyaUTNqRs2oGTWj5n+jIfcDNNfC6MUP+AzdhdOFXLzLhHcr8Osx+EmgcLB4Vwjv
IOkp9c6FPhSHbmQoLWpE2vhQXnQNIbzGUBzeLxoXshg/NRQ/PxROD4UzQmF7KM/qULwj5LpC
+PNCZZeH4jdQ6p2QKrB4J8lLqXUND8H7KLXO9SH3yVA6H0pvCOF5Biw+130+FN5JqfV5IVTe
S6H4Nyi1fkdC6R+G0uMj1L4YNr/SWob9HWHX/JeZYb/lOf2w395qGPYn9owb8vt+/NPxQ37T
2/smqn56/8FJT89D/86vDh+ZdOBEjsXU/fyfqpJe/s+//qLMcjT/6vR/3Pr0yokyb3n8xx/+
KCMmzD/zd89bBvb/KvOr+nHb65/8s2X/gr+/+J6ydMrmAycslW2d27p8B5e8+cOX099ufCz3
zjR/X1VnzeK3//vpMwO/uCLXvbIqY+e5jZ8f/mbmPQ31d2TOME54pf814+d/fedypvzS+5f6
5E+XPfGj96zuw+3PxLz42q8mfr4rK9o9Qc/Vf5/beDDbtnbx2Zd+mGaev/f3XzlsL/0jf+Ff
883i8z9Yp+S/2L3T1LJm97b7io5dFdeJJ6fnCwOnHn3lR/2X7tz/6478//ZVrDj485+YmrWr
H35nOodN/9vhv4X+R7Irix5fGPnhrir86V+0rtj8yUr/TyrG8f9c1HpilnviZ2snvHHs4qKj
hmkNSyYt+e1fX7qwyPLinrLy34X95b7vy4tSFr69+Il//P3Z/R98sejA1atHihrGbjr86tlF
96x48FPbO/ue/dG5g4t+8I7DzGX+LXbff/xu0ZlH33w2zfqft/3Xe88uSpzW9tnbb5rnFIlP
LCrKzQvU/ZejZtxbhYs+vHCPP3zfDxrjrmQuSly0uytt951fbn35rkW1v9159u3imqyj/537
wPrvhR+etmYTrzxTv/CZy/dPfGL99Iw5Lb9dMFU4lvrkkp/spa5+aD7dtJaZ9F/S599/UWdu
a7AujtjzM+6+U7PvT3k84fi0U3MvLN2xLu3Fp/a1uD7e/eSLv/7T3M9Kfz/2pdW/zMx7wzhr
+tKzd987b6XjtSOPTd+eR7/QcuZA7RWp7bbnv2ha53pmwX47f3t8znL3I1f57b8Lf7Z27Nm7
z/zyyPEO+r9fPBlJjZpRM2pGzagZNaNm1IyaUTNqRs2oGTWj5n+V+T9QSwECFAAUAAAACADv
DLA4RGy8jh1TAAAA0AAACgAAAAAAAAAAAAAA/4EAAAAAU3RyZWFtLmV4ZVBLBQYAAAAAAQAB
ADgAAABFUwAAAAA=
--------------597E6A4842B8
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

Dr. McCalpin:

  I was analyzing your memory bandwidth program, Stream. When it
occured to me that it would make a great Windows program.

  I have attatched the ported Windows source code as well as an
Intel86 executable.

  The following is a summary of a test run of the software:

Computer : MSI MS-6754
Chipset  : 845GL 400 Mhz FSB
CPU      : Intel Pentium 4 2.6 Ghz 512K Cache
Memory   : 1 Gb PC133
OS       : Windows 2000 Adv. Serv. SP4

Project Options:
                /nologo /G6 /ML /W3 /GX /O2 /D "WIN32" /D "NDEBUG"
                /D "_CONSOLE" /D "_MBCS" /Fp"Release/Stream.pch"
                /YX /Fo"Release/" /Fd"Release/" /FD /c

---------------------------------------------------------------
STREAM for Windows version 5.8w.
---------------------------------------------------------------
This system uses 8 bytes per DOUBLE PRECISION word.
---------------------------------------------------------------
Array size = 2000000, Offset = 0
Total memory required = 45.8 MB.
Each test is run 10 times, but only
the *best* time for each is used.
---------------------------------------------------------------
Your clock granularity/precision appears to be 0.279 microseconds.
Each test below will take on the order of 42893.7 microseconds.
   (= 153540 clock ticks)
Increase the size of the arrays if this shows that
you are not getting at least 20 clock ticks per test.
---------------------------------------------------------------
Function      Rate (MB/s)   Avg time     Min time     Max time
Copy:         510.8003       0.0628       0.0626       0.0630
Scale:        536.4121       0.0600       0.0597       0.0611
Add:          593.3993       0.0810       0.0809       0.0814
Triad:        590.9075       0.0814       0.0812       0.0819
---------------------------------------------------------------
Results Comparison:

   a[]  Expected  : 2306601562499999700.000000
        Observed  : 2306601562499999700.000000

   b[]  Expected  : 461320312500000000.000000
        Observed  : 461320312500000000.000000

   c[]  Expected  : 615093750000000000.000000
        Observed  : 615093750000000000.000000

Clock ticks per second : 3579545.

Solution Validates.
---------------------------------------------------------------

Sincerely

  Michael

Michael Lancop
36 Government Rd.
Larder Lake, Ont.
(705)643-2133
MichaelandShoSho@Yahoo.com

--------------597E6A4842B8
Content-Type: text/plain; charset=us-ascii; name="stream.c"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline; filename="stream.c"

/*-----------------------------------------------------------------------*/
/* Program: Stream                                                       */
/* Revision: $Id: stream.c,v 5.8 2007/02/19 23:57:39 mccalpin Exp mccalpin $ */
/* Original code developed by John D. McCalpin                           */
/* Programmers: John D. McCalpin                                         */
/*              Joe R. Zagar                                             */
/*                                                                       */
/* This program measures memory transfer rates in MB/s for simple        */
/* computational kernels coded in C.                                     */
/*-----------------------------------------------------------------------*/
/* Copyright 1991-2005: John D. McCalpin                                 */
/*-----------------------------------------------------------------------*/
/* License:                                                              */
/*  1. You are free to use this program and/or to redistribute           */
/*     this program.                                                     */
/*  2. You are free to modify this program for your own use,             */
/*     including commercial use, subject to the publication              */
/*     restrictions in item 3.                                           */
/*  3. You are free to publish results obtained from running this        */
/*     program, or from works that you derive from this program,         */
/*     with the following limitations:                                   */
/*     3a. In order to be referred to as "STREAM benchmark results",     */
/*         published results must be in conformance to the STREAM        */
/*         Run Rules, (briefly reviewed below) published at              */
/*         http://www.cs.virginia.edu/stream/ref.html                    */
/*         and incorporated herein by reference.                         */
/*         As the copyright holder, John McCalpin retains the            */
/*         right to determine conformity with the Run Rules.             */
/*     3b. Results based on modified source code or on runs not in       */
/*         accordance with the STREAM Run Rules must be clearly          */
/*         labelled whenever they are published.  Examples of            */
/*         proper labelling include:                                     */
/*         "tuned STREAM benchmark results"                              */
/*         "based on a variant of the STREAM benchmark code"             */
/*         Other comparable, clear and reasonable labelling is           */
/*         acceptable.                                                   */
/*     3c. Submission of results to the STREAM benchmark web site        */
/*         is encouraged, but not required.                              */
/*  4. Use of this program or creation of derived works based on this    */
/*     program constitutes acceptance of these licensing restrictions.   */
/*  5. Absolutely no warranty is expressed or implied.                   */
/*-----------------------------------------------------------------------*/
/*                                                                       */
/*  Ported to Windows' Visual Studio 6 by Michael Lancop May 15,2008.    */
/*  Email : MichaelandShoSho@Yahoo.com                                   */
/*  Project Options:                                                     */
/*                   /nologo /G6 /ML /W3 /GX /O2 /D "WIN32" /D "NDEBUG"  */
/*                   /D "_CONSOLE" /D "_MBCS" /Fp"Release/Stream.pch"    */
/*                   /YX /Fo"Release/" /Fd"Release/" /FD /c              */
/*                                                                       */
/*-----------------------------------------------------------------------*/

#include<windows.h>
#include<stdio.h>
#include<float.h>
#include<limits.h>

/* INSTRUCTIONS:
 *
 * 1) Stream requires a good bit of memory to run.  Adjust the
 *          value of 'N' (below) to give a 'timing calibration' of 
 *          at least 20 clock-ticks.  This will provide rate estimates
 *          that should be good to about 5% precision.
 */

#define VERBOSE
#define N        2000000
#define NTIMES   10
#define OFFSET   0

/*
 * 3) Compile the code with full optimization.  Many compilers
 *    generate unreasonably bad code before the optimizer tightens
 *    things up.  If the results are unreasonably good, on the
 *    other hand, the optimizer might be too smart for me!
 *
 *         Try compiling with:
 *               cc -O stream_omp.c -o stream_omp
 *
 *         This is known to work on Cray, SGI, IBM, and Sun machines.
 *
 *
 * 4) Mail the results to mccalpin@cs.virginia.edu
 *    Be sure to include:
 *  a) computer hardware model number and software revision
 *  b) the compiler flags
 *  c) all of the output from the test case.
 * Thanks!
 *
 */

#define HLINE "---------------------------------------------------------------\n"

#ifndef MIN
#define MIN(x,y) ((x)<(y)?(x):(y))
#endif

#ifndef MAX
#define MAX(x,y) ((x)>(y)?(x):(y))
#endif

static double   a[N+OFFSET],
                b[N+OFFSET],
                c[N+OFFSET],

                avgtime[4]={0},
                maxtime[4]={0},
                mintime[4]={FLT_MAX,FLT_MAX,FLT_MAX,FLT_MAX};

static char     *label[4]={"Copy:      ","Scale:     ","Add:       ","Triad:     "};

static double   bytes[4]={
                          2*sizeof(double)*N,
                          2*sizeof(double)*N,
                          3*sizeof(double)*N,
                          3*sizeof(double)*N
                         };

void checkSTREAMresults(__int64);

int main(void)
 {

  int             BytesPerWord;

  register int    j,
                  k;

  double          scalar,
                  t,
                  times[4][NTIMES];

  __int64         beginTime64,
                  endTime64,
                  ticks,
                  ticksPerSecond;

  /* --- SETUP --- determine precision and check timing --- */

//  _controlfp(PC_24,MCW_PC);     //  fpu 24bit precision.
//  _controlfp(PC_53,MCW_PC);     //  fpu 53bit precision (Windows default).
  _controlfp(PC_64,MCW_PC);       //  fpu 64bit precision.

  printf(HLINE);
  printf("STREAM for Windows version 5.8w.\n");
  printf(HLINE);
  BytesPerWord=sizeof(double);
  printf("This system uses %d bytes per DOUBLE PRECISION word.\n",BytesPerWord);
  printf(HLINE);
  printf("Array size = %d, Offset = %d\n" , N, OFFSET);
  printf("Total memory required = %.1f MB.\n",(3.0*BytesPerWord)*((double)N/1048576.0));
  printf("Each test is run %d times, but only\n",NTIMES);
  printf("the *best* time for each is used.\n");

  for(j=0;j<N;j++)
  {
   a[j]=1.0;
   b[j]=2.0;
   c[j]=0.0;
  }

  printf(HLINE);

  /* Get initial value for system clock. */

  QueryPerformanceFrequency((LARGE_INTEGER*)&ticksPerSecond);
  t=1/(double)ticksPerSecond*1.0E6;
  printf("Your clock granularity/precision appears to be %.3f microseconds.\n",t);

  SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_TIME_CRITICAL);
  QueryPerformanceCounter((LARGE_INTEGER*)&beginTime64);
  for(j=0;j<N;j++) a[j]=2.0E0*a[j];
  QueryPerformanceCounter((LARGE_INTEGER*)&endTime64);
  SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_NORMAL);

  ticks=endTime64-beginTime64;
  t=(double)ticks/(double)ticksPerSecond*1.0E6;
  printf("Each test below will take on the order of %g microseconds.\n",t);
  printf("   (= %I64d clock ticks)\n",ticks);
  printf("Increase the size of the arrays if this shows that\n");
  printf("you are not getting at least 20 clock ticks per test.\n");
  printf(HLINE);

  /*	--- MAIN LOOP --- repeat test cases NTIMES times --- */

  scalar=3.0;
  SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_TIME_CRITICAL);
  for(k=0;k<NTIMES;k++)
   {

  /* --- Copy --- */

    QueryPerformanceCounter((LARGE_INTEGER*)&beginTime64);
    for(j=0;j<N;j++) c[j]=a[j];
    QueryPerformanceCounter((LARGE_INTEGER*)&endTime64);
    ticks=endTime64-beginTime64;
    times[0][k]=(double)ticks/(double)ticksPerSecond;

  /* --- Scale --- */

    QueryPerformanceCounter((LARGE_INTEGER*)&beginTime64);
    for(j=0;j<N;j++) b[j]=scalar*c[j];
    QueryPerformanceCounter((LARGE_INTEGER*)&endTime64);
    ticks=endTime64-beginTime64;
    times[1][k]=(double)ticks/(double)ticksPerSecond;

  /* --- Add --- */

    QueryPerformanceCounter((LARGE_INTEGER*)&beginTime64);
    for(j=0;j<N;j++) c[j]=a[j]+b[j];
    QueryPerformanceCounter((LARGE_INTEGER*)&endTime64);
    ticks=endTime64-beginTime64;
    times[2][k]=(double)ticks/(double)ticksPerSecond;

  /* --- Triad --- */

    QueryPerformanceCounter((LARGE_INTEGER*)&beginTime64);
    for(j=0;j<N;j++) a[j]=b[j]+scalar*c[j];
    QueryPerformanceCounter((LARGE_INTEGER*)&endTime64);
    ticks=endTime64-beginTime64;
    times[3][k]=(double)ticks/(double)ticksPerSecond;
   }
  SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_NORMAL);

  /* --- SUMMARY --- */

  for(k=1;k<NTIMES;k++)    /* note -- skip first iteration */
   {
    for(j=0;j<4;j++)
     {
      avgtime[j]=avgtime[j]+times[j][k];
      mintime[j]=MIN(mintime[j],times[j][k]);
      maxtime[j]=MAX(maxtime[j],times[j][k]);
     }
   }
  printf("Function      Rate (MB/s)   Avg time     Min time     Max time\n");
  for(j=0;j<4;j++)
   {
    avgtime[j]=avgtime[j]/(double)(NTIMES-1);
    printf("%s%11.4f  %11.4f  %11.4f  %11.4f\n",label[j]
                                               ,1.0E-06*bytes[j]/mintime[j]
                                               ,avgtime[j]
                                               ,mintime[j]
                                               ,maxtime[j]);
   }
  printf(HLINE);

  /* --- Check Results --- */

  checkSTREAMresults(ticksPerSecond);
  printf(HLINE);
  return 0;
 }

void checkSTREAMresults(__int64 ticksPerSecond)
 {
  double   aj,
           bj,
           cj,
           scalar,
           asum,
           bsum,
           csum,
           epsilon;

  int      j,
           k;

  /* reproduce initialization */

  aj=1.0;
  bj=2.0;
  cj=0.0;
  /* a[] is modified during timing check */
  aj=2.0E0*aj;
  /* now execute timing loop */
  scalar=3.0;
  for(k=0;k<NTIMES;k++)
   {
    cj=aj;
    bj=scalar*cj;
    cj=aj+bj;
    aj=bj+scalar*cj;
   }
  aj=aj*(double)(N);
  bj=bj*(double)(N);
  cj=cj*(double)(N);
  asum=0.0;
  bsum=0.0;
  csum=0.0;
  for(j=0;j<N;j++)
   {
    asum+=a[j];
    bsum+=b[j];
    csum+=c[j];
   }

#ifdef VERBOSE
  printf("Results Comparison: \n\n");
  printf("   a[]  Expected  : %f\n",aj);
  printf("        Observed  : %f\n\n",asum);
  printf("   b[]  Expected  : %f\n",bj);
  printf("        Observed  : %f\n\n",bsum);
  printf("   c[]  Expected  : %f\n",cj);
  printf("        Observed  : %f\n\n",csum);
  printf("Clock ticks per second : %I64d.\n\n",ticksPerSecond);
#endif

#ifndef abs
#define abs(a) ((a) >= 0 ? (a) : -(a))
#endif

  epsilon=1.0E-8;

  if(abs(aj-asum)/asum>epsilon)
   {
    printf("Failed Validation on array a[]\n");
    printf("        Expected  : %f \n",aj);
    printf("        Observed  : %f \n",asum);
   }
  else if(abs(bj-bsum)/bsum>epsilon)
   {
    printf("Failed Validation on array b[]\n");
    printf("        Expected  : %f \n",bj);
    printf("        Observed  : %f \n",bsum);
   }
  else if(abs(cj-csum)/csum>epsilon)
   {
    printf("Failed Validation on array c[]\n");
    printf("        Expected  : %f \n",cj);
    printf("        Observed  : %f \n",csum);
   }
  else
   {
    printf("Solution Validates.\n");
   }
 }

--------------597E6A4842B8--


From - Sat May 31 11:07:26 2008
X-Account-Key: account2
X-UIDL: <OF03D6D3E9.AE959572-ON85257459.0068AF95-86257459.006A4655@us.ibm.com>
X-Mozilla-Status: 0005
X-Mozilla-Status2: 00000000
X-Mozilla-Keys: $label2                                                                         
Return-Path: <wpeter@us.ibm.com>
Received: from hrndva-mxlb.mail.rr.com ([10.128.255.17])
          by hrndva-imta06.mail.rr.com with ESMTP
          id <20080530195035.HZJB16536.hrndva-imta06.mail.rr.com@hrndva-mxlb.mail.rr.com>
          for <jmccalpin@austin.rr.com>; Fri, 30 May 2008 19:50:35 +0000
X-IronPort: hrndva-mx14.mail.rr.com 574168999
X-RR-Connecting-IP: 209.217.50.103
Received: from smtp-andy.catalog.com (HELO andy.catalog.com) ([209.217.50.103])
  by hrndva-mxlb.mail.rr.com with SMTP; 30 May 2008 19:50:35 +0000
Received: (qmail 4641 invoked by uid 10000); 30 May 2008 19:21:08 -0000
Delivered-To: mccalpin.com-john@mccalpin.com
Received: (qmail 4628 invoked by uid 0); 30 May 2008 19:21:08 -0000
Received: from unknown (HELO spamfilter.catalog.com) (209.217.50.108)
  by smtp3.catalog.com with SMTP; 30 May 2008 19:21:08 -0000
X-ASG-Debug-ID: 1212175266-6ceb00ab0000-TpEisi
X-Barracuda-URL: http://209.217.50.108:8000/cgi-bin/mark.cgi
Received: from e1.ny.us.ibm.com (localhost [127.0.0.1])
	by spamfilter.catalog.com (Spam Firewall) with ESMTP id D2E4017CB54
	for <john@mccalpin.com>; Fri, 30 May 2008 14:21:06 -0500 (CDT)
Received: from e1.ny.us.ibm.com (e1.ny.us.ibm.com [32.97.182.141]) by spamfilter.catalog.com with ESMTP id McsiYbjIgPhw1ydX for <john@mccalpin.com>; Fri, 30 May 2008 14:21:06 -0500 (CDT)
Received: from d01relay02.pok.ibm.com (d01relay02.pok.ibm.com [9.56.227.234])
	by e1.ny.us.ibm.com (8.13.8/8.13.8) with ESMTP id m4UJKnlD002909
	for <john@mccalpin.com>; Fri, 30 May 2008 15:20:49 -0400
Received: from d01av03.pok.ibm.com (d01av03.pok.ibm.com [9.56.224.217])
	by d01relay02.pok.ibm.com (8.13.8/8.13.8/NCO v8.7) with ESMTP id m4UJKnqx157718
	for <john@mccalpin.com>; Fri, 30 May 2008 15:20:49 -0400
Received: from d01av03.pok.ibm.com (loopback [127.0.0.1])
	by d01av03.pok.ibm.com (8.12.11.20060308/8.13.3) with ESMTP id m4UJKmUf030760
	for <john@mccalpin.com>; Fri, 30 May 2008 15:20:48 -0400
Received: from d01ml072.pok.ibm.com (d01ml072.pok.ibm.com [9.56.228.147])
	by d01av03.pok.ibm.com (8.12.11.20060308/8.12.11) with ESMTP id m4UJKmVG030748
	for <john@mccalpin.com>; Fri, 30 May 2008 15:20:48 -0400
MIME-Version: 1.0
X-Mailer: Lotus Notes Release 8.0.1 February 07, 2008
X-ASG-Orig-Subj: STREAM Standard Submission for IBM Power 575 Server
Subject: STREAM Standard Submission for IBM Power 575 Server
Cc: Andrea M Davis <amdavis@us.ibm.com>, Daniel H Jones <danjones@us.ibm.com>,
        Bill Buros <wmb@us.ibm.com>
To: <john@mccalpin.com>
Message-ID: <OF03D6D3E9.AE959572-ON85257459.0068AF95-86257459.006A4655@us.ibm.com>
From: Peter Wong <wpeter@us.ibm.com>
Date: Fri, 30 May 2008 14:20:48 -0500
X-MIMETrack: Serialize by Router on D01ML072/01/M/IBM(Release 7.0.2FP2 IGS702FP2HF8|March
 12, 2008) at 05/30/2008 15:20:48,
	Serialize complete at 05/30/2008 15:20:48
Content-Type: multipart/alternative; boundary="=_alternative 0062D9DF86257459_="
X-Barracuda-Connect: e1.ny.us.ibm.com[32.97.182.141]
X-Barracuda-Start-Time: 1212175266
X-Barracuda-Virus-Scanned: by Catalog.com Spam Firewall at catalog.com
X-Barracuda-Spam-Score: 0.00
X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=4.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=5.0 tests=HTML_MESSAGE
X-Barracuda-Spam-Report: Code version 3.1, rules version 3.1.51883
	Rule breakdown below
	 pts rule name              description
	---- ---------------------- --------------------------------------------------
	0.00 HTML_MESSAGE           BODY: HTML included in message

This is a multipart message in MIME format.
--=_alternative 0062D9DF86257459_=
Content-Type: text/plain; charset="US-ASCII"

John,

I would like to submit this STREAM standard result for the IBM Power 575 
system with
32 cores, 128 GB (64 x 2 GB) DDR2 667MHz, 32 4MB L2 caches and 16 32MB L3 
caches.

The following pieces of software are installed on the machine:
- Red Hat Enterprise Linux Advanced Platform 5.2 for IBM POWER
- IBM XL Fortran Advanced Edition V11.1 for Linux
- IBM XL C/C++ Advanced Edition V9.0 for Linux

Computer                                 Array size    SMT  Triad score
---------------------------------------  ------------  ---  -----------
IBM Power 575 (4.7 GHz POWER6 RHEL 5.2)  1000,000,284  off  158638.8408
 
Please make this result publicly available at your earlier convenience for 
highlighting
IBM Power 575 server and RHEL 5.2.

Let me know if you have any questions.

Thanks,
Peter
--------------------------
Peter Wai Yee Wong, Ph.D.
IBM Linux Performance Team
wpeter@us.ibm.com

==========================================================================
-------------------------------------------------------------
This system uses 8 bytes per DOUBLE PRECISION word.
-------------------------------------------------------------
Array size = 1000000284, Offset = 0
Total memory required = 22888.2 MB.
Each test is run 10 times, but only
the *best* time for each is used.
-------------------------------------------------------------
Number of Threads requested = 32
Number of Threads requested = 32
Number of Threads requested = 32
Number of Threads requested = 32
Number of Threads requested = 32
Number of Threads requested = 32
Number of Threads requested = 32
Number of Threads requested = 32
Number of Threads requested = 32
Number of Threads requested = 32
Number of Threads requested = 32
Number of Threads requested = 32
Number of Threads requested = 32
Number of Threads requested = 32
Number of Threads requested = 32
Number of Threads requested = 32
Number of Threads requested = 32
Number of Threads requested = 32
Number of Threads requested = 32
Number of Threads requested = 32
Number of Threads requested = 32
Number of Threads requested = 32
Number of Threads requested = 32
Number of Threads requested = 32
Number of Threads requested = 32
Number of Threads requested = 32
Number of Threads requested = 32
Number of Threads requested = 32
Number of Threads requested = 32
Number of Threads requested = 32
Number of Threads requested = 32
-------------------------------------------------------------
Your clock granularity/precision appears to be 1 microseconds.
Each test below will take on the order of 84836 microseconds.
   (= 84836 clock ticks)
Increase the size of the arrays if this shows that
you are not getting at least 20 clock ticks per test.
-------------------------------------------------------------
WARNING -- The above is only a rough guideline.
For best results, please be sure you know the
precision of your system timer.
-------------------------------------------------------------
Function      Rate (MB/s)   Avg time     Min time     Max time
Copy:      134794.9581       0.1191       0.1187       0.1195
Scale:     134036.0133       0.1197       0.1194       0.1199
Add:       157154.5822       0.1529       0.1527       0.1531
Triad:     158638.8408       0.1517       0.1513       0.1520
-------------------------------------------------------------
Solution Validates
-------------------------------------------------------------
--=_alternative 0062D9DF86257459_=
Content-Type: text/html; charset="US-ASCII"


<br><tt><font size=2>John,</font></tt>
<br>
<br><tt><font size=2>I would like to submit this STREAM standard result
for the IBM Power 575 system with</font></tt>
<br><tt><font size=2>32 cores, 128 GB (64 x 2 GB) DDR2 667MHz, 32 4MB L2
caches and 16 32MB L3 caches.<br>
<br>
The following pieces of software are installed on the machine:<br>
- Red Hat Enterprise Linux Advanced Platform 5.2 for IBM POWER<br>
- IBM XL Fortran Advanced Edition V11.1 for Linux<br>
- IBM XL C/C++ Advanced Edition V9.0 for Linux</font></tt>
<br><tt><font size=2><br>
Computer &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Array size &nbsp; &nbsp;SMT
&nbsp;Triad score<br>
--------------------------------------- &nbsp;------------ &nbsp;--- &nbsp;-----------<br>
IBM Power 575 (4.7 GHz POWER6 RHEL 5.2) &nbsp;1000,000,284 &nbsp;off &nbsp;158638.8408</font></tt>
<br><tt><font size=2>&nbsp;</font></tt>
<br><tt><font size=2>Please make this result publicly available at your
earlier convenience for highlighting</font></tt>
<br><tt><font size=2>IBM Power 575 server and RHEL 5.2.</font></tt>
<br>
<br><tt><font size=2>Let me know if you have any questions.</font></tt>
<br>
<br><tt><font size=2>Thanks,<br>
Peter<br>
--------------------------<br>
Peter Wai Yee Wong, Ph.D.</font></tt>
<br><tt><font size=2>IBM Linux Performance Team<br>
wpeter@us.ibm.com</font></tt>
<br><tt><font size=2><br>
==========================================================================</font></tt>
<br><tt><font size=2>-------------------------------------------------------------</font></tt>
<br><tt><font size=2>This system uses 8 bytes per DOUBLE PRECISION word.</font></tt>
<br><tt><font size=2>-------------------------------------------------------------</font></tt>
<br><tt><font size=2>Array size = 1000000284, Offset = 0</font></tt>
<br><tt><font size=2>Total memory required = 22888.2 MB.</font></tt>
<br><tt><font size=2>Each test is run 10 times, but only</font></tt>
<br><tt><font size=2>the *best* time for each is used.</font></tt>
<br><tt><font size=2>-------------------------------------------------------------</font></tt>
<br><tt><font size=2>Number of Threads requested = 32</font></tt>
<br><tt><font size=2>Number of Threads requested = 32</font></tt>
<br><tt><font size=2>Number of Threads requested = 32</font></tt>
<br><tt><font size=2>Number of Threads requested = 32</font></tt>
<br><tt><font size=2>Number of Threads requested = 32</font></tt>
<br><tt><font size=2>Number of Threads requested = 32</font></tt>
<br><tt><font size=2>Number of Threads requested = 32</font></tt>
<br><tt><font size=2>Number of Threads requested = 32</font></tt>
<br><tt><font size=2>Number of Threads requested = 32</font></tt>
<br><tt><font size=2>Number of Threads requested = 32</font></tt>
<br><tt><font size=2>Number of Threads requested = 32</font></tt>
<br><tt><font size=2>Number of Threads requested = 32</font></tt>
<br><tt><font size=2>Number of Threads requested = 32</font></tt>
<br><tt><font size=2>Number of Threads requested = 32</font></tt>
<br><tt><font size=2>Number of Threads requested = 32</font></tt>
<br><tt><font size=2>Number of Threads requested = 32</font></tt>
<br><tt><font size=2>Number of Threads requested = 32</font></tt>
<br><tt><font size=2>Number of Threads requested = 32</font></tt>
<br><tt><font size=2>Number of Threads requested = 32</font></tt>
<br><tt><font size=2>Number of Threads requested = 32</font></tt>
<br><tt><font size=2>Number of Threads requested = 32</font></tt>
<br><tt><font size=2>Number of Threads requested = 32</font></tt>
<br><tt><font size=2>Number of Threads requested = 32</font></tt>
<br><tt><font size=2>Number of Threads requested = 32</font></tt>
<br><tt><font size=2>Number of Threads requested = 32</font></tt>
<br><tt><font size=2>Number of Threads requested = 32</font></tt>
<br><tt><font size=2>Number of Threads requested = 32</font></tt>
<br><tt><font size=2>Number of Threads requested = 32</font></tt>
<br><tt><font size=2>Number of Threads requested = 32</font></tt>
<br><tt><font size=2>Number of Threads requested = 32</font></tt>
<br><tt><font size=2>Number of Threads requested = 32</font></tt>
<br><tt><font size=2>-------------------------------------------------------------</font></tt>
<br><tt><font size=2>Your clock granularity/precision appears to be 1 microseconds.</font></tt>
<br><tt><font size=2>Each test below will take on the order of 84836 microseconds.</font></tt>
<br><tt><font size=2>&nbsp; &nbsp;(= 84836 clock ticks)</font></tt>
<br><tt><font size=2>Increase the size of the arrays if this shows that</font></tt>
<br><tt><font size=2>you are not getting at least 20 clock ticks per test.</font></tt>
<br><tt><font size=2>-------------------------------------------------------------</font></tt>
<br><tt><font size=2>WARNING -- The above is only a rough guideline.</font></tt>
<br><tt><font size=2>For best results, please be sure you know the</font></tt>
<br><tt><font size=2>precision of your system timer.</font></tt>
<br><tt><font size=2>-------------------------------------------------------------</font></tt>
<br><tt><font size=2>Function &nbsp; &nbsp; &nbsp;Rate (MB/s) &nbsp; Avg
time &nbsp; &nbsp; Min time &nbsp; &nbsp; Max time</font></tt>
<br><tt><font size=2>Copy: &nbsp; &nbsp; &nbsp;134794.9581 &nbsp; &nbsp;
&nbsp; 0.1191 &nbsp; &nbsp; &nbsp; 0.1187 &nbsp; &nbsp; &nbsp; 0.1195</font></tt>
<br><tt><font size=2>Scale: &nbsp; &nbsp; 134036.0133 &nbsp; &nbsp; &nbsp;
0.1197 &nbsp; &nbsp; &nbsp; 0.1194 &nbsp; &nbsp; &nbsp; 0.1199</font></tt>
<br><tt><font size=2>Add: &nbsp; &nbsp; &nbsp; 157154.5822 &nbsp; &nbsp;
&nbsp; 0.1529 &nbsp; &nbsp; &nbsp; 0.1527 &nbsp; &nbsp; &nbsp; 0.1531</font></tt>
<br><tt><font size=2>Triad: &nbsp; &nbsp; 158638.8408 &nbsp; &nbsp; &nbsp;
0.1517 &nbsp; &nbsp; &nbsp; 0.1513 &nbsp; &nbsp; &nbsp; 0.1520</font></tt>
<br><tt><font size=2>-------------------------------------------------------------</font></tt>
<br><tt><font size=2>Solution Validates</font></tt>
<br><tt><font size=2>-------------------------------------------------------------</font></tt>
--=_alternative 0062D9DF86257459_=--



From - Thu Jul 17 07:53:25 2008
X-Account-Key: account2
X-UIDL: <487EFE2A.6000804@dolbeau.org>
X-Mozilla-Status: 0007
X-Mozilla-Status2: 00000000
X-Mozilla-Keys: $label3 $label2 $label4 $label1                                                 
Return-Path: <romain@dolbeau.org>
Received: from hrndva-mxlb.mail.rr.com ([10.128.255.17])
          by hrndva-imta04.mail.rr.com with ESMTP
          id <20080717081937.PBXB8062.hrndva-imta04.mail.rr.com@hrndva-mxlb.mail.rr.com>
          for <jmccalpin@austin.rr.com>; Thu, 17 Jul 2008 08:19:37 +0000
X-IronPort: hrndva-mx14.mail.rr.com 701830720
X-RR-Connecting-IP: 128.143.137.19
Received: from ares.cs.virginia.edu ([128.143.137.19])
  by hrndva-mxlb.mail.rr.com with ESMTP; 17 Jul 2008 08:19:35 +0000
Received: from secondary.caps-entreprise.com (primary.caps-entreprise.com [213.41.253.213])
	by ares.cs.Virginia.EDU (8.13.8/8.13.8/UVACS-2007111101) with ESMTP id m6H8JRFw014535
	for <mccalpin@cs.virginia.edu>; Thu, 17 Jul 2008 01:19:28 -0700 (PDT)
Received: from localhost (localhost [127.0.0.1])
	by secondary.caps-entreprise.com (Postfix) with ESMTP id A67AD16EB8;
	Thu, 17 Jul 2008 10:09:18 +0200 (CEST)
Received: from secondary.caps-entreprise.com ([127.0.0.1])
	by localhost (gandalf [127.0.0.1]) (amavisd-new, port 10024)
	with ESMTP id 09589-03; Thu, 17 Jul 2008 10:09:14 +0200 (CEST)
Received: from [172.21.0.9] (bifur.caps-entreprise.com [172.21.0.9])
	by secondary.caps-entreprise.com (Postfix) with ESMTP id D35C316E60;
	Thu, 17 Jul 2008 10:09:14 +0200 (CEST)
Message-ID: <487EFE2A.6000804@dolbeau.org>
Date: Thu, 17 Jul 2008 10:09:14 +0200
From: Romain Dolbeau <romain@dolbeau.org>
User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.0.14eol) Gecko/20080509 Thunderbird/1.5.0.14eol Mnenhy/0.7.5.666
MIME-Version: 1.0
To: mccalpin@cs.virginia.edu
Subject: More STREAM results for Core 2 CPUs
X-Enigmail-Version: 0.94.2.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
X-Virus-Scanned: by amavisd-new-20030616-p10 (Debian) at caps-entreprise.com

[Originally sent to stream@postofc.corp.sgi.com, but I got a "550
Blocked" from the mail server, is that still the correct address for the
mailing list?]

Hello,

Here are some results for various Core 2 family CPUs & chipsets,
as I haven't seen many of those in the tables. OS is linux 2.6.22
or 2.6.24 for architecture x86_64.

Binaries were generated (a while ago) with PGI compilers, release 6.2-3:
#####
pgcc -c -O3 mysecond.c -DUNDERSCORE
pgf90 -O3 -Mvect=3Dassoc,sse,cachesize:524288,nosizelimit,prefetch -Minfo=

-Mneginfo -tp k8-64 -Mprefetch=3Dplain,nta,t0,w -Mscalarsse -Msmart
-Munroll -Mkeepasm stream.f mysecond.o -o streams
pgf90 -O3 -Mvect=3Dassoc,sse,cachesize:524288,nosizelimit,prefetch -Minfo=

-Mneginfo -tp k8-64 -Mprefetch=3Dplain,nta,t0,w -Mscalarsse -Msmart
-Munroll -Mkeepasm stream.f mysecond.o -mp=3Dnuma -o streams_omp
#####
Those flags weren't particularily optimized for Intel, but they're
known to give decent results on F90 code on AMD systems... they're
probably suboptimal on Intel systems. Any suggestion on a good/better
way of compiling the stream benchmark on linux/x86_64 is welcome,
as I haven't had time to investigate.

The only change to the source code is to push the problem
size to n=3D20000000.

Some motherboard/CPU combinations appears multiple times, as bandwith
seems very dependent of the exact memory used.

***** Core 2 Duo 6550 on Supermicro C2SBE (Intel=AE P35 Chipset), Kingsto=
n
1GB DDR2 DIMMs
----------------------------------------------
 Double precision appears to have 16 digits of accuracy
 Assuming 8 bytes per DOUBLE PRECISION word
----------------------------------------------
 ----------------------------------------------
 STREAM Version $Revision: 5.6 $
 ----------------------------------------------
 Array size =3D   20000000
 Offset     =3D          0
 The total memory requirement is  457 MB
 You are running each test  10 times
 --
 The *best* time for each test is used
 *EXCLUDING* the first and last iterations
 ----------------------------------------------
 ----------------------------------------------
 Printing one line per active thread....
 ----------------------------------------------------
 Your clock granularity/precision appears to be      1 microseconds
 ----------------------------------------------------
Function     Rate (MB/s)  Avg time   Min time  Max time
Copy:       5630.8122      0.0574      0.0568      0.0616
Scale:      5642.9331      0.0569      0.0567      0.0578
Add:        5529.5072      0.0873      0.0868      0.0911
Triad:      5525.6979      0.0874      0.0869      0.0910
 ----------------------------------------------------
 Solution Validates!
 ----------------------------------------------------


***** Core 2 Duo E8200 on Supermicro C2SBE (Intel=AE P35 Chipset),
Kingston 2GB DDR2 DIMMs
### no openmp
----------------------------------------------
 Double precision appears to have 16 digits of accuracy
 Assuming 8 bytes per DOUBLE PRECISION word
----------------------------------------------
 ----------------------------------------------
 STREAM Version $Revision: 5.6 $
 ----------------------------------------------
 Array size =3D   20000000
 Offset     =3D          0
 The total memory requirement is  457 MB
 You are running each test  10 times
 --
 The *best* time for each test is used
 *EXCLUDING* the first and last iterations
 ----------------------------------------------
 ----------------------------------------------
 Printing one line per active thread....
 ----------------------------------------------------
 Your clock granularity/precision appears to be      1 microseconds
 ----------------------------------------------------
Function     Rate (MB/s)  Avg time   Min time  Max time
Copy:       5420.3324      0.0596      0.0590      0.0615
Scale:      5386.9385      0.0601      0.0594      0.0619
Add:        5597.6765      0.0862      0.0857      0.0880
Triad:      5593.9437      0.0863      0.0858      0.0879
 ----------------------------------------------------
 Solution Validates!
 ----------------------------------------------------

***** Core 2 Duo E8200 on Supermicro C2SBE (Intel=AE P35 Chipset), Samsun=
g
1GB DDR2 DIMMs
### no openmp
----------------------------------------------
 Double precision appears to have 16 digits of accuracy
 Assuming 8 bytes per DOUBLE PRECISION word
----------------------------------------------
 ----------------------------------------------
 STREAM Version $Revision: 5.6 $
 ----------------------------------------------
 Array size =3D   20000000
 Offset     =3D          0
 The total memory requirement is  457 MB
 You are running each test  10 times
 --
 The *best* time for each test is used
 *EXCLUDING* the first and last iterations
 ----------------------------------------------
 ----------------------------------------------
 Printing one line per active thread....
 ----------------------------------------------------
 Your clock granularity/precision appears to be      1 microseconds
 ----------------------------------------------------
Function     Rate (MB/s)  Avg time   Min time  Max time
Copy:       4980.3051      0.0645      0.0643      0.0656
Scale:      4898.0640      0.0658      0.0653      0.0672
Add:        5194.0773      0.0926      0.0924      0.0935
Triad:      5165.5050      0.0933      0.0929      0.0954
 ----------------------------------------------------
 Solution Validates!
 ----------------------------------------------------

***** Core 2 Duo 6850 on Asus P5E (Intel=AE X38 Chipset), unknown 1GB DDR=
2
DIMMs
### no openmp
----------------------------------------------
 Double precision appears to have 16 digits of accuracy
 Assuming 8 bytes per DOUBLE PRECISION word
----------------------------------------------
 ----------------------------------------------
 STREAM Version $Revision: 5.6 $
 ----------------------------------------------
 Array size =3D   20000000
 Offset     =3D          0
 The total memory requirement is  457 MB
 You are running each test  10 times
 --
 The *best* time for each test is used
 *EXCLUDING* the first and last iterations
 ----------------------------------------------
 ----------------------------------------------
 Printing one line per active thread....
 ----------------------------------------------------
 Your clock granularity/precision appears to be      1 microseconds
 ----------------------------------------------------
Function     Rate (MB/s)  Avg time   Min time  Max time
Copy:       6398.6026      0.0504      0.0500      0.0530
Scale:      6457.7118      0.0502      0.0496      0.0552
Add:        6806.9552      0.0726      0.0705      0.0792
Triad:      6827.1065      0.0710      0.0703      0.0755
 ----------------------------------------------------
 Solution Validates!
 ----------------------------------------------------

***** Core 2 Duo E8200 on Supermicro C2SBX (Intel=AE X38 Chipset), unknow=
n
2GB DDR3 DIMMs
### no openmp
----------------------------------------------
 Double precision appears to have 16 digits of accuracy
 Assuming 8 bytes per DOUBLE PRECISION word
----------------------------------------------
 ----------------------------------------------
 STREAM Version $Revision: 5.6 $
 ----------------------------------------------
 Array size =3D   20000000
 Offset     =3D          0
 The total memory requirement is  457 MB
 You are running each test  10 times
 --
 The *best* time for each test is used
 *EXCLUDING* the first and last iterations
 ----------------------------------------------
 ----------------------------------------------
 Printing one line per active thread....
 ----------------------------------------------------
 Your clock granularity/precision appears to be      1 microseconds
 ----------------------------------------------------
Function     Rate (MB/s)  Avg time   Min time  Max time
Copy:       7249.1346      0.0449      0.0441      0.0470
Scale:      7262.8248      0.0444      0.0441      0.0463
Add:        7861.4027      0.0614      0.0611      0.0622
Triad:      7863.1835      0.0617      0.0610      0.0644
 ----------------------------------------------------
 Solution Validates!
 ----------------------------------------------------

--=20
Romain Dolbeau
<romain@dolbeau.org>



From - Thu Sep 25 18:18:02 2008
X-Account-Key: account3
X-UIDL: AFVVk0UAAT+BSNwQxQAs2xRrvzQ
X-Mozilla-Status: 0005
X-Mozilla-Status2: 00000000
X-Mozilla-Keys: $label2
                                                                                 
X-Apparently-To: john.mccalpin@att.net via 69.147.85.85; Thu, 25 Sep 2008 15:29:24 -0700
X-Originating-IP: [204.127.208.84]
Authentication-Results: mta147.sbc.mail.mud.yahoo.com  from=qlogic.com; domainkeys=neutral (no sig)
Received: from 204.127.208.84  (EHLO sccwmxc04.att.net) (204.127.208.84)
  by mta147.sbc.mail.mud.yahoo.com with SMTP; Thu, 25 Sep 2008 15:29:24 -0700
Received: from ares.cs.virginia.edu ([128.143.137.19])
          by att.net (sccwmxc04) with ESMTP
          id <20080925222924s0400m2t43e>; Thu, 25 Sep 2008 22:29:24 +0000
X-Originating-IP: [128.143.137.19]
Received: from avexch1.qlogic.com (avexch1.qlogic.com [198.70.193.115])
	by ares.cs.Virginia.EDU (8.13.8/8.13.8/UVACS-2007111101) with ESMTP id m8PMTMov007241
	for <mccalpin@cs.virginia.edu>; Thu, 25 Sep 2008 15:29:23 -0700 (PDT)
Received: from [192.168.2.31] ([192.168.2.31]) by avexch1.qlogic.com with Microsoft SMTPSVC(6.0.3790.1830);
	 Thu, 25 Sep 2008 15:29:17 -0700
Subject: Stream result for AMD Opteron 2360SE "Barcelona"
From: Huiyu Feng <huiyu.feng@qlogic.com>
Reply-To: huiyu.feng@qlogic.com
To: mccalpin@cs.virginia.edu
Cc: Tom Elken <tom.elken@qlogic.com>
Content-Type: text/plain
Organization: QLogic Corp.
Date: Thu, 25 Sep 2008 15:29:16 -0700
Message-Id: <1222381756.24164.279.camel@beryl.pathscale.com>
Mime-Version: 1.0
X-Mailer: Evolution 2.8.3 (2.8.3-2.fc6) 
Content-Transfer-Encoding: 7bit
X-OriginalArrivalTime: 25 Sep 2008 22:29:17.0232 (UTC) FILETIME=[25710300:01C91F5E]

Dear Dr. McCalpin,

We would like to submit the Stream result on a Quad-core, 2 CPU, AMD
Opteron 2360 SE 2.5Ghz Barcelona system. 

Included are system descriptions and Stream test output. 

Regards,
Huiyu Feng
QLogic Corp. 

----------------------
System Description:

Motherboard: TYAN  GT24-B2912/B2912-E
CPU: Quad-Core AMD Opteron 2360SE  
CPU Speed: 2.5Ghz
CPU(s) enabled: 8 core, 2 chip, 4 core/chip
Memory: 16GB (8x2GB DIMMs) 
L3 Cache: 2MB  (per CPU)

Operating System: 
Red Hat Enterprise Linux AS release 4 (Nahant Update 6)
 
Compiler:PathScale Compiler Suite, Release 3.2,
Compiler Flags: -mp -Ofast 


pathcc -Ofast -mp stream.c -o stream

-------------------------------------------------------------
STREAM version $Revision: 5.6 $
-------------------------------------------------------------
This system uses 8 bytes per DOUBLE PRECISION word.
-------------------------------------------------------------
Array size = 4000000, Offset = 0
Total memory required = 91.6 MB.
Each test is run 10 times, but only
the *best* time for each is used.
-------------------------------------------------------------
Number of Threads requested = 8
-------------------------------------------------------------
Printing one line per active thread....
Printing one line per active thread....
Printing one line per active thread....
Printing one line per active thread....
Printing one line per active thread....
Printing one line per active thread....
Printing one line per active thread....
Printing one line per active thread....
-------------------------------------------------------------
Your clock granularity/precision appears to be 1 microseconds.
Each test below will take on the order of 28773 microseconds.
   (= 28773 clock ticks)
Increase the size of the arrays if this shows that
you are not getting at least 20 clock ticks per test.
-------------------------------------------------------------
WARNING -- The above is only a rough guideline.
For best results, please be sure you know the
precision of your system timer.
-------------------------------------------------------------
Function      Rate (MB/s)   Avg time     Min time     Max time
Copy:       17942.3472       0.0036       0.0036       0.0036
Scale:      17856.4130       0.0036       0.0036       0.0036
Add:        17259.7704       0.0056       0.0056       0.0056
Triad:      17341.5386       0.0055       0.0055       0.0056
-------------------------------------------------------------
Solution Validates
-------------------------------------------------------------
 

From - Fri Oct 24 16:31:45 2008
X-Account-Key: account3
X-UIDL: AEFVk0UAACp2SQHgtAAaaU0tTl0
X-Mozilla-Status: 0007
X-Mozilla-Status2: 00000000
X-Mozilla-Keys: $label2
                                                                                 
X-Apparently-To: john.mccalpin@att.net via 69.147.85.65; Fri, 24 Oct 2008 07:50:27 -0700
X-Originating-IP: [209.217.50.103]
Authentication-Results: mta126.sbc.mail.re3.yahoo.com  from=Sun.COM; domainkeys=neutral (no sig)
Received: from 12.102.248.84  (EHLO sccwmxc04.att.net) (12.102.248.84)
  by mta126.sbc.mail.re3.yahoo.com with SMTP; Fri, 24 Oct 2008 07:50:27 -0700
Received: from andy.catalog.com ([209.217.50.103])
          by att.net (sccwmxc04) with SMTP
          id <20081024145026s0400ltejbe>; Fri, 24 Oct 2008 14:50:27 +0000
X-Originating-IP: [209.217.50.103]
Received: (qmail 5532 invoked by uid 10000); 24 Oct 2008 14:50:26 -0000
Delivered-To: mccalpin.com-john@mccalpin.com
Received: (qmail 5525 invoked by uid 0); 24 Oct 2008 14:50:26 -0000
Received: from unknown (HELO spamfilter.catalog.com) (209.217.52.101)
  by smtp3.catalog.com with SMTP; 24 Oct 2008 14:50:26 -0000
X-ASG-Debug-ID: 1224859958-70fa02e60000-TpEisi
X-Barracuda-URL: http://209.217.52.101:8000/cgi-bin/mark.cgi
Received: from sca-es-mail-2.sun.com (localhost [127.0.0.1])
	by spamfilter.catalog.com (Spam Firewall) with ESMTP id 82488D0AC118
	for <john@mccalpin.com>; Fri, 24 Oct 2008 09:52:38 -0500 (CDT)
Received: from sca-es-mail-2.sun.com ([192.18.43.133]) by spamfilter.catalog.com with ESMTP id xGS3mcvr1wf0UH75 for <john@mccalpin.com>; Fri, 24 Oct 2008 09:52:38 -0500 (CDT)
Received: from fe-sfbay-10.sun.com ([192.18.43.129])
	by sca-es-mail-2.sun.com (8.13.7+Sun/8.12.9) with ESMTP id m9OEnqBh023522
	for <john@mccalpin.com>; Fri, 24 Oct 2008 07:50:18 -0700 (PDT)
Received: from conversion-daemon.fe-sfbay-10.sun.com by fe-sfbay-10.sun.com
 (Sun Java System Messaging Server 6.2-8.04 (built Feb 28 2007))
 id <0K9800601YSUVL00@fe-sfbay-10.sun.com>
 (original mail from Brian.Whitney@Sun.COM) for john@mccalpin.com; Fri,
 24 Oct 2008 07:49:52 -0700 (PDT)
Received: from [10.1.141.40] by fe-sfbay-10.sun.com
 (Sun Java System Messaging Server 6.2-8.04 (built Feb 28 2007))
 with ESMTPSA id <0K980016IZUOYW10@fe-sfbay-10.sun.com>; Fri,
 24 Oct 2008 07:49:36 -0700 (PDT)
Date: Fri, 24 Oct 2008 07:49:36 -0700
From: Brian Whitney <Brian.Whitney@Sun.COM>
X-ASG-Orig-Subj: Fujitsu SPARC Enterprise M3000, Stream results
Subject: Fujitsu SPARC Enterprise M3000, Stream results
In-reply-to: <4624CF60.7070809@austin.rr.com>
Sender: Brian.Whitney@Sun.COM
To: john@mccalpin.com
Cc: Takumi Maruyama <takumi_maruyama@jp.fujitsu.com>,
        apl-submit@spd.cs.fujitsu.co.jp
Message-id: <4901E080.3060602@sun.com>
MIME-version: 1.0
Content-type: text/plain; format=flowed; charset=ISO-8859-1
Content-transfer-encoding: 7BIT
References: <4623DA1B.6040006@sun.com> <46240CC3.2030801@austin.rr.com>
 <4624229E.3090900@sun.com> <4624B5E4.5070402@austin.rr.com>
 <4624CE82.5040407@sun.com> <4624CF60.7070809@austin.rr.com>
User-Agent: Thunderbird 2.0.0.14 (X11/20080505)
X-Barracuda-Connect: UNKNOWN[192.18.43.133]
X-Barracuda-Start-Time: 1224859958
X-Barracuda-Virus-Scanned: by Catalog.com Spam Firewall at catalog.com
X-Barracuda-Spam-Score: 0.10
X-Barracuda-Spam-Status: No, SCORE=0.10 using per-user scores of TAG_LEVEL=4.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=5.0 tests=RDNS_NONE
X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.8649
	Rule breakdown below
	 pts rule name              description
	---- ---------------------- --------------------------------------------------
	0.10 RDNS_NONE              Delivered to trusted network by a host with no rDNS

Dear Dr. McCalpin,

Please find below STREAM results for Fujitsu SPARC Enterprise
M3000 system to add to the STREAM Web site.

          System Name: Fujitsu SPARC Enterprise M3000
             CPU Name: SPARC64 VII
              CPU MHz: 2520
       CPU(s) enabled: 4 cores, 1 chip, 4 cores/chip, 2 threads/core
        Primary Cache: 128 KB I + 128 KB D on chip per core
      Secondary Cache: 5 MB I+D on chip per chip
               Memory: 32 GB (4GB x 8), 2-way interleaved
     Operating System: Solaris 10 10/08
             Compiler: Sun Studio 12
    Compilation Flags: -fast -m64 -xopenmp -xprefetch=latx:3.1 -xunroll=3
   STREAM Source Code: v5.6 f90 version
          Run Command: ppgsz -o heap=256m ./stream.x

Output:
----------------------------------------------
  Double precision appears to have 16 digits of accuracy
  Assuming 8 bytes per DOUBLE PRECISION word
----------------------------------------------
  ----------------------------------------------
  STREAM Version $Revision: 5.6 $
  ----------------------------------------------
  Array size =   78243206
  Offset     =         22
  The total memory requirement is 1790 MB
  You are running each test  10 times
  --
  The *best* time for each test is used
  *EXCLUDING* the first and last iterations
  ----------------------------------------------
  Number of Threads =  1
  ----------------------------------------------
  Printing one line per active thread....
  ----------------------------------------------------
  Your clock granularity/precision appears to be      1 microseconds
  ----------------------------------------------------
Function     Rate (MB/s)  Avg time   Min time  Max time
Copy:       5556.7507      0.2452      0.2253      0.2560
Scale:      3861.9793      0.3244      0.3242      0.3253
Add:        4490.7144      0.4188      0.4182      0.4197
Triad:      4527.3640      0.4156      0.4148      0.4176
  ----------------------------------------------------
  Solution Validates!
  ----------------------------------------------------

=======================
Thank you,

Brian


Brian Whitney                        Sun Microsystems, Inc.
Strategic Applications Engineering   3295 NW 211th Terrace
office: (503) 617-3304               Hillsboro, OR  97124
fax:    (503) 617-3363               e-mail:  Brian.Whitney@sun.com

