From - Tue Feb 1 18:37:27 2000 Received: from aux153.plano.net ([209.217.36.11]) by Mail.austin.rr.com with Microsoft SMTPSVC(5.5.1877.197.19); Tue, 1 Feb 2000 16:20:57 -0600 Received: (qmail 6702 invoked by uid 10000); 1 Feb 2000 22:36:00 -0000 Delivered-To: mccalpin.com-john@mccalpin.com Received: (qmail 6601 invoked from network); 1 Feb 2000 22:35:56 -0000 Received: from ares.cs.virginia.edu (128.143.136.41) by aux153.plano.net with SMTP; 1 Feb 2000 22:35:56 -0000 Received: from palrel3.hp.com (palrel3.hp.com [156.153.255.226]) by ares.cs.Virginia.EDU (8.9.2/8.9.2/UVACS-2000011700) with ESMTP id RAA10747 for ; Tue, 1 Feb 2000 17:30:26 -0500 (EST) Received: from cmail2.rsn.hp.COM (cmail2.rsn.hp.com [15.99.101.1]) by palrel3.hp.com (Postfix) with ESMTP id 6EB1C8BF for ; Tue, 1 Feb 2000 14:30:20 -0800 (PST) Received: from kcollinspc2 (kcollinspc2.rsn.hp.com [15.99.144.160]) by cmail2.rsn.hp.COM with SMTP (8.7.1/8.7.1) id QAA28803; Tue, 1 Feb 2000 16:30:16 -0600 (CST) Message-Id: <200002012230.QAA28803@cmail2.rsn.hp.COM> X-Sender: kcollins@cmail2.rsn.hp.com X-Mailer: QUALCOMM Windows Eudora Pro Version 4.0 Date: Tue, 01 Feb 2000 16:29:47 -0600 To: mccalpin@cs.virginia.edu From: Kirby Collins Subject: V2600 STREAM Results, dual cpu boards Cc: kcollins@cmail2.rsn.hp.COM Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Return-Path: kcollins@rsn.hp.com X-Mozilla-Status: 8001 X-Mozilla-Status2: 00000000 X-UIDL: e7100000.eml Status: RO Attached are STREAM results for a single node V2600, with dual (two cpu per runway) boards installed. In this configuration a V2600 node supports up to 32 552MHz PA8600 processors. The system had the following OS & compiler revs installed: B3901BA B.11.01.08 HP C/ANSI C Developer's Bundle for HP-UX 11.00 (S800) B3909CA B.11.01.06 HP FORTRAN Compiler and associated products (S800) B3909DB B.11.01.08 HP Fortran 90 Compiler and associated products (S800) XSWGR1100 B.11.00.47 General Release Patches, November 1999 (ACE) PHSS_18300 1.0 ANSI C compiler cumulative patch. PHSS_20206 1.0 Cumulative Fortran90 v2.3 Patch 1 I modified the fortran source to increase the size of the arrays, and to compile in 64-bit (wide) mode (note that HP systems use the LP64 model): rodgers [104] diff stream_d.f stream_d.f.orig 53c53 < PARAMETER (n=20000000,offset=0,ndim=n+offset,ntimes=10) --- > PARAMETER (n=2000000,offset=0,ndim=n+offset,ntimes=10) 57,60c57 < CKLC changes for 64-bit < CKLC INTEGER j,k,nbpw,quantum < INTEGER j,k,quantum < INTEGER*8 nbpw --- > INTEGER j,k,nbpw,quantum 65c62 < INTEGER*8 bytes(4) --- > INTEGER bytes(4) 81c78 < COMMON a,b,c --- > * COMMON a,b,c 338a336 > f90 -o stream_d.mp +Oinfo +DA2.0W +DS2.0 +noppu +O3 +Odataprefetch +FPD -Wl,+pd,64M +Oparallel stream_d.f second_wall.o Except for the 1 way run, I deconfigured cpu boards via firmware to the desired configuration and rebooted for each test. The one way run was performed with the full complement of 32 cpus configured, but the parallelism restricted by setting the MP_NUMBER_OF_THREADS environment variable to 1. ====================================================================== ncpus=1 (32 cpus configured) ---------------------------------------------- Double precision appears to have 16 digits of accuracy Assuming 8 bytes per DOUBLE PRECISION word ---------------------------------------------- Array size = 20000000 Offset = 0 The total memory requirement is 457 MB You are running each test 10 times The *best* time for each test is used ---------------------------------------------------- Your clock granularity/precision appears to be 3 microseconds The tests below will each take a time on the order of 525956 microseconds (= 175319 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) RMS time Min time Max time Copy: 390.0983 0.9007 0.8203 0.9094 Scale: 389.5356 0.8784 0.8215 0.8848 Add: 371.6430 1.2932 1.2916 1.2950 Triad: 376.3773 1.2762 1.2753 1.2772 Sum of a is = 2.306601562980265E+19 Sum of b is = 4.613203126278327E+18 Sum of c is = 6.150937498077968E+18 =============================================================== ncpus=8 (8 cpus configured) ---------------------------------------------- Double precision appears to have 16 digits of accuracy Assuming 8 bytes per DOUBLE PRECISION word ---------------------------------------------- Array size = 20000000 Offset = 0 The total memory requirement is 457 MB You are running each test 10 times The *best* time for each test is used ---------------------------------------------------- Your clock granularity/precision appears to be 3 microseconds The tests below will each take a time on the order of 132629 microseconds (= 44210 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) RMS time Min time Max time Copy: 1539.8016 0.2210 0.2078 0.2546 Scale: 1547.6878 0.2187 0.2068 0.2382 Add: 1645.0469 0.2935 0.2918 0.2981 Triad: 1621.4903 0.2965 0.2960 0.2975 Sum of a is = 2.306601562980265E+19 Sum of b is = 4.613203126278327E+18 Sum of c is = 6.150937498077968E+18 ======================================================== ncpus=16 (16 cpus configured) ---------------------------------------------- Double precision appears to have 16 digits of accuracy Assuming 8 bytes per DOUBLE PRECISION word ---------------------------------------------- Array size = 20000000 Offset = 0 The total memory requirement is 457 MB You are running each test 10 times The *best* time for each test is used ---------------------------------------------------- Your clock granularity/precision appears to be 2 microseconds The tests below will each take a time on the order of 66981 microseconds (= 33490 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) RMS time Min time Max time Copy: 3056.2062 0.1134 0.1047 0.1552 Scale: 3081.3990 0.1131 0.1038 0.1493 Add: 3209.9086 0.1505 0.1495 0.1554 Triad: 3193.9745 0.1508 0.1503 0.1518 Sum of a is = 2.306601562980265E+19 Sum of b is = 4.613203126278327E+18 Sum of c is = 6.150937498077968E+18 =============================================================== ncpus=24 (24 cpus configured) ---------------------------------------------- Double precision appears to have 16 digits of accuracy Assuming 8 bytes per DOUBLE PRECISION word ---------------------------------------------- Array size = 20000000 Offset = 0 The total memory requirement is 457 MB You are running each test 10 times The *best* time for each test is used ---------------------------------------------------- Your clock granularity/precision appears to be 2 microseconds The tests below will each take a time on the order of 62135 microseconds (= 31067 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) RMS time Min time Max time Copy: 3741.4224 0.1075 0.0855 0.1107 Scale: 3946.3325 0.1032 0.0811 0.1060 Add: 3304.5341 0.1467 0.1453 0.1498 Triad: 3283.5793 0.1476 0.1462 0.1498 Sum of a is = 2.306601562980265E+19 Sum of b is = 4.613203126278327E+18 Sum of c is = 6.150937498077968E+18 ============================================================== ncpus=32 (32 cpus configured) ---------------------------------------------- Double precision appears to have 16 digits of accuracy Assuming 8 bytes per DOUBLE PRECISION word ---------------------------------------------- Array size = 20000000 Offset = 0 The total memory requirement is 457 MB You are running each test 10 times The *best* time for each test is used ---------------------------------------------------- Your clock granularity/precision appears to be 2 microseconds The tests below will each take a time on the order of 58336 microseconds (= 29168 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) RMS time Min time Max time Copy: 3993.8620 0.1034 0.0801 0.1118 Scale: 4139.0222 0.1007 0.0773 0.1039 Add: 3543.9800 0.1432 0.1354 0.1872 Triad: 3898.2521 0.1312 0.1231 0.1811 Sum of a is = 2.306601562980265E+19 Sum of b is = 4.613203126278327E+18 Sum of c is = 6.150937498077968E+18 From - Tue Feb 1 18:37:27 2000 Received: from aux153.plano.net ([209.217.36.11]) by Mail.austin.rr.com with Microsoft SMTPSVC(5.5.1877.197.19); Tue, 1 Feb 2000 16:27:03 -0600 Received: (qmail 14264 invoked by uid 10000); 1 Feb 2000 22:42:05 -0000 Delivered-To: mccalpin.com-john@mccalpin.com Received: (qmail 14257 invoked from network); 1 Feb 2000 22:42:04 -0000 Received: from ares.cs.virginia.edu (128.143.136.41) by aux153.plano.net with SMTP; 1 Feb 2000 22:42:04 -0000 Received: from palrel3.hp.com (palrel3.hp.com [156.153.255.226]) by ares.cs.Virginia.EDU (8.9.2/8.9.2/UVACS-2000011700) with ESMTP id RAA10865 for ; Tue, 1 Feb 2000 17:36:40 -0500 (EST) Received: from cmail2.rsn.hp.COM (cmail2.rsn.hp.com [15.99.101.1]) by palrel3.hp.com (Postfix) with ESMTP id 4D7588E0 for ; Tue, 1 Feb 2000 14:36:38 -0800 (PST) Received: from kcollinspc2 (kcollinspc2.rsn.hp.com [15.99.144.160]) by cmail2.rsn.hp.COM with SMTP (8.7.1/8.7.1) id QAA29175; Tue, 1 Feb 2000 16:36:34 -0600 (CST) Message-Id: <200002012236.QAA29175@cmail2.rsn.hp.COM> X-Sender: kcollins@cmail2.rsn.hp.com X-Mailer: QUALCOMM Windows Eudora Pro Version 4.0 Date: Tue, 01 Feb 2000 16:36:05 -0600 To: mccalpin@cs.virginia.edu From: Kirby Collins Subject: V2600 STREAM Results, single cpu boards Cc: kcollins@cmail2.rsn.hp.COM Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Return-Path: kcollins@rsn.hp.com X-Mozilla-Status: 8001 X-Mozilla-Status2: 00000000 X-UIDL: f7100000.eml Status: RO Attached are STREAM results for a single node V2600, with single (one cpu per runway) boards installed. In this configuration a V2600 node supports up to 16 552MHz PA8600 processors (this is commonly referred to and sold as a "technical" configuration). The system had the following OS & compiler revs installed: B3901BA B.11.01.08 HP C/ANSI C Developer's Bundle for HP-UX 11.00 (S800) B3909CA B.11.01.06 HP FORTRAN Compiler and associated products (S800) B3909DB B.11.01.08 HP Fortran 90 Compiler and associated products (S800) XSWGR1100 B.11.00.47 General Release Patches, November 1999 (ACE) PHSS_18300 1.0 ANSI C compiler cumulative patch. PHSS_20206 1.0 Cumulative Fortran90 v2.3 Patch 1 I modified the fortran source to increase the size of the arrays, and to compile in 64-bit (wide) mode (note that HP systems use the LP64 model): rodgers [104] diff stream_d.f stream_d.f.orig 53c53 < PARAMETER (n=20000000,offset=0,ndim=n+offset,ntimes=10) --- > PARAMETER (n=2000000,offset=0,ndim=n+offset,ntimes=10) 57,60c57 < CKLC changes for 64-bit < CKLC INTEGER j,k,nbpw,quantum < INTEGER j,k,quantum < INTEGER*8 nbpw --- > INTEGER j,k,nbpw,quantum 65c62 < INTEGER*8 bytes(4) --- > INTEGER bytes(4) 81c78 < COMMON a,b,c --- > * COMMON a,b,c 338a336 > f90 -o stream_d.mp +Oinfo +DA2.0W +DS2.0 +noppu +O3 +Odataprefetch +FPD -Wl,+pd,64M +Oparallel stream_d.f second_wall.o Except for the 1 way run, I deconfigured cpu boards via firmware to the desired configuration and rebooted for each test. The one way run was performed with the full complement of 16 cpus configured, but the parallelism restricted by setting the MP_NUMBER_OF_THREADS environment variable to 1. ============================================================== ncpus=1 (16 cpus configured) ---------------------------------------------- Double precision appears to have 16 digits of accuracy Assuming 8 bytes per DOUBLE PRECISION word ---------------------------------------------- Array size = 20000000 Offset = 0 The total memory requirement is 457 MB You are running each test 10 times The *best* time for each test is used ---------------------------------------------------- Your clock granularity/precision appears to be 3 microseconds The tests below will each take a time on the order of 525107 microseconds (= 175036 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) RMS time Min time Max time Copy: 390.3334 0.9016 0.8198 0.9106 Scale: 389.9001 0.8548 0.8207 0.8591 Add: 370.2372 1.2978 1.2965 1.2992 Triad: 384.1730 1.2505 1.2494 1.2515 Sum of a is = 2.306601562980265E+19 Sum of b is = 4.613203126278327E+18 Sum of c is = 6.150937498077968E+18 ============================================================== ncpus=4 (4 cpus configured) ---------------------------------------------- Double precision appears to have 16 digits of accuracy Assuming 8 bytes per DOUBLE PRECISION word ---------------------------------------------- Array size = 20000000 Offset = 0 The total memory requirement is 457 MB You are running each test 10 times The *best* time for each test is used ---------------------------------------------------- Your clock granularity/precision appears to be 3 microseconds The tests below will each take a time on the order of 131203 microseconds (= 43734 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) RMS time Min time Max time Copy: 1358.5052 0.2372 0.2356 0.2473 Scale: 1458.0587 0.2287 0.2195 0.2916 Add: 1438.0558 0.3502 0.3338 0.4645 Triad: 1502.8371 0.3220 0.3194 0.3229 Sum of a is = 2.306601562980265E+19 Sum of b is = 4.613203126278327E+18 Sum of c is = 6.150937498077968E+18 ============================================================= ncpus=8 (8 cpus configured) ---------------------------------------------- Double precision appears to have 16 digits of accuracy Assuming 8 bytes per DOUBLE PRECISION word ---------------------------------------------- Array size = 20000000 Offset = 0 The total memory requirement is 457 MB You are running each test 10 times The *best* time for each test is used ---------------------------------------------------- Your clock granularity/precision appears to be 2 microseconds The tests below will each take a time on the order of 66005 microseconds (= 33002 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) RMS time Min time Max time Copy: 2977.6831 0.1411 0.1075 0.2352 Scale: 3004.9765 0.1198 0.1065 0.1253 Add: 2583.4783 0.1880 0.1858 0.1964 Triad: 2653.1797 0.1821 0.1809 0.1897 Sum of a is = 2.306601562980265E+19 Sum of b is = 4.613203126278327E+18 Sum of c is = 6.150937498077968E+18 ============================================================= ncpus=16 (16 cpus configured) ---------------------------------------------- Double precision appears to have 16 digits of accuracy Assuming 8 bytes per DOUBLE PRECISION word ---------------------------------------------- Array size = 20000000 Offset = 0 The total memory requirement is 457 MB You are running each test 10 times The *best* time for each test is used ---------------------------------------------------- Your clock granularity/precision appears to be 2 microseconds The tests below will each take a time on the order of 54744 microseconds (= 27372 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) RMS time Min time Max time Copy: 4093.6950 0.0913 0.0782 0.0929 Scale: 4209.3656 0.0894 0.0760 0.0911 Add: 3663.0876 0.1317 0.1310 0.1326 Triad: 3706.7641 0.1303 0.1295 0.1353 Sum of a is = 2.306601562980265E+19 Sum of b is = 4.613203126278327E+18 Sum of c is = 6.150937498077968E+18 From - Tue Feb 8 19:20:58 2000 Received: from aux153.plano.net ([209.217.36.11]) by Mail.austin.rr.com with Microsoft SMTPSVC(5.5.1877.197.19); Tue, 8 Feb 2000 19:08:05 -0600 Received: (qmail 13555 invoked by uid 10000); 9 Feb 2000 01:23:18 -0000 Delivered-To: mccalpin.com-john@mccalpin.com Received: (qmail 13541 invoked from network); 9 Feb 2000 01:23:18 -0000 Received: from ares.cs.virginia.edu (128.143.136.41) by aux153.plano.net with SMTP; 9 Feb 2000 01:23:18 -0000 Received: from server07.icaen.uiowa.edu (root@server07.icaen.uiowa.edu [128.255.17.47]) by ares.cs.Virginia.EDU (8.9.2/8.9.2/UVACS-2000011700) with ESMTP id UAA02145 for ; Tue, 8 Feb 2000 20:17:56 -0500 (EST) Received: from server01.icaen.uiowa.edu (server01.icaen.uiowa.edu [128.255.17.41]) by server07.icaen.uiowa.edu (8.8.7/8.7.1) with ESMTP id TAA27074 for ; Tue, 8 Feb 2000 19:17:54 -0600 (CST) Received: from l-ecn010.icaen.uiowa.edu (dsiebert@l-ecn010.icaen.uiowa.edu [128.255.17.110]) by server01.icaen.uiowa.edu (8.8.7/8.7.1) with ESMTP id TAA27952; Tue, 8 Feb 2000 19:17:52 -0600 (CST) Received: (from dsiebert@localhost) by l-ecn010.icaen.uiowa.edu (8.9.3 (PHNE_18979)/client-6.6) id TAA22625; Tue, 8 Feb 2000 19:17:36 -0600 (CST) Organization: Iowa Computer Aided Engineering Network, University of Iowa Date: Tue, 8 Feb 2000 19:17:36 -0600 (CST) From: Doug Siebert Sender: dsiebert@icaen.uiowa.edu Reply-To: douglas-siebert@uiowa.edu To: mccalpin@cs.virginia.edu Subject: STREAM results for HP B2000 Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Return-Path: dsiebert@engineering.uiowa.edu X-Mozilla-Status: 8003 X-Mozilla-Status2: 00000000 X-UIDL: b9100000.eml Status: RO I noticed you don't seem to have received any results for any current HP workstations. I just got in a few new HP B2000s today, which have the PA-8500 CPU. I was curious if it improved raw memory bandwidth so I gave STREAM a shot on it versus the C3000. The B2000 has a 400MHz PA-8500, the C3000 a 400MHz PA-8500, and the underlying architecture is pretty much identical. I got essentially identical results on each -- the performance seems to scale linearly on these new systems based on CPU speed, based on past tests with systems using 300MHz and 440Mhz PA-8500s. I'll have to see if that remains true with the higher end 552MHz PA-8600 models when they arrive. These are C results, on a B2000 system with 768MB RAM, using: cc -o stream second_cpu.c stream_d.c +O4 +Oall +Odataprefetch -Wl,-a,archive ------------------------------------------------------------- This system uses 8 bytes per DOUBLE PRECISION word. ------------------------------------------------------------- Array size = 26000000, Offset = 0 Total memory required = 595.1 MB. Each test is run 10 times, but only the *best* time for each is used. ------------------------------------------------------------- Your clock granularity/precision appears to be 9999 microseconds. Each test below will take on the order of 319999 microseconds. (= 32 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) RMS time Min time Max time Copy: 866.6667 0.4890 0.4800 0.4900 Scale: 885.1064 0.4770 0.4700 0.4800 Add: 975.0000 0.6490 0.6400 0.6500 Triad: 960.0000 0.6530 0.6500 0.6600 -- Douglas Siebert Director of Computing Facilities douglas-siebert@uiowa.edu Division of Mathematical Sciences, U of Iowa I'm planning on being dead for most of the new millennium, how about you? From - Mon Feb 28 17:17:29 2000 Received: from aux153.plano.net ([209.217.36.11]) by mail.austin.rr.com with Microsoft SMTPSVC(5.5.1877.197.19); Mon, 28 Feb 2000 17:13:23 -0600 Received: (qmail 4016 invoked by uid 10000); 28 Feb 2000 23:14:57 -0000 Delivered-To: mccalpin.com-john@mccalpin.com Received: (qmail 3997 invoked from network); 28 Feb 2000 23:14:56 -0000 Received: from ares.cs.virginia.edu (128.143.136.41) by aux153.plano.net with SMTP; 28 Feb 2000 23:14:56 -0000 Received: from merlin.mat.uc.pt (merlin.mat.uc.pt [192.138.204.6]) by ares.cs.Virginia.EDU (8.9.2/8.9.2/UVACS-2000011700) with ESMTP id SAA04652 for ; Mon, 28 Feb 2000 18:12:32 -0500 (EST) Received: (from rps@localhost) by merlin.mat.uc.pt (8.9.3/8.9.0) id XAA02298 for mccalpin@cs.virginia.edu; Mon, 28 Feb 2000 23:12:29 GMT Date: Mon, 28 Feb 2000 23:12:29 GMT From: Rui Pedro Mendes Salgueiro Message-Id: <200002282312.XAA02298@merlin.mat.uc.pt> To: mccalpin@cs.virginia.edu Subject: broken links in STREAM's page Return-Path: rps@merlin.mat.uc.pt X-Mozilla-Status: 8003 X-Mozilla-Status2: 00000000 X-UIDL: dd100000.eml Status: RO Hi. I found one broken link in: http://www.cs.virginia.edu/stream/ The link to the Linux version is: ftp://ftp.cs.virginias.edu/pub/stream/Contrib/MasonCabot/linux/stream_l while it should be: ^ ftp://ftp.cs.virginia.edu/pub/stream/Contrib/MasonCabot/linux/stream_l Also, when I tried to execute it I got: ./stream_l: error in loading shared libraries: libstdc++-libc6.0-1.so.2: cannot open shared object file: No such file or directory This is because my system only has more recent versions: # cd /usr/lib ; ls -l libcstdc++* | cut -c55- libstdc++-2-libc6.1-1-2.9.0.a libstdc++-2-libc6.1-1-2.9.0.so libstdc++-libc6.1-1.a.2 -> libstdc++-2-libc6.1-1-2.9.0.a libstdc++-libc6.1-1.so.2 -> libstdc++-2-libc6.1-1-2.9.0.so You might want to make available a static linked version, if you want to make it very easy to run. Creating a "fake" link solved it: /usr/lib # ln -s libstdc++-2-libc6.1-1-2.9.0.so libstdc++-libc6.0-1.so.2 BTW, my results: % dmesg Linux version 2.2.13 CPU: AMD AMD-K7(tm) Processor stepping 02 600 MHz motherboard: FIC SD-11 (AMD 751 North Bridge, VIA 686A South Bridge) memory: 100 MHz, 64 MB % ./stream_l 600 1000 ------------------------------------------------------------- This system uses 8 bytes per DOUBLE PRECISION word. ------------------------------------------------------------- Array size = 999936, Offset = 0 Total memory required = 24.9 MB. Each test is run 1000 times, but only the *best* time for each is used. ------------------------------------------------------------- Your clock granularity/precision appears to be 1 microseconds. (I have 7 such systems, so the following is the best line of each computer.) res_castor2:Function Rate (MB/s) RMS time Min time Max time res_castor2:Copy: 327.0151 0.0502 0.0489 0.0505 res_castor3:Scale: 409.6746 0.0392 0.0391 0.0404 res_castor6:Add: 409.4586 0.0589 0.0586 0.0592 res_castor4:Triad: 417.2070 0.0578 0.0575 0.0581 res_castor2:CPU: AMD AMD-K7(tm) Processor stepping 02 res_castor3:CPU: AMD AMD-K7(tm) Processor stepping 02 res_castor4:CPU: AMD AMD Athlon(tm) Processor stepping 01 res_castor6:CPU: AMD AMD-K7(tm) Processor stepping 02 Similar systems, but with 550 MHz processors: ./stream_l 550 10 res_castor13:Function Rate (MB/s) RMS time Min time Max time res_castor9:Copy: 348.4000 0.0469 0.0459 0.0473 res_castor13:Scale: 420.0487 0.0383 0.0381 0.0386 res_castor13:Add: 421.5415 0.0572 0.0569 0.0576 res_castor13:Triad: 413.5224 0.0583 0.0580 0.0588 res_castor9:CPU: AMD AMD-K7(tm) Processor stepping 02 res_castor13:CPU: AMD AMD-K7(tm) Processor stepping 02 (Curiously only the Triad time is better on the 600 MHz. In the other tests the 550 is faster.) Pentium II 266 MHz, LX chipset, 66MHz memory ./stream_l 266 20 ------------------------------------------------------------- This system uses 8 bytes per DOUBLE PRECISION word. ------------------------------------------------------------- Array size = 999936, Offset = 0 Total memory required = 24.9 MB. Each test is run 20 times, but only the *best* time for each is used. ------------------------------------------------------------- Your clock granularity/precision appears to be 1 microseconds. Function Rate (MB/s) RMS time Min time Max time Copy: 132.2413 0.1702 0.1210 0.2492 Scale: 156.9061 0.1022 0.1020 0.1026 Add: 166.4182 0.1446 0.1442 0.1448 Triad: 164.8150 0.1460 0.1456 0.1471 -- rps From - Fri Mar 24 01:59:39 2000 Received: from aux153.plano.net ([209.217.36.11]) by mail.austin.rr.com with Microsoft SMTPSVC(5.5.1877.357.35); Fri, 24 Mar 2000 02:08:47 -0600 Received: (qmail 4371 invoked by uid 10000); 24 Mar 2000 08:10:03 -0000 Delivered-To: mccalpin.com-john@mccalpin.com Received: (qmail 4367 invoked from network); 24 Mar 2000 08:10:03 -0000 Received: from ares.cs.virginia.edu (128.143.137.19) by aux153.plano.net with SMTP; 24 Mar 2000 08:10:03 -0000 Received: from pop.netgate.net (root@pop.netgate.net [204.145.147.7]) by ares.cs.Virginia.EDU (8.9.2/8.9.2/UVACS-2000011700) with ESMTP id DAA26305 for ; Fri, 24 Mar 2000 03:07:47 -0500 (EST) Received: from [205.214.163.77] (pm3-77.netgate.net [205.214.163.77]) by pop.netgate.net (8.8.5/8.8.8-KB.072299) with ESMTP id EAA08420 for ; Fri, 24 Mar 2000 04:00:57 -0800 (PST) Mime-Version: 1.0 X-Sender: docbob@u2.netgate.net Message-Id: Date: Fri, 24 Mar 2000 00:08:24 -0800 To: mccalpin@cs.virginia.edu From: "Dr. Bob" Subject: mac results Content-Type: text/plain; charset="us-ascii" ; format="flowed" Return-Path: docbob@netgate.net X-Mozilla-Status: 8003 X-Mozilla-Status2: 00000000 X-UIDL: 14200000.eml Status: RO The following was obtained from a dual CPU 450 MHz G4 Macintosh. I compiled the program myself with CodeWarrior pro 4 using your standard code (not that mac optimized code floating around) with the optimizations set to maximum with generic PPC as the target CPU. Other cpu targets were all slightly slower ------------------------------------------------------------- This system uses 8 bytes per DOUBLE PRECISION word. ------------------------------------------------------------- Array size = 400000, Offset = 0 Total memory required = 9.2 MB. Each test is run 10 times, but only the *best* time for each is used. ------------------------------------------------------------- Your clock granularity/precision appears to be 9 microseconds. Each test below will take on the order of 21189 microseconds. (= 2354 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) RMS time Min time Max time Copy: 237.5914 0.0273 0.0269 0.0283 Scale: 270.1106 0.0239 0.0237 0.0244 Add: 235.3403 0.0413 0.0408 0.0421 Triad: 225.9089 0.0429 0.0425 0.0431 ----- "But the whole universe is my city; the world is my local area; my city is my home; and my rooms are my clothes. What are you doing in my trousers?" --Liu Ling circa 260 AD while naked From - Wed Mar 22 18:20:42 2000 Received: from aux153.plano.net ([209.217.36.11]) by Mail.austin.rr.com with Microsoft SMTPSVC(5.5.1877.357.35); Wed, 22 Mar 2000 14:50:36 -0600 Received: (qmail 21939 invoked by uid 10000); 22 Mar 2000 21:03:54 -0000 Delivered-To: mccalpin.com-john@mccalpin.com Received: (qmail 21915 invoked from network); 22 Mar 2000 21:03:53 -0000 Received: from ares.cs.virginia.edu (128.143.137.19) by aux153.plano.net with SMTP; 22 Mar 2000 21:03:53 -0000 Received: from magic.adaptec.com (magic.adaptec.com [208.236.45.80]) by ares.cs.Virginia.EDU (8.9.2/8.9.2/UVACS-2000011700) with ESMTP id QAA13779 for ; Wed, 22 Mar 2000 16:01:41 -0500 (EST) Received: from kingdom.adaptec.com (kingdom.adaptec.com [162.62.50.10]) by magic.adaptec.com (8.8.8+Sun/8.8.8) with ESMTP id NAA10127 for ; Wed, 22 Mar 2000 13:01:10 -0800 (PST) Received: from trillium.adaptec.com (trillium.adaptec.com [162.62.129.51]) by kingdom.adaptec.com (8.8.8+Sun/8.8.8) with ESMTP id NAA13362 for ; Wed, 22 Mar 2000 13:01:09 -0800 (PST) Received: from margaret.trillium.adaptec.com (162.62.129.100) by trillium.adaptec.com with ESMTP (Eudora Internet Mail Server 1.3.1); Wed, 22 Mar 2000 15:03:27 -0600 Message-Id: Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Date: Wed, 22 Mar 2000 15:01:04 -0600 To: mccalpin@cs.virginia.edu From: Anton Rang Subject: STREAM results for Apple G4/400 system ii (w/AltiVec) Return-Path: rang@trillium.adaptec.com X-Mozilla-Status: 8003 X-Mozilla-Status2: 00000000 X-UIDL: 93200000.eml Status: RO Hi, Following up to my previous message...here's some results for an Apple Power Mac G4/400 using the AltiVec stream instructions to prefetch data. Compiler: MetroWerks CodeWarrior Pro 5.3, MW C/C++ PPC 4.0 Compiler flags: Unsigned chars, auto-inline PowerPC struct alignment, Strings Read-Only, Static data in TOC, use FMADD & FMSUB, No Traceback Tables, schedule for AltiVec, optimize for speed, peephole optimizer on, global optimization level 4 Dead strip static initialization code stack size 64k, heap size 11000k If you're interested in the source mods, let me know. I may play with them some more yet as I learn how to use Apple's instrumentation tools. I'm curious as to why the Add test didn't benefit nearly as much from the streaming instructions as the others did. Thanks! -- Anton ------------------------------------------------------------- This system uses 8 bytes per DOUBLE PRECISION word. ------------------------------------------------------------- Array size = 400000, Offset = 0 Total memory required = 9.2 MB. Each test is run 10 times, but only the *best* time for each is used. ------------------------------------------------------------- Your clock granularity/precision appears to be 10 microseconds. Each test below will take on the order of 21671 microseconds. (= 2167 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) RMS time Min time Max time Copy: 477.0779 0.0136 0.0134 0.0138 Scale: 465.2854 0.0139 0.0138 0.0143 Add: 445.5377 0.0217 0.0215 0.0219 Triad: 442.0500 0.0220 0.0217 0.0226 -- This is an unauthorized communication. "The statements and opinions expressed herein are my own and do not necessarily represent those of Adaptec." From - Wed Mar 22 18:20:42 2000 Received: from aux153.plano.net ([209.217.36.11]) by Mail.austin.rr.com with Microsoft SMTPSVC(5.5.1877.357.35); Wed, 22 Mar 2000 13:52:28 -0600 Received: (qmail 18819 invoked by uid 10000); 22 Mar 2000 20:05:45 -0000 Delivered-To: mccalpin.com-john@mccalpin.com Received: (qmail 18800 invoked from network); 22 Mar 2000 20:05:45 -0000 Received: from ares.cs.virginia.edu (128.143.136.41) by aux153.plano.net with SMTP; 22 Mar 2000 20:05:45 -0000 Received: from magic.adaptec.com (magic.adaptec.com [208.236.45.80]) by ares.cs.Virginia.EDU (8.9.2/8.9.2/UVACS-2000011700) with ESMTP id PAA09949 for ; Wed, 22 Mar 2000 15:03:32 -0500 (EST) Received: from kingdom.adaptec.com (kingdom.adaptec.com [162.62.50.10]) by magic.adaptec.com (8.8.8+Sun/8.8.8) with ESMTP id MAA03406 for ; Wed, 22 Mar 2000 12:03:01 -0800 (PST) Received: from trillium.adaptec.com (trillium.adaptec.com [162.62.129.51]) by kingdom.adaptec.com (8.8.8+Sun/8.8.8) with ESMTP id MAA04998 for ; Wed, 22 Mar 2000 12:02:59 -0800 (PST) Received: from margaret.trillium.adaptec.com (162.62.129.100) by trillium.adaptec.com with ESMTP (Eudora Internet Mail Server 1.3.1); Wed, 22 Mar 2000 14:05:17 -0600 Message-Id: Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Date: Wed, 22 Mar 2000 14:02:55 -0600 To: mccalpin@cs.virginia.edu From: Anton Rang Subject: STREAM results for Apple G4/400 system Return-Path: rang@trillium.adaptec.com X-Mozilla-Status: 8001 X-Mozilla-Status2: 00000000 X-UIDL: 83200000.eml Status: RO Hi, I just got a G4 at work and noticed that there weren't any STREAM results for it posted yet. Here's the results for the "standard" PPC604-optimized executable (which does have some cache control instructions in it). If I find time over the next week or so, I'll put together a hand-optimized version using the new Altivec instructions for cache line streaming and run tests with that, too. I didn't rebuild this binary, so the compiler flags etc. are the same as whenever it was last built.... Thanks! -- Anton ------------------------------------------------------------- This system uses 8 bytes per DOUBLE PRECISION word. ------------------------------------------------------------- Array size = 400000, Offset = 0 Total memory required = 9.2 MB. Each test is run 10 times, but only the *best* time for each is used. ------------------------------------------------------------- Your clock granularity/precision appears to be 10 microseconds. Each test below will take on the order of 21532 microseconds. (= 2153 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) RMS time Min time Max time Copy: 383.7391 0.0174 0.0167 0.0217 Scale: 295.6940 0.0227 0.0216 0.0258 Add: 493.3450 0.0197 0.0195 0.0200 Triad: 347.4862 0.0278 0.0276 0.0281 -- This is an unauthorized communication. "The statements and opinions expressed herein are my own and do not necessarily represent those of Adaptec." From mccalpin Tue Apr 18 05:11:56 2000 Return-Path: Received: (from mccalpin@localhost) by ghidora.austin.rr.com (8.9.3/8.9.3) id FAA00915 for mccalpin; Tue, 18 Apr 2000 05:11:56 -0500 Date: Tue, 18 Apr 2000 05:11:56 -0500 From: Red Hat Linux User Message-Id: <200004181011.FAA00915@ghidora.austin.rr.com> To: mccalpin@ghidora.austin.rr.com Subject: Cyrix M-][ 300 Status: RO Please keep this e-mail address PRIVATE. Thank you in advance for you time and consideration in this IMPORTANT matter. I visited the STREAM website and downloaded the source code. It was run on a Cyrix M-][ 300 with 128MB of RAM on a (VIA-chipset-based) Epox EP-58MVP3C-M motherboard. (Unfortunately, only 1 CPU on this motherboard.) My Operating System is Linux 2.2.13 (Mandrake 6.5) and the compiler I used was pgcc-2.91.66. The line I used to compile it was: gcc -O4 stream_d.c second_cpu.c -lm -o stream_d output from the test case follows: ------------------------------------------------------------- This system uses 8 bytes per DOUBLE PRECISION word. ------------------------------------------------------------- Array size = 2500000, Offset = 0 Total memory required = 57.2 MB. Each test is run 10 times, but only the *best* time for each is used. ------------------------------------------------------------- Your clock granularity/precision appears to be 10000 microseconds. Each test below will take on the order of 329999 microseconds. (= 32 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) RMS time Min time Max time Copy: 78.4314 0.5160 0.5100 0.5200 Scale: 78.4314 0.5180 0.5100 0.5200 Add: 92.3077 0.6510 0.6500 0.6600 Triad: 92.3077 0.6520 0.6500 0.6600 From - Tue Apr 25 01:30:25 2000 Received: from aux153.plano.net ([209.217.36.11]) by Mail.austin.rr.com with Microsoft SMTPSVC(5.5.1877.357.35); Mon, 24 Apr 2000 10:00:07 -0500 Received: (qmail 6038 invoked by uid 10000); 24 Apr 2000 15:13:51 -0000 Delivered-To: mccalpin.com-john@mccalpin.com Received: (qmail 5995 invoked from network); 24 Apr 2000 15:13:49 -0000 Received: from unknown (HELO HPTI?MAIN.hpti.com) (63.87.135.214) by aux153.plano.net with SMTP; 24 Apr 2000 15:13:49 -0000 Received: from hptilap (63.87.135.221 [63.87.135.221]) by HPTI_MAIN.hpti.com with SMTP (Microsoft Exchange Internet Mail Service Version 5.5.2650.21) id HTB2TGHX; Mon, 24 Apr 2000 11:06:48 -0400 Reply-To: From: "Greg Lindahl" To: Subject: new stream result Date: Mon, 24 Apr 2000 11:11:44 -0400 Message-ID: <000901bfadff$673a4140$d002000a@hptilap.hpti.com> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit X-Priority: 3 (Normal) X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook 8.5, Build 4.71.2173.0 In-Reply-To: <38F077A1.351B2EDB@austin.rr.com> Importance: Normal X-MimeOLE: Produced By Microsoft MimeOLE V4.72.3110.3 Return-Path: glindahl@hpti.com X-Mozilla-Status: 8003 X-Mozilla-Status2: 00000000 X-UIDL: db200000.eml Status: RO If you don't have a Compaq DS10L (slate) entry yet: Function Rate (MB/s) RMS time Min time Max time Copy: 755.3222 0.0425 0.0424 0.0437 Scale: 740.1767 0.0433 0.0432 0.0436 Add: 661.1483 0.0726 0.0726 0.0728 Triad: 677.7943 0.0708 0.0708 0.0709 It only uses half of the memory slots so it's a bit slower than the DS10. This was fort -fast -tune ev6 -arch ev6 Looks like the DS40 only has about 2 GB/s total for the 4 processors. The results for it are strange; I would hazard to guess that the motherboard chipset behaves differently under heavy load than it does under light load. If I run 1-3 "long" streams and then a short one, I get the same answer (~550 mb/s) no matter how many "longs" are runing. I think I should write mpistream. It will be useful for both SMP machines and for using stream to find out if a cluster of machines is uniform or not. And it's better methodology than this long/short thing. -- g From mccalpin Tue Apr 25 02:09:31 2000 Return-Path: Received: (from mccalpin@localhost) by ghidora.austin.rr.com (8.9.3/8.9.3) id CAA01267 for mccalpin; Tue, 25 Apr 2000 02:09:30 -0500 Date: Tue, 25 Apr 2000 02:09:30 -0500 From: John McCalpin Message-Id: <200004250709.CAA01267@ghidora.austin.rr.com> To: mccalpin@ghidora.austin.rr.com Subject: PowerComputing PowerCurve 601/120 Status: RO ---------------------------------------------- Double precision appears to have 16 digits of accuracy Assuming 8 bytes per DOUBLE PRECISION word ---------------------------------------------- Array size = 1000000 Offset = 0 The total memory requirement is 22 MB You are running each test 10 times The *best* time for each test is used ---------------------------------------------------- Your clock granularity/precision appears to be 10000 microseconds The tests below will each take a time on the order of 230000 microseconds (= 23 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) RMS time Min time Max time Copy: 45.7145 0.3620 0.3500 0.3700 Scale: 45.7144 0.3724 0.3500 0.4100 Add: 51.0638 0.4851 0.4700 0.5000 Triad: 50.0000 0.4891 0.4800 0.5100 Sum of a is = 1.15330078E+18 Sum of b is = 2.30660156E+17 Sum of c is = 3.07546875E+17 From - Sun Apr 2 17:10:07 2000 Received: from aux153.plano.net ([209.217.36.11]) by Mail.austin.rr.com with Microsoft SMTPSVC(5.5.1877.357.35); Sun, 2 Apr 2000 11:36:22 -0500 Received: (qmail 19935 invoked by uid 10000); 2 Apr 2000 16:49:53 -0000 Delivered-To: mccalpin.com-john@mccalpin.com Received: (qmail 19925 invoked from network); 2 Apr 2000 16:49:52 -0000 Received: from magic.adaptec.com (208.236.45.80) by aux153.plano.net with SMTP; 2 Apr 2000 16:49:52 -0000 Received: from kingdom.adaptec.com (kingdom.adaptec.com [162.62.50.10]) by magic.adaptec.com (8.8.8+Sun/8.8.8) with ESMTP id JAA22400 for ; Sun, 2 Apr 2000 09:47:02 -0700 (PDT) Received: from trillium.adaptec.com (trillium.adaptec.com [162.62.129.51]) by kingdom.adaptec.com (8.8.8+Sun/8.8.8) with ESMTP id JAA27251 for ; Sun, 2 Apr 2000 09:47:00 -0700 (PDT) Received: from margaret.trillium.adaptec.com (162.62.129.100) by trillium.adaptec.com with ESMTP (Eudora Internet Mail Server 1.3.1); Sun, 2 Apr 2000 11:49:20 -0500 Message-Id: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="============_-1257428479==_============" Date: Sun, 2 Apr 2000 11:46:56 -0500 To: john@mccalpin.com From: Anton Rang Subject: Re: STREAM results for Apple G4/400 system ii (w/AltiVec) Return-Path: rang@trillium.adaptec.com X-Mozilla-Status: 8011 X-Mozilla-Status2: 00000000 X-UIDL: c6200000.eml Status: RO --============_-1257428479==_============ Content-Type: text/plain; charset="us-ascii" Hi again, Here's the STREAM results for a hand-tuned version running on an Apple G4 machine. As before, it's a 400 MHz system; it may also be worth noting that my test machine has 3-2-2 SDRAM installed. The major change between my previous results and this one are that I recoded the inner loop into assembly and added use of 'dcbz'. The prefetch strategy is similar to the previous, but the exact parameters used may have been improved. (Empirically these settings seem to work a little better, though theoretically there shouldn't really be any difference. I wish I knew exactly how the data streaming was implemented.) Looking at these, the improvement is reasonably good for what after all is a memory-bandwidth limited test. Presumably most if not all of this is due to using dcbz. Copy: 19% Scale: 17% Add: 9% Triad: 12% The results fluctuate more than I'd like from run to run, even when bumping up the array size or number of runs. I suspect some hidden state (TLBs, perhaps) is affecting the results. I don't know why the 'add' test runs more slowly than 'triad'. This is quite counterintuitive as the inner loop is exactly the same except that triad is using multiply-adds, which are somewhat slower than additions. The simulator I'm using claims each should run in the same number of clock cycles (the extra latency of the multiplication is hidden by memory stalls), but real life is different. I've attached my hard-coded loops. (I modified the main source to just call these procedures.) Thanks again! -- Anton ------------------------------------------------------------- This system uses 8 bytes per DOUBLE PRECISION word. ------------------------------------------------------------- Array size = 400000, Offset = 0 Total memory required = 9.2 MB. Each test is run 20 times, but only the *best* time for each is used. ------------------------------------------------------------- Your clock granularity/precision appears to be 10 microseconds. Each test below will take on the order of 21117 microseconds. (= 2111 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) RMS time Min time Max time Copy: 569.6991 0.0115 0.0112 0.0118 Scale: 545.0055 0.0119 0.0117 0.0123 Add: 484.1150 0.0200 0.0198 0.0202 Triad: 497.1517 0.0195 0.0193 0.0198 --============_-1257428479==_============ Content-Type: text/plain; name="proc-dcbz.c"; charset="us-ascii" Content-Disposition: attachment; filename="proc-dcbz.c" #include "pitsTT6lib.h" #define UNROLL_A 8 #define BREAKb 4 #define BREAKc 4 #define BREAKd 4 #define PARAM ((16 << 24) | (32 << 16) | 64) #define AV_SIZE 24 #define AV_COUNT 16 #define AV_STRIDE 0 #include "trace.h" #if TRACE void start_trace(char *name) { char buf[16]; strcpy(buf, name); startTrace(buf); } void stop_trace(void) { stopTrace(); } #else #define start_trace(name) #define stop_trace() #endif void do_copy(double *a, double *b, double *c, double scalar, int N) { int i; register double *ai, *ci; register int k8 = 8; register int k40 = 40; start_trace("copy"); vec_dstt((__vector float *) &a[0], (2 << AV_SIZE) | (255 << AV_COUNT) | (32 << AV_STRIDE), 0); ai = &a[-1]; // bias backwards by 8 bytes; allows use of address-update below ci = &c[-1]; for (i = 0; i < N; i += UNROLL_A) { register double t0, t1, t2, t3; asm { dcbz k8, ci dcbz k40, ci lfd t0, 8(ai) lfd t1, 16(ai) lfd t2, 24(ai) lfd t3, 32(ai) stfd t0, 8(ci) stfd t1, 16(ci) stfd t2, 24(ci) stfd t3, 32(ci) lfd t0, 40(ai) lfd t1, 48(ai) lfd t2, 56(ai) lfdu t3, 64(ai) stfd t0, 40(ci) stfd t1, 48(ci) stfd t2, 56(ci) stfdu t3, 64(ci) } if ((i & 255) == 256-UNROLL_A) vec_dstt((__vector float *) &a[i+128], (2 << AV_SIZE) | (255 << AV_COUNT) | (32 << AV_STRIDE), 0); } vec_dssall(); stop_trace(); } void do_scale(double *a, double *b, double *c, register double scalar, int N) { int i; register double *ai, *ci; register int k8 = 8; register int k40 = 40; start_trace("scale"); vec_dstt((__vector float *) &a[0], (2 << AV_SIZE) | (255 << AV_COUNT) | (32 << AV_STRIDE), 0); ai = &a[-1]; // bias backwards by 8 bytes; allows use of address-update below ci = &c[-1]; for (i = 0; i < N; i += UNROLL_A) { register double t0, t1, t2, t3, t4, t5, t6, t7; asm { dcbz k8, ci dcbz k40, ci lfd t0, 8(ai) lfd t1, 16(ai) fmul t0, t0, scalar lfd t2, 24(ai) lfd t3, 32(ai) fmul t1, t1, scalar stfd t0, 8(ci) fmul t2, t2, scalar stfd t1, 16(ci) fmul t3, t3, scalar stfd t2, 24(ci) stfd t3, 32(ci) lfd t0, 40(ai) lfd t1, 48(ai) fmul t0, t0, scalar lfd t2, 56(ai) lfdu t3, 64(ai) fmul t1, t1, scalar stfd t0, 40(ci) fmul t2, t2, scalar stfd t1, 48(ci) fmul t3, t3, scalar stfd t2, 56(ci) stfdu t3, 64(ci) } if ((i & 255) == 256-UNROLL_A) vec_dstt((__vector float *) &a[i+128], (2 << AV_SIZE) | (255 << AV_COUNT) | (32 << AV_STRIDE), 0); } vec_dssall(); stop_trace(); } void do_add(double *a, double *b, double *c, double scalar, int N) { int i; register double *ai, *bi, *ci; register int k8 = 8; register int k40 = 40; start_trace("add"); vec_dstt((__vector float *) &a[0], (2 << AV_SIZE) | (255 << AV_COUNT) | (32 << AV_STRIDE), 0); vec_dstt((__vector float *) &b[0], (2 << AV_SIZE) | (255 << AV_COUNT) | (32 << AV_STRIDE), 1); ai = &a[-1]; // bias backwards by 8 bytes; allows use of address-update below bi = &b[-1]; ci = &c[-1]; for (i = 0; i < N; i += UNROLL_A) { register double t0, t1, t2, t3, u0, u1, u2, u3; asm { dcbz k8, ci dcbz k40, ci lfd t0, 8(ai) lfd t1, 16(ai) lfd u0, 8(bi) lfd u1, 16(bi) fadd t0, t0, u0 lfd t2, 24(ai) lfd t3, 32(ai) fadd t1, t1, u1 lfd u2, 24(bi) lfd u3, 32(bi) stfd t0, 8(ci) fadd t2, t2, u2 stfd t1, 16(ci) fadd t3, t3, u3 stfd t2, 24(ci) stfd t3, 32(ci) lfd t0, 40(ai) lfd t1, 48(ai) lfd u0, 40(bi) lfd u1, 48(bi) fadd t0, t0, u0 lfd t2, 56(ai) lfdu t3, 64(ai) fadd t1, t1, u1 lfd u2, 56(bi) lfdu u3, 64(bi) stfd t0, 40(ci) fadd t2, t2, u2 stfd t1, 48(ci) fadd t3, t3, u3 stfd t2, 56(ci) stfdu t3, 64(ci) } if ((i & 255) == 256-UNROLL_A) { vec_dstt((__vector float *) &a[i+128], (2 << AV_SIZE) | (255 << AV_COUNT) | (32 << AV_STRIDE), 0); vec_dstt((__vector float *) &b[i+128], (2 << AV_SIZE) | (255 << AV_COUNT) | (32 << AV_STRIDE), 1); } } vec_dssall(); stop_trace(); } void do_triad(double *a, double *b, double *c, register double scalar, int N) { int i; register double *ai, *bi, *ci; register int k8 = 8; register int k40 = 40; start_trace("triad"); vec_dstt((__vector float *) &a[0], (2 << AV_SIZE) | (255 << AV_COUNT) | (32 << AV_STRIDE), 0); vec_dstt((__vector float *) &b[0], (2 << AV_SIZE) | (255 << AV_COUNT) | (32 << AV_STRIDE), 1); ai = &a[-1]; // bias backwards by 8 bytes; allows use of address-update below bi = &b[-1]; ci = &c[-1]; for (i = 0; i < N; i += UNROLL_A) { register double t0, t1, t2, t3, u0, u1, u2, u3; asm { dcbz k8, ci dcbz k40, ci lfd t0, 8(ai) lfd t1, 16(ai) lfd u0, 8(bi) lfd u1, 16(bi) fmadd t0, scalar, t0, u0 lfd t2, 24(ai) lfd t3, 32(ai) fmadd t1, scalar, t1, u1 lfd u2, 24(bi) lfd u3, 32(bi) stfd t0, 8(ci) fmadd t2, scalar, t2, u2 stfd t1, 16(ci) fmadd t3, scalar, t3, u3 stfd t2, 24(ci) stfd t3, 32(ci) lfd t0, 40(ai) lfd t1, 48(ai) lfd u0, 40(bi) lfd u1, 48(bi) fmadd t0, scalar, t0, u0 lfd t2, 56(ai) lfdu t3, 64(ai) fmadd t1, scalar, t1, u1 lfd u2, 56(bi) lfdu u3, 64(bi) stfd t0, 40(ci) fmadd t2, scalar, t2, u2 stfd t1, 48(ci) fmadd t3, scalar, t3, u3 stfd t2, 56(ci) stfdu t3, 64(ci) } if ((i & 255) == 256-UNROLL_A) { vec_dstt((__vector float *) &a[i+128], (2 << AV_SIZE) | (255 << AV_COUNT) | (32 << AV_STRIDE), 0); vec_dstt((__vector float *) &b[i+128], (2 << AV_SIZE) | (255 << AV_COUNT) | (32 << AV_STRIDE), 1); } } vec_dssall(); stop_trace(); } --============_-1257428479==_============ Content-Type: text/plain; charset="us-ascii" -- This is an unauthorized communication. "The statements and opinions expressed herein are my own and do not necessarily represent those of Adaptec." --============_-1257428479==_============-- From - Thu May 4 01:25:49 2000 Received: from aux153.plano.net ([209.217.36.11]) by mail.austin.rr.com with Microsoft SMTPSVC(5.5.1877.357.35); Wed, 3 May 2000 14:52:05 -0500 Received: (qmail 11249 invoked by uid 10000); 3 May 2000 19:52:36 -0000 Delivered-To: mccalpin.com-john@mccalpin.com Received: (qmail 8157 invoked from network); 3 May 2000 19:50:50 -0000 Received: from ares.cs.virginia.edu (128.143.137.19) by aux153.plano.net with SMTP; 3 May 2000 19:50:50 -0000 Received: from timbuk.cray.com ([128.162.8.102]) by ares.cs.Virginia.EDU (8.9.2/8.9.2/UVACS-2000040300) with ESMTP id PAA00257 for ; Wed, 3 May 2000 15:49:05 -0400 (EDT) Received: from ledzep.cray.com (ledzep.cray.com [137.38.226.97]) by timbuk.cray.com (8.8.8/CRI-gate-news-1.3) with ESMTP id OAA06983 for ; Wed, 3 May 2000 14:48:55 -0500 (CDT) Received: from orchid-e194.americas.sgi.com (orchid-e185.cray.com [128.162.185.209]) by ledzep.cray.com (SGI-SGI-8.9.3/craymail-smart-nospam1.0) with ESMTP id OAA26034 for ; Wed, 3 May 2000 14:48:56 -0500 (CDT) Received: from scout.americas.sgi.com (scout.americas.sgi.com [128.162.184.102]) by orchid-e194.americas.sgi.com (8.8.8/SGI-server-1.4) with SMTP id OAA1139304; Wed, 3 May 2000 14:48:55 -0500 (CDT) Date: Wed, 3 May 2000 14:48:55 -0500 From: Joe Glenski X-Sender: glenski@scout.americas.sgi.com Reply-To: glenski@sgi.com To: mccalpin@cs.virginia.edu cc: Joe Glenski Subject: Streams results for Cray T3E-1200 Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Return-Path: glenski@sgi.com X-Mozilla-Status: 8001 X-Mozilla-Status2: 00000000 X-UIDL: 2e200000.eml Status: RO John- Shown below are "stream" results for a 600 MHz CRAY T3E-1200 with 512 PEs. A copy of the program used (based on the one C. Grassl used for earlier T3E systems) is also included. Regards, -Joe Glenski. Benchmarking Group Cray Inc., 655F Lone Oak Drive, Eagan, MN 55121 USA glenski@cray.com ------------------------------------------------------------------------ Number of iterations: 10 Size of Arrays: 501 Kwords STREAM Memory Bandwidth for Cray T3E-1200 4/28/2000 All results are in MB/s --- 1 MB=10^6 B, *not* 2^20 B --------------------------------------------------------- Machine ID ncpus COPY SCALE ADD TRIAD Saxpy 1-Load 1-Store --------------------------------------------------------- Cray_T3E-1200 1 474. 480. 566. 558. 446. 397. 327. Cray_T3E-1200 2 951. 962. 1131. 1115. 894. 794. 645. Cray_T3E-1200 4 1902. 1918. 2262. 2230. 1788. 1587. 1284. Cray_T3E-1200 8 3800. 3849. 4523. 4458. 3577. 3173. 2376. Cray_T3E-1200 16 7616. 7696. 9046. 8913. 7153. 6347. 4733. Cray_T3E-1200 32 15194. 15386. 18088. 17829. 14304. 12710. 9348. Cray_T3E-1200 64 30459. 30764. 36170. 35646. 28607. 25385. 18473. Cray_T3E-1200 128 60882. 61554. 72335. 71283. 57209. 50765. 36516. Cray_T3E-1200 256 121503. 123064. 144679. 142580. 114418. 101525. 72635. Cray_T3E-1200 512 242981. 246031. 288345. 284920. 228289. 203031. 145731. COPY, SCALE, ADD, TRIAD are standard STREAM benchmark. Saxpy, 1-Load, 1-Store are additional cray-only tests. ----------------------------------------------------------------------- program Stream C Based on a version from: C. Grassl, Apr 18 1997 C C Extended by Grassl to report results for three additional C tests, "Saxpy", "1 Load", and "1 Store". C C Updated 4/28/2000 J. Glenski to avoid compiler warnings. integer ofst,aoff,boff,coff parameter (N = 501*1024, NTIMES = 10) parameter (ofst = 8*1024) real*8 a(N+8*1024),b(N+8*1024),c(N+8*1024) common /acom/a,b,c real times(7) real avetime(7),rmstime(7),mintime(7),maxtime(7) character*10 label(7) integer bytes(7),flops(7) data avetime/7*0.0/ data rmstime/7*0.0/ data mintime/7*1.0e+36/ data maxtime/7*0.0/ data label/' Copy', . ' Scale', . ' Sum', . ' Triad', . ' Saxpy', . ' 1 Load', . '1 Store'/ parameter (nbpw = 8 ) data bytes/2,2,3,3,3,1,1/ data flops/0,1,1,2,2,1,0/ integer shmem_my_pe,shmem_n_pes round_up(ix,index) = ((ix + (index-1))/index)*index me = shmem_my_pe() numpes = shmem_n_pes() istart_a = loc(a) istart_b = loc(b) istart_c = loc(c) istart_a = (round_up(istart_a,8092) - istart_a)/8 + 1 istart_b = (round_up(istart_b,8092) - istart_b)/8 + 1 istart_c = (round_up(istart_c,8092) - istart_c)/8 + 1 if ( me .eq. 0 ) then write(6,9020) numpes,ntimes,n/1024 write(6,9030) (label(j),j=1,7) end if do 1000 k=1,NTIMES call bandwidth(n,a(istart_a), b(istart_b), c(istart_c), times) avetime = avetime + times rmstime = rmstime + times**2 mintime = min( mintime, times ) maxtime = max( maxtime, times ) if ( me .eq. 0) then write(6,9040) k,(N*bytes(j)*nbpw*numpes/times(j)/1.0e6,j=1,7) end if 1000 continue if ( me .eq. 0) then avetime = avetime/NTIMES write(6,9050) (N*bytes(j)*nbpw*numpes/mintime(j)/1.0e6,j=1,7), . (N*bytes(j)*nbpw*numpes/avetime(j)/1.0e6,j=1,7), . (N*bytes(j)*nbpw*numpes/maxtime(j)/1.0e6,j=1,7) end if call exit() 9020 format( /' *** STREAM benchmark ***' . /' Number of PEs: ',i8 . /' Number of iterations: ',i8 . /' Size of Arrays: ',i8,' Kwords') 9030 format(// 30(' '),'Bandwidth (Mbyte/s)' . /' Iterat. ',7a10, . / (' -------'),7(' ---------')) 9040 format ( i6,2x,7f10.0) 9050 format (/' Max: ',7f10.0/ . ' Ave: ',7f10.0/ . ' Min: ',7f10.0/) end subroutine dummysub(a,b,c,n) real a(*),b(*),c(*) return end subroutine bandwidth(n,a,b,c,times) real*8 a(n),b(n),c(n) real*8 times(7) data scalar /3.0/ common /bandcom/ sum timer()=0.001*timef() t = timer() do j=1,N c(j) = a(j) end do call barrier times(1) = timer()-t call dummysub(a,b,c,n) t = timer() do j=1,N c(j) = scalar*a(j) end do call barrier times(2) = timer()-t call dummysub(a,b,c,n) t = timer() do j=1,N c(j) = a(j) + b(j) end do call barrier times(3) = timer()-t call dummysub(a,b,c,n) t = timer() do j=1,N c(j) = a(j)+scalar*b(j) end do call barrier times(4) = timer()-t call dummysub(a,b,c,n) t = timer() do j=1,N c(j) = c(j)+scalar*b(j) end do call barrier times(5) = timer()-t call dummysub(a,b,c,n) sum = 0. t = timer() do j=1,N sum = sum + a(j) end do call barrier times(6) = timer()-t call dummysub(a,b,c,n) t = timer() do j=1,N c(j) = 0. end do call barrier times(7) = timer()-t call dummysub(a,b,c,n) return end ------------------------------------------------------ From - Thu May 4 03:02:11 2000 Received: from aux153.plano.net ([209.217.36.11]) by Mail.austin.rr.com with Microsoft SMTPSVC(5.5.1877.357.35); Thu, 4 May 2000 07:11:12 -0500 Received: (qmail 12134 invoked by uid 10000); 4 May 2000 12:25:17 -0000 Delivered-To: mccalpin.com-john@mccalpin.com Received: (qmail 12068 invoked from network); 4 May 2000 12:25:12 -0000 Received: from ares.cs.virginia.edu (128.143.136.41) by aux153.plano.net with SMTP; 4 May 2000 12:25:12 -0000 Received: from dv.st.dlr.de (dv.st.dlr.de [129.247.158.2]) by ares.cs.Virginia.EDU (8.9.2/8.9.2/UVACS-2000040300) with ESMTP id IAA01931 for ; Thu, 4 May 2000 08:23:18 -0400 (EDT) Received: from debis-sfr.de (root@thales.rz.st.dlr.de [129.247.141.55]) by dv.st.dlr.de (8.10.1/8.10.1) with ESMTP id e44CN6N102532 for ; Thu, 4 May 2000 14:23:10 +0200 Sender: root@dv.st.dlr.de Message-ID: <39119450.10761EBC@debis-sfr.de> Date: Thu, 04 May 2000 17:16:32 +0200 From: Christian Simmendinger Organization: Debis-Sfr X-Mailer: Mozilla 4.7 [en] (X11; I; Linux 2.2.13 i686) X-Accept-Language: en MIME-Version: 1.0 To: mccalpin@cs.virginia.edu Subject: SR8000 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Return-Path: christian.simmendinger@debis-sfr.de X-Mozilla-Status: 8001 X-Mozilla-Status2: 00000000 X-UIDL: 4e200000.eml Status: RO Hi there: Noted you don't have the SR8000 there yet. SR8000 Hi-UX/MPP 1 NODE --------------------------------------------- Double precision appears to have 16 digits of accuracy Assuming 8 bytes per DOUBLE PRECISION word --------------------------------------------- Array size = 20000000 Offset = 0 The total memory requirement is 457 MB You are running each test 10 times The *best* time for each test is used ---------------------------------------------------- Your clock granularity/precision appears to be 46 microseconds The tests below will each take a time on the order of 14908 microseconds (= 324 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. ---------------------------------------------------- unction Rate (MB/s) RMS time Min time Max time opy: 20834.6898 0.0154 0.0154 0.0154 cale: 22046.1591 0.0146 0.0145 0.0146 dd: 22787.6946 0.0211 0.0211 0.0212 riad: 22481.3826 0.0214 0.0214 0.0214 Sum of a is = 0.230660156249589883E+020 Sum of b is = 0.461320312478157210E+019 Sum of c is = 0.615093750014500454E+019 Flags: f90 -ssopt -parallel -o stream stream_d.f Cheers ! Christian From henning@perfom.zko.dec.com Mon May 15 03:35:44 2000 To: john@mccalpin.com Date: Thu, 11 May 2000 18:21:39 -0400 Subject: STREAM on GS320 (confidential until Tuesday) Mime-Version: 1.0 Message-ID: <852568DC.007AC47D.00@d54mta05.raleigh.ibm.com> From: henning@perfom.zko.dec.com (John Henning) Status: RO Hi John, This is the AlphaServer GS320, with 32 CPUs. Thanks for agreeing to set up a cron job to make it visible early Tuesday! Just fyi: The following edits have been applied to the material that follows: whitespace/lines added for readability; line wraps added to long lines (so mailers don't wrap them); control characters removed that my shell graciously (?) inserted when I used some of its features. Thanks again - john Script started on Wed May 10 13:29:09 2000 % head -1 /etc/motd Compaq Tru64 UNIX T5.1-9 (Rev. 564); Wed May 10 11:58:33 EDT 2000 % what /shlib/libpthread.so | grep DECth DECthreads version V3.18-023 May 9 2000 % diff stream_d.f_as_at_ftp_site_22may97 mcc_omp_nodebug.f 0a1 > * this version 09-May-2000 j. henning 52,53c53,54 < INTEGER n,offset,ndim,ntimes < PARAMETER (n=2000000,offset=0,ndim=n+offset,ntimes=10) --- > INTEGER*8 n,offset,ndim,ntimes,maxtimes > PARAMETER (maxtimes=10000) 57c58,59 < INTEGER j,k,nbpw,quantum --- > INTEGER*8 j,k,nbpw,quantum > 61,62c63,64 < $ times(4,ntimes) < INTEGER bytes(4) --- > $ times(4,maxtimes) > INTEGER*8 bytes(4) 75c77 < DOUBLE PRECISION a(ndim),b(ndim),c(ndim) --- > REAL*8, ALLOCATABLE:: a(:),b(:),c(:) 88a91,97 > PRINT *, "n, offset, ntimes" > READ *, n, offset, ntimes > ndim=n+offset > IF (ntimes .gt. maxtimes) ntimes=maxtimes > > ALLOCATE (a(ndim), b(ndim), c(ndim)) > CALL defend_wrap 94c103 < $ 3*nbpw*n/ (1024*1024),' MB' --- > $ 3D0*nbpw*DBLE(n)/ (1024d0*1024),' MB' 97a107,108 > c$omp parallel > c$omp do 102a114 > c$omp end parallel 103a116,117 > c$omp parallel > c$omp do 106a121 > c$omp end parallel 128a144,145 > c$omp parallel > c$omp do 131a149 > c$omp end parallel 135a154,155 > c$omp parallel > c$omp do 138a159 > c$omp end parallel 142a164,165 > c$omp parallel > c$omp do 145a169 > c$omp end parallel 149a174,175 > c$omp parallel > c$omp do 152a179 > c$omp end parallel 154a182 > 170a199 > 185c214 < 9020 FORMAT (1x,a,i4,a) --- > 9020 FORMAT (1x,a,f10.2,a) 334a364,383 > END > > SUBROUTINE DEFEND_WRAP > INTEGER count, count_rate, count_max > CALL SYSTEM_CLOCK ( count, count_rate, count_max ) > IF (DBLE(count) .GT. .999*DBLE(count_max)) THEN > PRINT *,"Oops, this code won't handle a wrapping system_clock" > PRINT *,"and soon we will wrap." > PRINT 4, "count:", count, "count_max:", count_max > 4 FORMAT (1X, A10, I16) > PRINT *,"Try again later, or fix the code to handle wraps." > PRINT *,"(The counter wraps approx once every 60 hours)" > STOP > END IF > END > > DOUBLE PRECISION FUNCTION second > INTEGER count, count_rate, count_max > CALL SYSTEM_CLOCK ( count, count_rate, count_max ) > second = DBLE(count)/DBLE(count_rate) % ------------------------------ % cat !$ % cat mcc_omp_nodebug.f * this version 09-May-2000 j. henning * Program: Stream * Programmer: John D. McCalpin * Revision: 4.1, June 4, 1996 * * This program measures memory transfer rates in MB/s for simple * computational kernels coded in Fortran. These numbers reveal the * quality of code generation for simple uncacheable kernels as well * as showing the cost of floating-point operations relative to memory * accesses. * *========================================================================= * INSTRUCTIONS: * 1) Stream requires a cpu timing function called second(). * A sample is shown below. This is unfortunately rather * system dependent. The code attempts to determine the * granularity of the clock to help interpret the results. * For dedicated or parallel runs, you might want to comment * these out and compile/link with "wallclock.c". * 2) Stream requires a good bit of memory to run. * Adjust the Parameter 'N' in the main program to give * a 'timing calibration' of at least 20 clicks. * This will provide rate estimates that should be good to * about 5% precision. * ------------------------------------------------------------ * Note that you are free to use any array length and offset * that makes each array larger than the last-level cache. * The intent is to determine the *best* sustainable bandwidth * available with this simple coding. Of course, lower values * are usually fairly easy to obtain on cached machines, but * by keeping the test to the *best* results, the answers are * easier to interpret. * You may put the arrays in common or not, at your discretion. * There is a commented-out COMMON statement below. * ------------------------------------------------------------ * 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 * Please let me know if this happens. * 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 *========================================================================= * PROGRAM stream * IMPLICIT NONE C .. Parameters .. INTEGER*8 n,offset,ndim,ntimes,maxtimes PARAMETER (maxtimes=10000) C .. C .. Local Scalars .. DOUBLE PRECISION dummy,scalar,t INTEGER*8 j,k,nbpw,quantum C .. C .. Local Arrays .. DOUBLE PRECISION maxtime(4),mintime(4),rmstime(4),sum(3), $ times(4,maxtimes) INTEGER*8 bytes(4) CHARACTER label(4)*11 C .. C .. External Functions .. DOUBLE PRECISION second INTEGER checktick,realsize EXTERNAL second,checktick,realsize C .. C .. Intrinsic Functions .. C INTRINSIC dble,max,min,nint,sqrt C .. C .. Arrays in Common .. REAL*8, ALLOCATABLE:: a(:),b(:),c(:) C .. C .. Common blocks .. * COMMON a,b,c C .. C .. Data statements .. DATA rmstime/4*0.0D0/,mintime/4*1.0D+36/,maxtime/4*0.0D0/ DATA label/'Copy: ','Scale: ','Add: ', $ 'Triad: '/ DATA bytes/2,2,3,3/,dummy/0.0d0/ C .. * --- SETUP --- determine precision and check timing --- PRINT *, "n, offset, ntimes" READ *, n, offset, ntimes ndim=n+offset IF (ntimes .gt. maxtimes) ntimes=maxtimes ALLOCATE (a(ndim), b(ndim), c(ndim)) CALL defend_wrap nbpw = realsize() WRITE (*,FMT=9010) 'Array size = ',n WRITE (*,FMT=9010) 'Offset = ',offset WRITE (*,FMT=9020) 'The total memory requirement is ', $ 3D0*nbpw*DBLE(n)/ (1024d0*1024),' MB' WRITE (*,FMT=9030) 'You are running each test ',ntimes,' times' WRITE (*,FMT=9030) 'The *best* time for each test is used' c$omp parallel c$omp do DO 10 j = 1,n a(j) = 1.0d0 b(j) = 2.0D0 c(j) = 0.0D0 10 CONTINUE c$omp end parallel t = second(dummy) c$omp parallel c$omp do DO 20 j = 1,n a(j) = 2.0d0*a(j) 20 CONTINUE c$omp end parallel t = second(dummy) - t PRINT *,'----------------------------------------------------' quantum = checktick() WRITE (*,FMT=9000) $ 'Your clock granularity/precision appears to be ',quantum, $ ' microseconds' PRINT *,'The tests below will each take a time on the order ' PRINT *,'of ',nint(t*1d6),' microseconds' PRINT *,' (= ',nint((t*1d6)/quantum),' clock ticks)' PRINT *,'Increase the size of the arrays if this shows that' PRINT *,'you are not getting at least 20 clock ticks per test.' PRINT *,'----------------------------------------------------' PRINT *,'WARNING -- The above is only a rough guideline.' PRINT *,'For best results, please be sure you know the' PRINT *,'precision of your system timer.' PRINT *,'----------------------------------------------------' * --- MAIN LOOP --- repeat test cases NTIMES times --- scalar = 1.5d0*a(1) DO 70 k = 1,ntimes t = second(dummy) c$omp parallel c$omp do DO 30 j = 1,n c(j) = a(j) 30 CONTINUE c$omp end parallel t = second(dummy) - t times(1,k) = t t = second(dummy) c$omp parallel c$omp do DO 40 j = 1,n b(j) = scalar*c(j) 40 CONTINUE c$omp end parallel t = second(dummy) - t times(2,k) = t t = second(dummy) c$omp parallel c$omp do DO 50 j = 1,n c(j) = a(j) + b(j) 50 CONTINUE c$omp end parallel t = second(dummy) - t times(3,k) = t t = second(dummy) c$omp parallel c$omp do DO 60 j = 1,n a(j) = b(j) + scalar*c(j) 60 CONTINUE c$omp end parallel t = second(dummy) - t times(4,k) = t 70 CONTINUE * --- SUMMARY --- DO 90 k = 1,ntimes DO 80 j = 1,4 rmstime(j) = rmstime(j) + times(j,k)**2 mintime(j) = min(mintime(j),times(j,k)) maxtime(j) = max(maxtime(j),times(j,k)) 80 CONTINUE 90 CONTINUE WRITE (*,FMT=9040) DO 100 j = 1,4 rmstime(j) = sqrt(rmstime(j)/dble(ntimes)) WRITE (*,FMT=9050) label(j),n*bytes(j)*nbpw/mintime(j)/1.0D6, $ rmstime(j),mintime(j),maxtime(j) 100 CONTINUE sum(1) = 0.0d0 sum(2) = 0.0d0 sum(3) = 0.0d0 DO 110 j = 1,n sum(1) = sum(1) + a(j) sum(2) = sum(2) + b(j) sum(3) = sum(3) + c(j) 110 CONTINUE PRINT *,'Sum of a is = ',sum(1) PRINT *,'Sum of b is = ',sum(2) PRINT *,'Sum of c is = ',sum(3) 9000 FORMAT (1x,a,i6,a) 9010 FORMAT (1x,a,i10) 9020 FORMAT (1x,a,f10.2,a) 9030 FORMAT (1x,a,i3,a,a) 9040 FORMAT ('Function',5x,'Rate (MB/s) RMS time Min time Max time' $ ) 9050 FORMAT (a,4 (f10.4,2x)) END *------------------------------------- * INTEGER FUNCTION dblesize() * * A semi-portable way to determine the precision of DOUBLE PRECISION * in Fortran. * Here used to guess how many bytes of storage a DOUBLE PRECISION * number occupies. * INTEGER FUNCTION realsize() * IMPLICIT NONE C .. Local Scalars .. DOUBLE PRECISION result,test INTEGER j,ndigits C .. C .. Local Arrays .. DOUBLE PRECISION ref(30) C .. C .. External Subroutines .. EXTERNAL confuse C .. C .. Intrinsic Functions .. INTRINSIC abs,acos,log10,sqrt C .. C Test #1 - compare single(1.0d0+delta) to 1.0d0 10 DO 20 j = 1,30 ref(j) = 1.0d0 + 10.0d0** (-j) 20 CONTINUE DO 30 j = 1,30 test = ref(j) ndigits = j CALL confuse(test,result) IF (test.EQ.1.0D0) THEN GO TO 40 END IF 30 CONTINUE GO TO 50 40 WRITE (*,FMT='(a)') $ '----------------------------------------------' WRITE (*,FMT='(1x,a,i2,a)') 'Double precision appears to have ', $ ndigits,' digits of accuracy' IF (ndigits.LE.8) THEN realsize = 4 ELSE realsize = 8 END IF WRITE (*,FMT='(1x,a,i1,a)') 'Assuming ',realsize, $ ' bytes per DOUBLE PRECISION word' WRITE (*,FMT='(a)') $ '----------------------------------------------' RETURN 50 PRINT *,'Hmmmm. I am unable to determine the size.' PRINT *,'Please enter the number of Bytes per DOUBLE PRECISION', $ ' number : ' READ (*,FMT=*) realsize IF (realsize.NE.4 .AND. realsize.NE.8) THEN PRINT *,'Your answer ',realsize,' does not make sense.' PRINT *,'Try again.' PRINT *,'Please enter the number of Bytes per ', $ 'DOUBLE PRECISION number : ' READ (*,FMT=*) realsize END IF PRINT *,'You have manually entered a size of ',realsize, $ ' bytes per DOUBLE PRECISION number' WRITE (*,FMT='(a)') $ '----------------------------------------------' END SUBROUTINE confuse(q,r) * IMPLICIT NONE C .. Scalar Arguments .. DOUBLE PRECISION q,r C .. C .. Intrinsic Functions .. INTRINSIC cos C .. r = cos(q) RETURN END * A semi-portable way to determine the clock granularity * Adapted from a code by John Henning of Digital Equipment Corporation * INTEGER FUNCTION checktick() * IMPLICIT NONE C .. Parameters .. INTEGER n PARAMETER (n=20) C .. C .. Local Scalars .. DOUBLE PRECISION dummy,t1,t2 INTEGER i,j,jmin C .. C .. Local Arrays .. DOUBLE PRECISION timesfound(n) C .. C .. External Functions .. DOUBLE PRECISION second EXTERNAL second C .. C .. Intrinsic Functions .. INTRINSIC max,min,nint C .. i = 0 dummy = 0.0d0 t1 = second(dummy) 10 t2 = second(dummy) IF (t2.EQ.t1) GO TO 10 t1 = t2 i = i + 1 timesfound(i) = t1 IF (i.LT.n) GO TO 10 jmin = 1000000 DO 20 i = 2,n j = nint((timesfound(i)-timesfound(i-1))*1d6) jmin = min(jmin,max(j,0)) 20 CONTINUE IF (jmin.GT.0) THEN checktick = jmin ELSE PRINT *,'Your clock granularity appears to be less ', $ 'than one microsecond' checktick = 1 END IF RETURN * PRINT 14, timesfound(1)*1d6 * DO 20 i=2,n * PRINT 14, timesfound(i)*1d6, * & nint((timesfound(i)-timesfound(i-1))*1d6) * 14 FORMAT (1X, F18.4, 1X, i8) * 20 CONTINUE END SUBROUTINE DEFEND_WRAP INTEGER count, count_rate, count_max CALL SYSTEM_CLOCK ( count, count_rate, count_max ) IF (DBLE(count) .GT. .999*DBLE(count_max)) THEN PRINT *,"Oops, this code won't handle a wrapping system_clock" PRINT *,"and soon we will wrap." PRINT 4, "count:", count, "count_max:", count_max 4 FORMAT (1X, A10, I16) PRINT *,"Try again later, or fix the code to handle wraps." PRINT *,"(The counter wraps approx once every 60 hours)" STOP END IF END DOUBLE PRECISION FUNCTION second INTEGER count, count_rate, count_max CALL SYSTEM_CLOCK ( count, count_rate, count_max ) second = DBLE(count)/DBLE(count_rate) END % ------------------------------ % cat buildit_nodebug.csh #!/bin/csh set verbose unlimit f90 -v -omp -source_listing -machine_code \ -o mcc_omp_nodebug_`date +%Y%m%d` \ -fast -O5 -unroll 8 -arch ev6 \ mcc_omp_nodebug.f grep COMPILER: mcc_omp_nodebug.lis ------------------------------ % ./!$ % ./buildit_nodebug.csh unlimit f90 -v -omp -source_listing -machine_code -o mcc_omp_nodebug_`date +%Y%m%d` -fast -O5 -unroll 8 -arch ev6 mcc_omp_nodebug.f /usr/lib/cmplrs/fort90/decfort90 -machine_code -fast -O5 -unroll 8 -arch ev6 -I/usr/lib/cmplrs/hpfrtl -omp -reentrancy threaded -automatic -source_listing -o /tmp/forAAAaaaAfa.o mcc_omp_nodebug.f /usr/bin/cc -v -o mcc_omp_nodebug_20000510 -arch ev6 /usr/lib/cmplrs/fort90/for_main.o -source_listing /tmp/forAAAaaaAfa.o -O4 -pthread -qlshpf -lUfor -lfor -lFutil -lm -lots3 -lots -lm_c32 /usr/lib/cmplrs/cc/ld -o mcc_omp_nodebug_20000510 -g0 -O4 -call_shared /usr/lib/cmplrs/cc/crt0.o /usr/lib/cmplrs/fort90/for_main.o /tmp/forAAAaaaAfa.o -qlshpf_r -qlshpf -qlUfor_r -lUfor -qlfor_r -lfor -qlFutil_r -lFutil -qlm_r -lm -qlots3_r -lots3 -qlots_r -lots -qlm_c32_r -lm_c32 -lpthread -lexc -lc /usr/lib/cmplrs/cc/ld: 0.01u 0.04s 0:00 4% 0+14k 149+14io 0pf+0w 14stk+2264mem grep COMPILER: mcc_omp_nodebug.lis COMPILER: Compaq Fortran V5.3-915-449BB ------------------------------ % ./mcc_omp_nodebug_20000510 n, offset, ntimes 120000549,0,10 ---------------------------------------------- Double precision appears to have 16 digits of accuracy Assuming 8 bytes per DOUBLE PRECISION word ---------------------------------------------- Array size = 120000549 Offset = 0 The total memory requirement is 2746.59 MB You are running each test 10 times The *best* time for each test is used ---------------------------------------------------- Your clock granularity/precision appears to be 1000 microseconds The tests below will each take a time on the order of 61000 microseconds (= 61 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) RMS time Min time Max time Copy: 19591.9264 0.0991 0.0980 0.1010 Scale: 19200.0878 0.1012 0.1000 0.1030 Add: 21021.9940 0.1386 0.1370 0.1400 Triad: 20425.6254 0.1421 0.1410 0.1430 Sum of a is = 1.383967266434037E+020 Sum of b is = 2.767934540034517E+019 Sum of c is = 3.690579379856141E+019 % exit % script done on Wed May 10 13:32:53 2000 From henning@perfom.zko.dec.com Mon May 15 03:35:56 2000 To: john@mccalpin.com Date: Thu, 11 May 2000 18:20:55 -0400 Subject: STREAM on GS160 (confidential until Tuesday) Message-ID: <852568DC.007AD5F9.00@d54mta05.raleigh.ibm.com> From: henning@perfom.zko.dec.com (John Henning) Status: RO Hi John ...and here is 16 CPUs on the AlphaServer GS160 (Please give me an "ack" if you have now received both the GS320 & the GS160? Thanks!) -john Script started on Wed May 10 14:42:09 2000 % unlimit % mcc_omp_nodebug_20000510 n, offset, ntimes 120000549,0,10 ---------------------------------------------- Double precision appears to have 16 digits of accuracy Assuming 8 bytes per DOUBLE PRECISION word ---------------------------------------------- Array size = 120000549 Offset = 0 The total memory requirement is 2746.59 MB You are running each test 10 times The *best* time for each test is used ---------------------------------------------------- Your clock granularity/precision appears to be 1000 microseconds The tests below will each take a time on the order of 121000 microseconds (= 121 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) RMS time Min time Max time Copy: 9795.9632 0.1969 0.1960 0.1990 Scale: 9648.2853 0.1998 0.1990 0.2010 Add: 10549.4988 0.2739 0.2730 0.2750 Triad: 10212.8127 0.2823 0.2820 0.2830 Sum of a is = 1.383967266434037E+020 Sum of b is = 2.767934540034517E+019 Sum of c is = 3.690579379856141E+019 % exit % script done on Wed May 10 14:43:38 2000 From - Tue May 23 17:33:26 2000 Received: from aux153.plano.net ([209.217.36.11]) by Mail.austin.rr.com with Microsoft SMTPSVC(5.5.1877.357.35); Tue, 23 May 2000 11:19:35 -0500 Received: (qmail 7688 invoked by uid 10000); 23 May 2000 16:32:27 -0000 Delivered-To: mccalpin.com-john@mccalpin.com Received: (qmail 7667 invoked from network); 23 May 2000 16:32:26 -0000 Received: from ares.cs.virginia.edu (128.143.136.41) by aux153.plano.net with SMTP; 23 May 2000 16:32:26 -0000 Received: from sgi.com (sgi.SGI.COM [192.48.153.1]) by ares.cs.Virginia.EDU (8.9.2/8.9.2/UVACS-2000040300) with ESMTP id MAA13885 for ; Tue, 23 May 2000 12:32:24 -0400 (EDT) Received: from ledzep.cray.com (relay.cray.com [137.38.226.97]) by sgi.com (980327.SGI.8.8.8-aspam/980304.SGI-aspam: SGI does not authorize the use of its proprietary systems or networks for unsolicited or bulk email from the Internet.) via ESMTP id JAA03999 for ; Tue, 23 May 2000 09:32:05 -0700 (PDT) mail_from (glenski@sgi.com) Received: from orchid-e194.americas.sgi.com (orchid-e185.cray.com [128.162.185.209]) by ledzep.cray.com (SGI-SGI-8.9.3/craymail-smart-nospam1.0) with ESMTP id LAA85691 for ; Tue, 23 May 2000 11:32:10 -0500 (CDT) Received: from scout.americas.sgi.com (scout.americas.sgi.com [128.162.184.102]) by orchid-e194.americas.sgi.com (8.8.8/SGI-server-1.5) with SMTP id LAA337360; Tue, 23 May 2000 11:32:09 -0500 (CDT) Date: Tue, 23 May 2000 11:32:08 -0500 From: Joe Glenski X-Sender: glenski@scout.americas.sgi.com Reply-To: glenski@sgi.com To: mccalpin@cs.virginia.edu cc: Joe Glenski Subject: Streams results for the CRAY SV1 Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Return-Path: glenski@sgi.com X-Mozilla-Status: 8001 X-Mozilla-Status2: 00000000 X-UIDL: e2300000.eml Status: RO John- Shown below are the most recent "stream" results for the CRAY SV1. Please add them to your table. The system used has 32 SV1 Rev C cpus, and 32 Gbytes of type N memory. It was running UNICOS 10.0. The compiler used was cf90 3.4.0.0, with the following options: -dp -O scalar3,vector3,task3 A copy of the program used and the summary result lines are also included below. Regards, -Joe Glenski. Benchmarking Group Cray Inc., 655F Lone Oak Drive, Eagan, MN 55121 USA glenski@cray.com ------------------------------------------------------------------------ Number of CPUs: 2 to 32 Array size: 4001 Kwords Array padding: 20248 Words STREAM Memory Bandwidth for Cray SV1 5/23/2000 All results are in MB/s --- 1 MB=10^6 B, *not* 2^20 B ----------------------------------------------------------- Machine ID ncpus COPY SCALE ADD TRIAD ----------------------------------------------------------- Cray_SV1 32 25350.616 25252.665 25325.902 24780.574 Cray_SV1 16 24476.284 24760.294 24915.577 24425.151 Cray_SV1 12 22093.827 21930.989 22710.514 22399.891 Cray_SV1 8 18063.235 17783.525 18874.605 18615.010 Cray_SV1 4 9373.209 9208.710 9859.369 9858.707 Cray_SV1 2 4808.209 4677.492 4984.247 4991.767 ----------------------------------------------------------------------- STREAM benchmark ---------------- Number of CPUs: 2 Array size: 4001 Kwords Array padding: 20248 Words Aoff Boff Coff Assignment:Scaling: Summing: SAXPYing: ------------------------------------------------------------- 32 32 32 4808.209 4677.492 4984.247 4991.767 STOP executed at line 146 in Fortran routine 'STREAM' CPU: 17.399s, Wallclock: 8.802s, 6.2% of 32-CPU Machine Memory HWM: 12835631, Stack HWM: 20696, Stack segment expansions: 0 STREAM benchmark ---------------- Number of CPUs: 4 Array size: 4001 Kwords Array padding: 20248 Words Aoff Boff Coff Assignment:Scaling: Summing: SAXPYing: ------------------------------------------------------------- 32 32 32 9373.209 9208.710 9859.369 9858.707 STOP executed at line 146 in Fortran routine 'STREAM' CPU: 17.708s, Wallclock: 4.526s, 12.2% of 32-CPU Machine Memory HWM: 12835632, Stack HWM: 20696, Stack segment expansions: 0 STREAM benchmark ---------------- Number of CPUs: 8 Array size: 4001 Kwords Array padding: 20248 Words Aoff Boff Coff Assignment:Scaling: Summing: SAXPYing: ------------------------------------------------------------- 32 32 32 18063.235 17783.525 18874.605 18615.010 STOP executed at line 146 in Fortran routine 'STREAM' CPU: 18.773s, Wallclock: 2.482s, 23.6% of 32-CPU Machine Memory HWM: 12835633, Stack HWM: 20696, Stack segment expansions: 0 STREAM benchmark ---------------- Number of CPUs: 12 Array size: 4001 Kwords Array padding: 20248 Words Aoff Boff Coff Assignment:Scaling: Summing: SAXPYing: ------------------------------------------------------------- 32 32 32 22093.827 21930.989 22710.514 22399.891 STOP executed at line 146 in Fortran routine 'STREAM' CPU: 23.305s, Wallclock: 2.105s, 34.6% of 32-CPU Machine Memory HWM: 12845875, Stack HWM: 20696, Stack segment expansions: 0 STREAM benchmark ---------------- Number of CPUs: 16 Array size: 4001 Kwords Array padding: 20248 Words Aoff Boff Coff Assignment:Scaling: Summing: SAXPYing: ------------------------------------------------------------- 32 32 32 24476.284 24760.294 24915.577 24425.151 STOP executed at line 146 in Fortran routine 'STREAM' CPU: 28.548s, Wallclock: 2.018s, 44.2% of 32-CPU Machine Memory HWM: 12866356, Stack HWM: 20696, Stack segment expansions: 0 STREAM benchmark ---------------- Number of CPUs: 32 Array size: 4001 Kwords Array padding: 20248 Words Aoff Boff Coff Assignment:Scaling: Summing: SAXPYing: ------------------------------------------------------------- 32 32 32 25350.616 25252.665 25325.902 24780.574 STOP executed at line 146 in Fortran routine 'STREAM' CPU: 57.511s, Wallclock: 2.024s, 88.8% of 32-CPU Machine Memory HWM: 12938041, Stack HWM: 20696, Stack segment expansions: 0 ------------------------------------------------------------------------ * Program: Stream * Programmer: John D. McCalpin * Revision: 2.0, September 30,1991 * * This program measures memory transfer rates in MB/s for simple * computational kernels coded in Fortran. These numbers reveal the * quality of code generation for simple uncacheable kernels as well * as showing the cost of floating-point operations relative to memory * accesses. * * INSTRUCTIONS: * 1) Stream requires a cpu timing function called second(). * A sample is shown below. This is unfortunately rather * system dependent. It helps to know the granularity of the * timing. The code below assumes that the granularity is * 1/100 seconds. * 2) Stream requires a good bit of memory to run. * Adjust the Parameter 'N' in the second line of the main * program to give a 'timing calibration' of at least 20 clicks. * This will provide rate estimates that should be good to * about 5% precision. * 3) Compile the code with full optimization. Many compilers * generate unreasonably bad code before the optimizer tightens * things up. If the results are unreasonable good, on the * other hand, the optimizer might be too smart for me! * 4) Mail the results to mccalpin@perelandra.cms.udel.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! * program Stream parameter (N = 4 001 *1024, NTIMES = 2) integer ipad,aoff,boff,coff parameter (ipad = 20248 ) real a(N+ipad),b(N+ipad),c(N+ipad),times(4,NTIMES) common /abccom/a,b,c real rmstime(4),mintime(4),maxtime(4) character*11 label(4) real second integer realsize,nbpw,bytes(4) external second,realsize data rmstime/4*0.0/,mintime/4*1.0e+36/,maxtime/4*0.0/ data label/'Assignment:','Scaling: ','Summing: ', $ 'SAXPYing: '/ data bytes/2,2,3,3/ data aoff,boff,coff/0,0,0/ etime()=0.001*timef() * --- SETUP --- determine precision and check timing --- write(6,9020) ncpu(),N/1024,ipad write(6,9030) (label(j),j=1,4) nbpw = realsize() t = etime() do 10 j=1,N a(j) = 1.0 b(j) = 2.0 c(j) = 0.0 10 continue t = etime()-t c print *,'Timing calibration ; time = ',t*100,' hundredths', c $ ' of a second' c print *,'Increase the size of the arrays if this is <30 ', c $ ' and your clock precision is =<1/100 second' c print *,'---------------------------------------------------' do coff=8,32,8 do boff=8,32,8 do aoff=8,32,8 * --- MAIN LOOP --- repeat test cases NTIMES times --- do 1000 k=1,NTIMES t = etime() do 20 j=1,N c(coff+j) = a(aoff+j) 20 continue t = etime()-t times(1,k) = t t = etime() do 30 j=1,N c(coff+j) = 3.0e0*a(aoff+j) 30 continue t = etime()-t times(2,k) = t t = etime() do 40 j=1,N c(coff+j) = a(aoff+j)+b(boff+j) 40 continue t = etime()-t times(3,k) = t t = etime() do 50 j=1,N c(coff+j) = a(aoff+j)+3.0e0*b(boff+j) 50 continue t = etime()-t times(4,k) = t call dummysub(a,b,c,n) 1000 continue * --- SUMMARY --- do 300 k=1,NTIMES do 200 j=1,4 rmstime(j) = rmstime(j) + times(j,k)**2 mintime(j) = min( mintime(j), times(j,k) ) maxtime(j) = max( maxtime(j), times(j,k) ) 200 continue 300 continue write(6,9040) aoff,boff,coff, . (N*bytes(j)*nbpw/mintime(j)/1.0e6,j=1,4) c write (*,9000) c do 320 j=1,4 c rmstime(j) = sqrt(rmstime(j)/float(NTIMES)) c write (*,9010) label(j),N*bytes(j)*nbpw/mintime(j)/1.0e6, c $ rmstime(j),mintime(j),maxtime(j) c 320 continue end do end do end do 9000 format (' Function',5x, $ 'Rate (MB/s) RMS time Min time Max time') 9010 format (1x,a11,4(2x,f11.4)) 9020 format(/' STREAM benchmark' . /' ----------------' . /' Number of CPUs: ',i8 . /' Array size: ',i8,' Kwords' . /' Array padding: ',i8,' Words'/) 9030 format (/1x,' Aoff Boff Coff',2x,4a11 . /1x,61('-')) 9040 format (1x,3i5,2x,4f11.3) stop end *------------------------------------- * Sample timing routine * This code works on Sun and Silicon Graphics machines. * real function second(t0) * real dummy(2) * second = etime(dummy) * end * Sample timing routine * This code works on IBM RS/6000 machines cray real function second(t0) cray second = mclock()*0.01 cray end *------------------------------------- * INTEGER FUNCTION realsize() * * A semi-portable way to determine the precision of default REAL * in Fortran. * Here used to guess how many bytes of storage a real number occupies. * integer function realsize() double precision ref(30) real test double precision pi logical silent data silent/.true./ C Test #1 - compare double precision pi to acos(-1.0e0) pi = 3.14159 26535 89793 23846 26433 83279 50288 d0 picalc = acos(-1.0e0) diff = abs(picalc-pi) if (diff.eq.0.0) then if (.not. silent) then print *,'Test #1 Failed = picalc=piexact' print *,'Apparently Single=Double Precision' print *,'Proceeding to Test #2' print *,' ' end if goto 200 else ndigits = -log10(abs(diff))+0.5 goto 1000 endif C Test #2 - compare single(1.0d0+delta) to 1.0e0 200 do 10 j=1,30 ref(j) = 1.0d0+10.0d0**(-j) 10 continue do 20 j=1,30 test = ref(j) ndigits = j call dummy(test,result) if (test.eq.1.0e0) then goto 1000 endif 20 continue if (.not. silent) then print *,'Test #2 failed - Precision appears to exceed 30 digits' print *,'Proceeding to Test #3' end if goto 300 C Test #3 - abs(sqrt(1.0d0)-sqrt(1.0e0)) 300 diff = abs(sqrt(1.0d0)-sqrt(1.0e0)) if (diff.eq.0.0) then if (.not. silent) then print *,'Test Failed - sqrt(1.0e0)=sqrt(1.0d0)' print *,'Apparently Single=Double Precision' print *,'Giving up' end if goto 400 else ndigits = -log10(abs(diff))+0.5 goto 1000 endif 1000 continue if (.not. silent) then write (*,'(a)') '--------------------------------------' write (*,'(1x,a,i2,a)') 'Single precision appears to have ', $ ndigits,' digits of accuracy' write (*,'(1x,a,i1,a)') 'Assuming ',realsize, $ ' bytes per default REAL word' write (*,'(a)') '--------------------------------------' end if if (ndigits.le.8) then realsize = 4 else realsize = 8 endif return 400 print *,'Hmmmm. I am unable to determine the size of a REAL' print *,'Please enter the number of Bytes per REAL number : ' read (*,*) realsize if (realsize.ne.4.and.realsize.ne.8) then print *,'Your answer ',realsize,' does not make sense!' print *,'Try again!' print *,'Please enter the number of Bytes per ', $ 'REAL number : ' read (*,*) realsize endif print *,'You have manually entered a size of ',realsize, $ ' bytes per REAL number' write (*,'(a)') '--------------------------------------' end subroutine dummy(q,r) r = cos(q) return end subroutine dummysub(a,b,c,n) return end ------------------------------------------------------------------------ From - Sat Jun 3 02:57:02 2000 Received: from aux153.plano.net ([209.217.36.11]) by mail.austin.rr.com with Microsoft SMTPSVC(5.5.1877.357.35); Tue, 30 May 2000 19:17:03 -0500 Received: (qmail 23142 invoked by uid 10000); 31 May 2000 00:15:46 -0000 Delivered-To: mccalpin.com-john@mccalpin.com Received: (qmail 23136 invoked from network); 31 May 2000 00:15:45 -0000 Received: from ares.cs.virginia.edu (128.143.137.19) by aux153.plano.net with SMTP; 31 May 2000 00:15:45 -0000 Received: from jubjub.wizard.com (jubjub.wizard.com [209.170.216.9]) by ares.cs.Virginia.EDU (8.9.2/8.9.2/UVACS-2000040300) with ESMTP id UAA17675 for ; Tue, 30 May 2000 20:15:44 -0400 (EDT) Received: from g6400 (144-209-170-209.pm3-9.lv.wizard.com [209.170.209.144]) by jubjub.wizard.com (8.9.3/8.9.3) with SMTP id RAA15608 for ; Tue, 30 May 2000 17:15:42 -0700 (PDT) Message-ID: <001001bfca96$8c41f060$90d1aad1@g6400> Reply-To: "H.W. Stockman" From: "H.W. Stockman" To: Subject: Stream results, Athlon 800 Date: Tue, 30 May 2000 17:24:12 -0700 MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_NextPart_000_000D_01BFCA5B.DEE75340" X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 5.00.2919.6600 X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2919.6600 Return-Path: hwstock@wizard.com X-Mozilla-Status: 8001 X-Mozilla-Status2: 00000000 X-UIDL: 94300000.eml Status: RO This is a multi-part message in MIME format. ------=_NextPart_000_000D_01BFCA5B.DEE75340 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable This is a custom-built system with an Athlon 800 in an ASUS K7V = motherboard, 768 MB PC133 (7.5 ns) SDRAM. The memory bus was set to asynchronous = mode, with a 4:3 multiplier of the CPU FSB, and memory timing at 3-2-2. It turns out that it is currently hard to get truly fast SDRAM in 256 = MB DIMMs. I took the source code and recompiled it with Lahey F90 4.5, to take = advantage of the advanced timer. I hope that's OK. Your wstream executable gave = somewhat odd results on this win98 system. =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D --------------------------------------------- Double precision appears to have 16 digits of accuracy Assuming 8 bytes per DOUBLE PRECISION word --------------------------------------------- Array size =3D 2000000 Offset =3D 0 The total memory requirement is 45 MB You are running each test 10 times The *best* time for each test is used ---------------------------------------------------- Your clock granularity/precision appears to be 4 microseconds The tests below will each take a time on the order of 95864 microseconds (=3D 23966 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) RMS time Min time Max time Copy: 376.0116 0.0866 0.0851 0.0926 Scale: 427.8838 0.0757 0.0748 0.0821 Add: 473.2809 0.1044 0.1014 0.1256 Triad: 571.6290 0.0986 0.0840 0.1823 Sum of a is =3D 0.230660156259187D+019 Sum of b is =3D 0.461320312485644D+018 Sum of c is =3D 0.615093750014126D+018 ------=_NextPart_000_000D_01BFCA5B.DEE75340 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
This is a custom-built system with an = Athlon 800 in=20 an ASUS K7V motherboard,
768 MB PC133 (7.5 ns) SDRAM.  The = memory bus=20 was set to asynchronous mode,
with a 4:3 multiplier of the CPU FSB, = and memory=20 timing at 3-2-2.
 
It turns out that it is currently hard = to get truly=20 fast  SDRAM in 256 MB DIMMs.
 
I took the source code and recompiled = it with Lahey=20 F90 4.5, to take advantage
of the advanced timer.  I hope = that's=20 OK.  Your wstream executable gave somewhat
odd results on this win98 = system.
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
---------------------------------------------
Double = precision appears=20 to have 16 digits of accuracy
Assuming 8 bytes per DOUBLE PRECISION=20 word
---------------------------------------------
Array size=20 =3D    2000000
Offset    =20 =3D          0
The total = memory=20 requirement is   45 MB
You are running each test  10=20 times
The *best* time for each test is=20 used
----------------------------------------------------
Your = clock=20 granularity/precision appears to be      4=20 microseconds
The tests below will each take a time on the=20 order
of        95864=20 microseconds
   = (=3D        23966=20 clock ticks)
Increase the size of the arrays if this shows = that
you are=20 not getting at least 20 clock ticks per=20 test.
----------------------------------------------------
WARNING = -- The=20 above is only a rough guideline.
For best results, please be sure you = know=20 the
precision of your system=20 timer.
----------------------------------------------------
Functio= n    =20 Rate (MB/s)  RMS time   Min time  Max=20 time
Copy:       =20 376.0116      = 0.0866     =20 0.0851     =20 0.0926
Scale:      =20 427.8838      = 0.0757     =20 0.0748     =20 0.0821
Add:        =20 473.2809      = 0.1044     =20 0.1014     =20 0.1256
Triad:      =20 571.6290      = 0.0986     =20 0.0840      0.1823
Sum of a is = =3D   =20 0.230660156259187D+019
Sum of b is =3D   =20 0.461320312485644D+018
Sum of c is =3D   =20 0.615093750014126D+018
------=_NextPart_000_000D_01BFCA5B.DEE75340-- From - Sun Jun 11 06:07:20 2000 Received: from aux153.plano.net ([209.217.36.11]) by mail.austin.rr.com with Microsoft SMTPSVC(5.5.1877.357.35); Sun, 4 Jun 2000 10:22:54 -0500 Received: (qmail 5058 invoked by uid 10000); 4 Jun 2000 15:21:36 -0000 Delivered-To: mccalpin.com-john@mccalpin.com Received: (qmail 5054 invoked from network); 4 Jun 2000 15:21:35 -0000 Received: from ares.cs.virginia.edu (128.143.136.41) by aux153.plano.net with SMTP; 4 Jun 2000 15:21:35 -0000 Received: from unternet.org (IDENT:root@d69040.dtk.chello.nl [213.46.69.40]) by ares.cs.Virginia.EDU (8.9.2/8.9.2/UVACS-2000040300) with ESMTP id LAA08061 for ; Sun, 4 Jun 2000 11:21:26 -0400 (EDT) Received: (from frank@localhost) by unternet.org (8.9.3/8.9.3) id RAA22028 for mccalpin@cs.virginia.edu; Sun, 4 Jun 2000 17:21:21 +0200 Date: Sun, 4 Jun 2000 17:21:21 +0200 From: Frank de Lange To: mccalpin@cs.virginia.edu Subject: stream results Message-ID: <20000604172121.A21478@unternet.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2i Return-Path: frank@unternet.org X-Mozilla-Status: 8001 X-Mozilla-Status2: 00000000 X-UIDL: 75300000.eml Status: RO Some more results... Hardware: generic (abit bp-6 dual-processor board, 2 x celeron 466, 256 MB RAM) Compiler: gcc version 2.95.2 19991024 (release) OS: Linux behemoth.localnet 2.4.0-test1 #1 SMP Sun Jun 4 01:41:17 CEST 2000 i686 unknown Results: stock binary Function Rate (MB/s) RMS time Min time Max time Copy: 212.0554 0.0778 0.0754 0.0944 Scale: 210.9139 0.0785 0.0759 0.0964 Add: 247.3066 0.0996 0.0970 0.1226 Triad: 245.1221 0.1008 0.0979 0.1306 unoptimized (gcc -o stream_d -lm stream_d.c second_cpu.c) version Function Rate (MB/s) RMS time Min time Max time Copy: 177.7778 0.0934 0.0900 0.1200 Scale: 177.7778 0.0984 0.0900 0.1200 Add: 184.6154 0.1321 0.1300 0.1400 Triad: 171.4286 0.1462 0.1400 0.1600 -O99 -fstrength-reduce -finline-funcs -fomit-frame-pointer -mcpu=i686 -march=i686 -malign-functions=4 -malign-jumps=4 -malign-loops=4 Function Rate (MB/s) RMS time Min time Max time Copy: 228.5714 0.0771 0.0700 0.0800 Scale: 266.6667 0.0753 0.0600 0.0800 Add: 266.6667 0.0971 0.0900 0.1000 Triad: 218.1818 0.1131 0.1100 0.1200 array size 2000000, -O99 -fstrength-reduce -finline-funcs -fomit-frame-pointer -mcpu=i686 -march=i686 -malign-functions=4 -malign-jumps=4 -malign-loops=4 Function Rate (MB/s) RMS time Min time Max time Copy: 213.3333 0.1605 0.1500 0.1900 Scale: 228.5714 0.1545 0.1400 0.1900 Add: 266.6667 0.1987 0.1800 0.2300 Triad: 228.5714 0.2381 0.2100 0.2800 With two stream processes running concurrently: optimized (-O99 -fstrength-reduce -finline-funcs -fomit-frame-pointer -mcpu=i686 -march=i686 -malign-functions=4 -malign-jumps=4 -malign-loops=4) process 1 Function Rate (MB/s) RMS time Min time Max time Copy: 145.4545 0.1426 0.1100 0.1600 Scale: 133.3333 0.1464 0.1200 0.1600 Add: 184.6154 0.1894 0.1300 0.2000 Triad: 133.3333 0.2033 0.1800 0.2200 process 2 Function Rate (MB/s) RMS time Min time Max time Copy: 123.0769 0.1493 0.1300 0.1600 Scale: 177.7778 0.1445 0.0900 0.1600 Add: 200.0000 0.1808 0.1200 0.2000 Triad: 133.3333 0.2052 0.1800 0.2100 Cheers//Frank -- WWWWW _______________________ ## o o\ / Frank de Lange \ }# \| / \ ##---# _/ \ #### \ +31-320-252965 / \ frank@unternet.org / ------------------------- [ Hacker: http://www.jargon.org/html/entry/hacker.html ] From - Sun Jun 11 06:07:49 2000 Received: from aux153.plano.net ([209.217.36.11]) by mail.austin.rr.com with Microsoft SMTPSVC(5.5.1877.357.35); Sun, 4 Jun 2000 14:39:22 -0500 Received: (qmail 20968 invoked by uid 10000); 4 Jun 2000 19:38:00 -0000 Delivered-To: mccalpin.com-john@mccalpin.com Received: (qmail 20879 invoked from network); 4 Jun 2000 19:37:51 -0000 Received: from jubjub.wizard.com (209.170.216.9) by aux153.plano.net with SMTP; 4 Jun 2000 19:37:51 -0000 Received: from bert (069-208-170-209.pm3-2.lv.wizard.com [209.170.208.69]) by jubjub.wizard.com (8.9.3/8.9.3) with SMTP id MAA10798 for ; Sun, 4 Jun 2000 12:37:31 -0700 (PDT) Message-ID: <001001bfce5d$857e71c0$45d0aad1@bert> Reply-To: "H.W. Stockman" From: "H.W. Stockman" To: References: <001001bfca96$8c41f060$90d1aad1@g6400> <3938C13F.4C023709@austin.rr.com> Subject: More stream results, Athlon 800 Date: Sun, 4 Jun 2000 12:45:39 -0700 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_000D_01BFCE22.C99A3640" X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 5.00.2919.6600 X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2919.6600 Return-Path: hwstock@wizard.com X-Mozilla-Status: 8001 X-Mozilla-Status2: 00000000 X-UIDL: a5300000.eml Status: RO This is a multi-part message in MIME format. ------=_NextPart_000_000D_01BFCE22.C99A3640 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit After reading Paul Hsieh's note (Dec 17, 1999), I decided to compile stream_d.c with Intel's C/C++ 4.5. I use Intel's compiler for my codes, and find v4.5 offers real improvements for memory-intensive apps, with consistent performance for runs that last days. I used Paul Hsieh's ??-p55clock.c, since the clock() function in the win32*.c timer has very poor resolution. In short, there was an overall, significant improvement for everything but triad, relative to the Lahey F90. In case it wasn't obvious: I didn't tweak the source code in any way; it was the default stream_d.c. copy, scale, add, triad Avg_1st_7: 533.08, 502.9, 641.2, 582.0 Avg_all10: 531.2, 501.4, 636.5, 577.9 System: Athlon 800 in Asus K7V motherboard, 768 MB PC133 SDRAM with 4:3 RAM:FSB and CAS..RAS 3-2-2. WDC 7200 RPM 20 GB EIDE drive. OS: win98; I did 10 runs, since I've noticed significant performance variations. I killed all but the basic background processes; however, I think the very act of wiring the redirecting results to file, and concatenating the files, may be responsible for the little "dip" sjown in the pdf attached. Attached: (1) stream.exe, win32 executable (2) Athlon800_stream_c.txt, raw batch file output of ten runs (3) Athlon800_stream_c.xls, Excel binary with results summary and plot (4) plot_athlon800_stream_c.pdf, plot extracted from Excel file Compilation switches were: /G6 /ML /W2 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /FA /Fa"Release/" /Fp".\Release\stream.pch" /YX /Fo".\Release/" /Fd".\Release/" /FD -Qrestrict /c ...most of those are just directory junk; NOTE there were no restrict keywords in the source, so that switch should have no effect. ------=_NextPart_000_000D_01BFCE22.C99A3640 Content-Type: application/octet-stream; name="plot_athlon800_stream_c.pdf" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="plot_athlon800_stream_c.pdf" JVBERi0xLjIKJcfsj6IKNCAwIG9iago8PC9MZW5ndGggNSAwIFIvRmlsdGVyIC9GbGF0ZURlY29k ZT4+CnN0cmVhbQp4nLVcWYskxxF+719R4BfZsK28j0dLGGODwNIM6FnM6qRnba1khP+948qzurpm droQYvKIjPgyMjIqIzJ71dm4ReF/pfD0fPr1pJefT3b542S1P4cQFh2zOvtFZ5/xj85u+fj96eH0 NdB+e/LRL0bptDxzMQa7XE46ZTOWkeRy+un0gfgjwz+g9E/4/xcceNYgyWhlgQ8M0GcduXo5SBJw 6CVB9SBJxsVeElYPkmR1Og+z4oajpJFV9NKo4SBpLphRGjccJM1bN0rjhoOkBRV6WVg9SlJMg6SY jpIUveolYbVIwlHhVaOEum/uqJTV16iw+VlYr6iqxJ4qjDi/PVmlwPuRzrAI/2OvMaCFvkwkL9TI IPjOksA/hytzOlAS++vBfR8lifz14L4PksT+enDfB0kq/npy4EdJE389OfCDpBV/PTnwg6QVfz05 8IOksb8e3PdRkmIaJA3++q6SJu90oB9k77Ty3kdIggOsP9YTJhvF54qs1nB3WVorxSoTWa3h/rJs CKOs2nB/WcGkc+hl1Yb7y6pmV2Rds0OOibzSOejl44/Ex0cjbhMItTm7nNMS8E8MGA/98JdTUMXV bpO4KFxM2iJJTrhskkRl97hEp3a5xFS4+Eriz7kjSRIC3iKxbpekqs6YDZJcVbdNUlVHX8nrc8rB 99/W60SwbSxHLJvCtEL9xVuz0grdSuTVBkNSKfII+fRolQuLRFVUt3C8jKMvzC9HIdhaMa1R2Tsk qOx4ywa1QWXvkFi9SxLyHlyrwp4SrdNVK+hlvJURBpVkfehVaJ3rdDaMZRVan+tw5FZ0IecqaPD9 Glg4k/Tsu9HCryyJlujTFdWpzBydFhbkT7BBfHKTOfBgvq6ol/MdrsyLvBhUZQQdLIDYTTK70cJP 1sJkKzgTkxg540GDk4ZI1aIZkTiMF54lYVF4emV7Fl4Wt4nIPAsDG0Ea9IqrF9eOgpFnWUKaClSF hYiwZRbMYBgt/IoV4sfhuomFYoWgzg1DDUbsglS8xadYCy3kBlGsy++3/U+s25jMNJb1ZquEs9do QdHG0cb68awG+GDp5Zu/U95unYGivRVRDaWKXzqkHRq700tPMzQ+g4vNha2pNENjdzLpaYbGZ/Qx YpIyLaEam7uTx0Q3NqPNy0bTNa4hurG5O10Y2U9CNzbjsog7aHSakqSg5imJEAVC1WaUaTPd0Nwp eaQamjs1xxoUMt3U0Sl75Dc0d+qOdTpCN3Z0Cp8lTx2dysNMOXZ0Sg9pSNb0zZ3K8QzE/NSy0rYX nFWtfprR1NFp3Ct1TeOenFFVrMvxmr6xudO2v65tP2rbV6OdtO1n83biNlfa5o5O225L227Wtruu bTdq24VUtd0dfMWd+JTPWYdysHmeGy5dg7NncLI+wZ+UoQ5RpI94PoxceTp5mJRxTvoAgCNXJwNr nTg/nVoDOOjsljZa544zVIC2SsW+CkkGjpifIDwQB2h0PbOzVdUGOAECpqjdORrCGBe0LD6DQuXp FEDvGP1TNWQ1DGx14ozU9UhuEFMbDcAaZ6g8nZpU7KuQeOCEuU0mefje8KzZEFqDDWeIjZIDo0uJ FR79gjtA5kP1p1OCkZE0LBQgK/ccap1E4IDaANNOS2Og7dn0IrgOIyoIoWiomcM4iza9DF6hxhHP XdWCzYYlx3g2pDOLGyaDVYuWIrHJAXaoqg3Z23F4rQN3oK5VQAnzaaNVGLhTFeirdO6v4GR4j71N SWtYaEyqF/ObGi5dA5sVOJp0VpltDmIGOY+SPUJV41We9IFI1w2sdbGa1sBm1Ubr0HEme2xSsa9C koEj5m524DNFpNynjA2XroE9ANThcCWug3ylrq5Dw/kDTKv0ga/L/cBSlw3eGtgDtNHgHhpnch1N KvUVSGXggLmbnU01/hBXPjRcugZrEQvEH+5sLC8JbC5w8V6WT/H2gxgEtovuKMphsHAodRJBA8pp MeLmaQy0ws3VRHAdRxQQhaKALByGWXTz9VqTRk2mz0erkn4gIPBsIrABkK/L9dwtkl1KbGCFAiS5 jkOrayaXaoLVSUsdbuAkEDsBUn86VQiFokIUDv0MuokFJ1GnpnCsr166qiE4OoAnjJbdE84Cv6oS CMs8g4a9ozuKEiQWDjVotEwuVeUIZRkOURDNogiQOo4QCJWiQCwcuhl084yxbnj6/nfVS1dlf6hj iLwpyF3SaUFX7/rEcQptKOl3VjagDC91cnityv6wjSZ32biLO23Spb+AK8M77DxDjoE+/tjd5NDx D+BkjMHKX4nB+ohJQcSkhjugrZEP7SsuNJojvJE7Mt0nfICPp2TGbkGlL/su4UP7Yhnwh1Wc/G2s 9sge+MPAkU9oolaM9sge0AdLXoHytVuT2yN7aF6OKDZVvkf20BIjeIF4A9EO2UPbtJpyE9vq3id8 wM3hJEa1/equme0S4j5A28Z9UMPTcnDPro9XL93FEkU8HrNtFAnO/VE+17Jx1Gaq4X6icEu3wNkp OZwXKnJZrZ/SRwEzsCGue50q6Iecx324ItAWuwvL5IdMQOsnlgntvbGcRlegd+aKQFvywHJQmVOh kqCyUVCsnHFHhXit38Ye7AGcyavXLIboAA6buct2tH7OICrZuHPvqNk7cyWgNY1i6I2N8VY4SNa2 9IeSL8XEVbhGESkdXZ3jnfkS2JrJkcWCQ5/Q1LR1oeAMsZUc5bp/NIMDOBPgmlAqbL0OQ+qpUUhK O0pmadU/Ab4/ZwJcci2RE91BZsn5r5b3klcROqiS+Rr6Y0l0DynKe/AkkCUDFPkeIpaZSfqt5eNC yTxLvn5FEctdBH+m7sz3p/ZIzcOxV8EZ/5mLMdKOzGQwXRlJ2iXw1W9VyQ56OhBhSq67At4flSWv 0fJ2xyMcZb0cY5nZ8PkrVHzhHHeooknzfG9z26Gr/HqpU0aWr59jy7Veo6kvjuRxzC0+t2jqW6Jr 1xqc++UraMRTM7DXqMrB38VtmsLpFk3hM0qbM83lXtk7e4NKG77wKxnwm5xu0FQ+o7RVVtvIqdfb eJtObnhdfhm/XTrhN8ld5dLLVbIfL4HWdHKr78LVy6cVv1064TfJXWXwndxUO3f1MqvSeTm3WLmz uM3tNlXhNcmcbg3KdaqXx55XaSQOc/7qFdvEaYdKeA3yxquL53ZH6sbLvzWdnOSciy/hdpuq8Jof vgNwk/gLQMVEn7Ts/FSuX4BfFwqXgBkGV3356Xn54vH0+TdhAQuHr8fjD6d3mM7NyS2PTxKNQcgH 388YlhAxH5SXx+fP/vrnx19OQOm8YUp9NjFnoH58/9nv3Km1Vwk7PfYlw50/YScIAcXrgL35HHXt vUxDLXUm7vw3d2KGNq1GfhC+KroofJOtve9kqM+BhrZZ/gHwtK8yEninGJIws4WZIkJYGZ89E35V 5BVlAWpL3NFxIDLRxheL6GrghfquJP+aeWmFkgTSl2vsOgn2Qe/a2sVOC0PCYMc5wHZdFcPqmGl4 3lRfhTCOp8n+7XH5WqxVO/zGJE1HSi5v2atWL7bX2Oy1IimKFZu18LmBRUWbhT9gsp+vkFlTNpKU 77uTlFhFXauCLMF5od9My7wleNHIBESv/7i1Lz7Mi9bvi99vLff3K8lnxirrfinQmo5hT4iVp57T l8skZ23lTmAWI5fm8zTQoa0Wtn5aNKvxVyR07udiqC8zx7Ic7F+yZPjAjC1JuTS4PbyVcotL9uzI hGQGmoGGXs2+rIF0db5HXZ0D/eKAipqOqIy7L6voXz2HCTqctc7B7UCPr4Su6ScMVDSkZobblzV9 2d4GXUfM6N+Gnl8J3ehcoZN2BXpf1i/f7FvQLWwyRO63kevXIqdbMSpaUi6j7ctI8lbkeDmedqDb V0K3wRTojpTLcPsykrwVOoQ3bOo3oL92lzrrKvTcduZQBpK3Qk9BTP0G9NfuUk8/I+FiaDtzKNML 0DdBD8rtmvprN6nnR/hYDLZtzL7s6yP8T0eOt6Vk6uF+uzTQ71yoGEm5DLcvB//yY84WdJvE1G9A f+0u5Xd8XCTtCvS+bN68S4P3Yuo3oL9ilzp8Hp7piTwXU4U7lu0bfCO4czwG4OswRD5jCFkVDFw8 AkNOAwYzYcjeFgxcPACDCXrA4OYDNX46BYSUD0BhjcMDfUURVsf6pCsKLh+BIsUBRZpRxGaYUj4A BT7l71dEb++p2WghkoAFSo6vp7Cc+TLKqjiWkeYV0Y8cpa0N/VEaYiiIeZyDyAc7nj/7Rk79JnWh wH8FP8c4sQ+APgw+IfYxwp9mdwYeVn77QEVOgjqnh6J9RYRQpoUhOpYwutHLO5wc7EuNb0a99zit r76YA+D7o4ktXikxfgOjIJD1MVAIuo55j1MNgLHhumYSQVl+G7DohX/4prP87sFQWpB/emflUYL8 um6T5GH9W7osl0GY5L7+Iwqj5AbuFon8UOgWSfmXIjZJrj13LpcpEKzyWzGM0HAPdg38sFB5fmyG uWf6pxNcqLloeqYF8RY/WKsUlh+0VQ61rs4ygBtcNvgUrzJwyeNDsipC6jhCQFQKAVk5DLN46m7S IOp3bFTPUvYS2kKUPpTdJ4S5qvctXiv0xR7f69Gp6Gk8Pyx98vCab/yPJDk4LTGcN/43Ga0865rv xoCXJGvpRyxGFxMz7acdZJ+0BkS48ySrPBrbHzBpnC9vuexD03JfVq8/gl7VeCzn0N9GlWvR3ncl jVo0u870yghDuSTJZ32/UroqSh//ZY+qdkvn7qp2K78vr4+VwLTlR1DBl+1m6shL1y/vg6ra5365 gJFVujvfeQPJDxe5nNqmGcrm0/NEZSVDyRN9t71N3m8fy99PK7a5UCYO+8N095NVF0Kj7Pgjww2q 8m0Ybnk2ed2mKrymGxdWv/FtZ1nVdlNfNp8Q3L1bHZbKojgji/K77CPDFwiWlf6R10MGDxnhn4dV tN1ufOn6veyf6Po/xpQQ+mVuZHN0cmVhbQplbmRvYmoKNSAwIG9iagozNzEwCmVuZG9iagozIDAg b2JqCjw8Ci9UeXBlIC9QYWdlCi9NZWRpYUJveCBbMCAwIDYxMiA3OTJdCi9QYXJlbnQgMiAwIFIK L1Jlc291cmNlcyA8PCAvUHJvY1NldCBbL1BERiAvVGV4dF0KL0ZvbnQgPDwKL1I4IDggMCBSCi9S NyA3IDAgUgovUjYgNiAwIFIKPj4KPj4KL0NvbnRlbnRzIDQgMCBSCj4+CmVuZG9iago4IDAgb2Jq Cjw8L1R5cGUvRm9udC9OYW1lL1I4L1N1YnR5cGUvVHlwZTEvQmFzZUZvbnQvSGVsdmV0aWNhPj4K ZW5kb2JqCjcgMCBvYmoKPDwvVHlwZS9Gb250L05hbWUvUjcvU3VidHlwZS9UeXBlMS9CYXNlRm9u dC9IZWx2ZXRpY2EtQm9sZE9ibGlxdWU+PgplbmRvYmoKNiAwIG9iago8PC9UeXBlL0ZvbnQvTmFt ZS9SNi9TdWJ0eXBlL1R5cGUxL0Jhc2VGb250L0hlbHZldGljYS1Cb2xkPj4KZW5kb2JqCjIgMCBv YmoKPDwgL1R5cGUgL1BhZ2VzIC9LaWRzIFsKMyAwIFIKXSAvQ291bnQgMQo+PgplbmRvYmoKMSAw IG9iago8PCAvVHlwZSAvQ2F0YWxvZyAvUGFnZXMgMiAwIFIKPj4KZW5kb2JqCjkgMCBvYmoKPDwg L0NyZWF0aW9uRGF0ZSAoRDoyMDAwMDYwNDEyMTE1MSkKL1Byb2R1Y2VyIChBbGFkZGluIEdob3N0 c2NyaXB0IDUuNTApCj4+CmVuZG9iagp4cmVmCjAgMTAKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAw MDA0MjcyIDAwMDAwIG4gCjAwMDAwMDQyMTMgMDAwMDAgbiAKMDAwMDAwMzgxNSAwMDAwMCBuIAow MDAwMDAwMDE1IDAwMDAwIG4gCjAwMDAwMDM3OTUgMDAwMDAgbiAKMDAwMDAwNDEzNyAwMDAwMCBu IAowMDAwMDA0MDU0IDAwMDAwIG4gCjAwMDAwMDM5ODMgMDAwMDAgbiAKMDAwMDAwNDMyMSAwMDAw MCBuIAp0cmFpbGVyCjw8IC9TaXplIDEwIC9Sb290IDEgMCBSIC9JbmZvIDkgMCBSCj4+CnN0YXJ0 eHJlZgo0NDEyCiUlRU9GCg== ------=_NextPart_000_000D_01BFCE22.C99A3640 Content-Type: text/plain; name="Athlon800_stream_c.txt" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="Athlon800_stream_c.txt" ------------------------------------------------------------- This system uses 8 bytes per DOUBLE PRECISION word. ------------------------------------------------------------- Array size =3D 1000000, Offset =3D 0 Total memory required =3D 22.9 MB. Each test is run 10 times, but only the *best* time for each is used. ------------------------------------------------------------- Your clock granularity/precision appears to be 1 microseconds. Each test below will take on the order of 24701 microseconds. (=3D 24701 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) RMS time Min time Max time Copy: 534.3214 0.0303 0.0299 0.0312 Scale: 503.6533 0.0321 0.0318 0.0323 Add: 640.6707 0.0377 0.0375 0.0379 Triad: 582.7381 0.0415 0.0412 0.0418 ------------------------------------------------------------- This system uses 8 bytes per DOUBLE PRECISION word. ------------------------------------------------------------- Array size =3D 1000000, Offset =3D 0 Total memory required =3D 22.9 MB. Each test is run 10 times, but only the *best* time for each is used. ------------------------------------------------------------- Your clock granularity/precision appears to be 1 microseconds. Each test below will take on the order of 24771 microseconds. (=3D 24771 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) RMS time Min time Max time Copy: 533.3219 0.0304 0.0300 0.0313 Scale: 504.0751 0.0320 0.0317 0.0323 Add: 641.8276 0.0377 0.0374 0.0380 Triad: 583.0611 0.0416 0.0412 0.0418 ------------------------------------------------------------- This system uses 8 bytes per DOUBLE PRECISION word. ------------------------------------------------------------- Array size =3D 1000000, Offset =3D 0 Total memory required =3D 22.9 MB. Each test is run 10 times, but only the *best* time for each is used. ------------------------------------------------------------- Your clock granularity/precision appears to be 1 microseconds. Each test below will take on the order of 24885 microseconds. (=3D 24885 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) RMS time Min time Max time Copy: 532.7683 0.0304 0.0300 0.0312 Scale: 504.0841 0.0321 0.0317 0.0324 Add: 641.8141 0.0378 0.0374 0.0380 Triad: 580.1166 0.0418 0.0414 0.0420 ------------------------------------------------------------- This system uses 8 bytes per DOUBLE PRECISION word. ------------------------------------------------------------- Array size =3D 1000000, Offset =3D 0 Total memory required =3D 22.9 MB. Each test is run 10 times, but only the *best* time for each is used. ------------------------------------------------------------- Your clock granularity/precision appears to be 1 microseconds. Each test below will take on the order of 25274 microseconds. (=3D 25274 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) RMS time Min time Max time Copy: 531.1886 0.0304 0.0301 0.0310 Scale: 502.9103 0.0321 0.0318 0.0323 Add: 641.4018 0.0378 0.0374 0.0380 Triad: 579.1508 0.0418 0.0414 0.0420 ------------------------------------------------------------- This system uses 8 bytes per DOUBLE PRECISION word. ------------------------------------------------------------- Array size =3D 1000000, Offset =3D 0 Total memory required =3D 22.9 MB. Each test is run 10 times, but only the *best* time for each is used. ------------------------------------------------------------- Your clock granularity/precision appears to be 1 microseconds. Each test below will take on the order of 25738 microseconds. (=3D 25738 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) RMS time Min time Max time Copy: 533.3463 0.0303 0.0300 0.0307 Scale: 502.8043 0.0321 0.0318 0.0324 Add: 642.2497 0.0377 0.0374 0.0379 Triad: 586.9396 0.0411 0.0409 0.0412 ------------------------------------------------------------- This system uses 8 bytes per DOUBLE PRECISION word. ------------------------------------------------------------- Array size =3D 1000000, Offset =3D 0 Total memory required =3D 22.9 MB. Each test is run 10 times, but only the *best* time for each is used. ------------------------------------------------------------- Your clock granularity/precision appears to be 1 microseconds. Each test below will take on the order of 25738 microseconds. (=3D 25738 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) RMS time Min time Max time Copy: 534.7589 0.0302 0.0299 0.0307 Scale: 501.5101 0.0321 0.0319 0.0323 Add: 638.9821 0.0378 0.0376 0.0380 Triad: 584.6564 0.0414 0.0410 0.0417 ------------------------------------------------------------- This system uses 8 bytes per DOUBLE PRECISION word. ------------------------------------------------------------- Array size =3D 1000000, Offset =3D 0 Total memory required =3D 22.9 MB. Each test is run 10 times, but only the *best* time for each is used. ------------------------------------------------------------- Your clock granularity/precision appears to be 1 microseconds. Each test below will take on the order of 25190 microseconds. (=3D 25190 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) RMS time Min time Max time Copy: 531.8862 0.0302 0.0301 0.0308 Scale: 501.0018 0.0321 0.0319 0.0323 Add: 641.3876 0.0377 0.0374 0.0381 Triad: 577.3183 0.0418 0.0416 0.0420 ------------------------------------------------------------- This system uses 8 bytes per DOUBLE PRECISION word. ------------------------------------------------------------- Array size =3D 1000000, Offset =3D 0 Total memory required =3D 22.9 MB. Each test is run 10 times, but only the *best* time for each is used. ------------------------------------------------------------- Your clock granularity/precision appears to be 1 microseconds. Each test below will take on the order of 24783 microseconds. (=3D 24783 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) RMS time Min time Max time Copy: 522.0784 0.0309 0.0306 0.0318 Scale: 494.7818 0.0325 0.0323 0.0327 Add: 613.6227 0.0393 0.0391 0.0395 Triad: 557.8277 0.0433 0.0430 0.0435 ------------------------------------------------------------- This system uses 8 bytes per DOUBLE PRECISION word. ------------------------------------------------------------- Array size =3D 1000000, Offset =3D 0 Total memory required =3D 22.9 MB. Each test is run 10 times, but only the *best* time for each is used. ------------------------------------------------------------- Your clock granularity/precision appears to be 1 microseconds. Each test below will take on the order of 24707 microseconds. (=3D 24707 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) RMS time Min time Max time Copy: 528.0945 0.0306 0.0303 0.0315 Scale: 499.3002 0.0323 0.0320 0.0325 Add: 630.6683 0.0383 0.0381 0.0385 Triad: 575.3878 0.0420 0.0417 0.0422 ------------------------------------------------------------- This system uses 8 bytes per DOUBLE PRECISION word. ------------------------------------------------------------- Array size =3D 1000000, Offset =3D 0 Total memory required =3D 22.9 MB. Each test is run 10 times, but only the *best* time for each is used. ------------------------------------------------------------- Your clock granularity/precision appears to be 1 microseconds. Each test below will take on the order of 24924 microseconds. (=3D 24924 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) RMS time Min time Max time Copy: 530.7310 0.0305 0.0301 0.0313 Scale: 499.8793 0.0322 0.0320 0.0324 Add: 632.1645 0.0381 0.0380 0.0384 Triad: 571.5822 0.0422 0.0420 0.0424 =1A ------=_NextPart_000_000D_01BFCE22.C99A3640 Content-Type: application/x-msdownload; name="stream.exe" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="stream.exe" TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAgAAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5vdCBiZSBydW4gaW4gRE9TIG1v ZGUuDQ0KJAAAAAAAAABQRQAATAEFAO2cOjkAAAAAAAAAAOAADwELAQUAAIQAAACObgEAAAAAUBwA AAAQAAAAoAAAAABAAAAQAAAAAgAABAAAAAAAAAAEAAAAAAAAAABQbwEABAAAAAAAAAMAAAAAABAA ABAAAAAAEAAAEAAAAAAAABAAAAAAAAAAAAAAAAAwbwEoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AADkMG8BvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC50ZXh0AAAA4oMAAAAQAAAAhAAAAAQA AAAAAAAAAAAAAAAAACAAAGAucmRhdGEAAF8EAAAAoAAAAAYAAACIAAAAAAAAAAAAAAAAAABAAABA LmRhdGEAAAAoeW4BALAAAAAuAAAAjgAAAAAAAAAAAAAAAAAAQAAAwC5pZGF0YQAA2gQAAAAwbwEA BgAAALwAAAAAAAAAAAAAAAAAAEAAAMAuZGF0YTEAAEAGAAAAQG8BAAgAAADCAAAAAAAAAAAAAAAA AABAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 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 i0QkGIXAiSkPhKYAAACD/hh2I4pEJGs8BXwG/sCIRCRri0QkFItMJBBIQb4YAAAAiUwkEOsIi0Qk FItMJBCF9g+GLQEAAIpQ/0iE0nUOilD/TkFIhNJ09olMJBCNVCREjUQkVFJWUOi0+f//i0QkMIPE DIXAi0QkKH0C99iLVCQQi0wkLAPChcl1BwOEJIQAAACLTCQwhcl1ByuEJIgAAAA9UBQAAA+OiAAA AMdEJDgBAAAAi3QkfItUJHyLRCR8i0wkfIt8JBiF/3UPM8kzwDPSM/a7BAAAAOs4i3wkOIX/dBUz 9rj/fwAAugAAAIAzybsCAAAA6xuLfCQ8hf90DzPJM8Az0jP2uwEAAADrBItcJECLfCR0ZokPi0wk NAvBiXcCiVcGZolHCl9ei8NdW4PEYMM9sOv//30Nx0QkPAEAAADpbP///4uMJIAAAACNVCREUVBS 6NUQAACLTCRQi3QkUotUJFaLRCRag8QM6VH///8zyTPAM9Iz9ulE////jnJAAPVyQAA9c0AAe3NA ACF0QADedEAAPHVAAJ91QABxdUAAznVAANN2QACPdkAA03RAANN0QAB0c0AAyXRAAMl0QADNdkAA AAUBBQUCBQUFBQUFBQUFBQUFBQUFBQUFBQMDBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUF BASQ03RAANN0QADJdEAAyXRAAM12QAAABAEEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgIEBAQEBAQE BAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQDA5DTdEAA03RAAMl0QADJdEAAzXZAAAAEAQQEBAQEBAQE BAQEBAQEBAQEBAQEBAQCAgQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAMDkJCQkJCQkJCQ kJCQkIPsIItMJCywzIhEJASIRCQFiEQkBohEJAeIRCQIiEQkCYhEJAqIRCQLiEQkDIhEJA2LwVMl AIAAAFWB4f9/AABWZoXAV8ZEJB77xkQkHz/HRCQQAQAAAHQKi3wkSMZHAi3rCotUJEiL+sZCAiCL VCQ4i1wkNGaFyXUQhdJ1DIXbdQhmiR/phQEAAGaB+f9/D4XYAAAAgfoAAACAZscHAQB1BIXbdDb3 wgAAAEB1LosNWKRAAI1HBIlPBGaLFVykQABmiVAEig1epEAAxkcDBohIBjPAX15dW4PEIMNmhcB0 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 9zPLA/AD+YPx/4Pw/zPPM8aDwgSB4QABAYF1HCUAAQGBdNMlAAEBAXUIgeYAAACAdcReX1szwMOL Qvw42HQ2hMB07zjcdCeE5HTnwegQONh0FYTAdNw43HQGhOR01OuWXl+NQv9bw41C/l5fW8ONQv1e X1vDjUL8Xl9bw/8lTDGvAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8xHUAARh1A AAAAAAAGAAAGAAEAABAAAwYABgIQBEVFRQUFBQUFNTAAUAAAAAAgKDhQWAcIADcwMFdQBwAAICAI AAAAAAhgaGBgYGAAAHBweHh4eAgHCAAABwAICAgAAAgACAAHCAAAACgAbgB1AGwAbAApAAAAAAAo bnVsbCkAAAAAAAAAAAAAAADwP0lzUHJvY2Vzc29yRmVhdHVyZVByZXNlbnQAAABLRVJORUwzMgAA AAAAAAAAAAAAAGUrMDAwAAAAcnVudGltZSBlcnJvciAAAA0KAABUTE9TUyBlcnJvcg0KAAAAU0lO RyBlcnJvcg0KAAAAAERPTUFJTiBlcnJvcg0KAABSNjAyOA0KLSB1bmFibGUgdG8gaW5pdGlhbGl6 ZSBoZWFwDQoAAAAAUjYwMjcNCi0gbm90IGVub3VnaCBzcGFjZSBmb3IgbG93aW8gaW5pdGlhbGl6 YXRpb24NCgAAAABSNjAyNg0KLSBub3QgZW5vdWdoIHNwYWNlIGZvciBzdGRpbyBpbml0aWFsaXph dGlvbg0KAAAAAFI2MDI1DQotIHB1cmUgdmlydHVhbCBmdW5jdGlvbiBjYWxsDQoAAABSNjAyNA0K LSBub3QgZW5vdWdoIHNwYWNlIGZvciBfb25leGl0L2F0ZXhpdCB0YWJsZQ0KAAAAAFI2MDE5DQot IHVuYWJsZSB0byBvcGVuIGNvbnNvbGUgZGV2aWNlDQoAAAAAUjYwMTgNCi0gdW5leHBlY3RlZCBo ZWFwIGVycm9yDQoAAAAAUjYwMTcNCi0gdW5leHBlY3RlZCBtdWx0aXRocmVhZCBsb2NrIGVycm9y DQoAAAAAUjYwMTYNCi0gbm90IGVub3VnaCBzcGFjZSBmb3IgdGhyZWFkIGRhdGENCgANCmFibm9y bWFsIHByb2dyYW0gdGVybWluYXRpb24NCgAAAABSNjAwOQ0KLSBub3QgZW5vdWdoIHNwYWNlIGZv ciBlbnZpcm9ubWVudA0KAFI2MDA4DQotIG5vdCBlbm91Z2ggc3BhY2UgZm9yIGFyZ3VtZW50cw0K AAAAUjYwMDINCi0gZmxvYXRpbmcgcG9pbnQgbm90IGxvYWRlZA0KAAAAAE1pY3Jvc29mdCBWaXN1 YWwgQysrIFJ1bnRpbWUgTGlicmFyeQAAAAAKCgAAUnVudGltZSBFcnJvciEKClByb2dyYW06IAAA AC4uLgA8cHJvZ3JhbSBuYW1lIHVua25vd24+AABTdW5Nb25UdWVXZWRUaHVGcmlTYXQAAABKYW5G ZWJNYXJBcHJNYXlKdW5KdWxBdWdTZXBPY3ROb3ZEZWMAAAAAVFoAAEdldExhc3RBY3RpdmVQb3B1 cAAAR2V0QWN0aXZlV2luZG93AE1lc3NhZ2VCb3hBAHVzZXIzMi5kbGwAAAAAAAAAAAAAMSNRTkFO AAAxI0lORgAAADEjSU5EAAAAMSNTTkFOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAc QABgKUAAAAAAAAAAAAAgKkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgIRu QQAAAACAhG5BAAAAAGDjdkEAAAAAYON2QQAAAOD//+9HAAAA4P//70cAAADg///vRwAAAOD//+9H YEGvAYBBrwGgQa8BwEGvAQAAAAAAAAAAAAAAAAAAAAB1mAAAc5gAAIAbQACgG0AAoBtAADAxQAAB AAAAfKBAAGygQAAAAAAAIBmvAQAAAAAgGa8BAQEAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA AAACAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBVQAAQVUAAEFVAABBVQAAQVUAAEFVAAAUAAMAL AAAAAAAAAB0AAMAEAAAAAAAAAJYAAMAEAAAAAAAAAI0AAMAIAAAAAAAAAI4AAMAIAAAAAAAAAI8A AMAIAAAAAAAAAJAAAMAIAAAAAAAAAJEAAMAIAAAAAAAAAJIAAMAIAAAAAAAAAJMAAMAIAAAAAAAA AAMAAAAHAAAACgAAAIwAAAABAgQIAAAAAKQDAABggnmCIQAAAAAAAACm3wAAAAAAAKGlAAAAAAAA gZ/g/AAAAABAfoD8AAAAAKgDAADBo9qjIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgf4AAAAAAABA /gAAAAAAALUDAADBo9qjIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgf4AAAAAAABB/gAAAAAAALYD AADPouSiGgDlouiiWwAAAAAAAAAAAAAAAAAAAAAAgf4AAAAAAABAfqH+AAAAAFEFAABR2l7aIABf 2mraMgAAAAAAAAAAAAAAAAAAAAAAgdPY3uD5AAAxfoH+AAAAAP////8ACgAAABAAACAFkxkAAAAA AAAAAAAAAAAAAAAAAgAAACyjQAAIAAAAAKNAAAkAAADUokAACgAAALCiQAAQAAAAhKJAABEAAABU okAAEgAAADCiQAATAAAABKJAABgAAADMoUAAGQAAAKShQAAaAAAAbKFAABsAAAA0oUAAHAAAAAyh QAB4AAAA/KBAAHkAAADsoEAAegAAANygQAD8AAAA2KBAAP8AAADIoEAAmrVAAJq1QAAAACAAIAAg ACAAIAAgACAAIAAgACgAKAAoACgAKAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAA IABIABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAIQAhACEAIQAhACEAIQAhACEAIQAEAAQ ABAAEAAQABAAEACBAIEAgQCBAIEAgQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEA AQABAAEAEAAQABAAEAAQABAAggCCAIIAggCCAIIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAC AAIAAgACAAIAAgACABAAEAAQABAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AQAAAC4AAAABAAAAAAAAAAAEAAAB/P//NQAAAAsAAABAAAAA/wMAAIAAAACB////GAAAAAgAAAAg AAAAfwAAAIBwAAABAAAA8PH//wAAAABQU1QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUERUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC3QAAwuEAA/////wAAAAAAAAAA AAAAAP////8AAAAAAAAAAAAAAACYuEAAmLhAALC4QACwuEAA///////////wAAAA8QAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmLhAAOABAAD/////HgAAADsAAABa AAAAeAAAAJcAAAC1AAAA1AAAAPMAAAARAQAAMAEAAE4BAABtAQAAAAAAAP////8eAAAAOgAAAFkA AAB3AAAAlgAAALQAAADTAAAA8gAAABABAAAvAQAATQEAAGwBAAAAAAAAAQAAABYAAAACAAAAAgAA AAMAAAACAAAABAAAABgAAAAFAAAADQAAAAYAAAAJAAAABwAAAAwAAAAIAAAADAAAAAkAAAAMAAAA CgAAAAcAAAALAAAACAAAAAwAAAAWAAAADQAAABYAAAAPAAAAAgAAABAAAAANAAAAEQAAABIAAAAS AAAAAgAAACEAAAANAAAANQAAAAIAAABBAAAADQAAAEMAAAACAAAAUAAAABEAAABSAAAADQAAAFMA AAANAAAAVwAAABYAAABZAAAACwAAAGwAAAANAAAAbQAAACAAAABwAAAAHAAAAHIAAAAJAAAABgAA ABYAAACAAAAACgAAAIEAAAAKAAAAggAAAAkAAACDAAAAFgAAAIQAAAANAAAAkQAAACkAAACeAAAA DQAAAKEAAAACAAAApAAAAAsAAACnAAAADQAAALcAAAARAAAAzgAAAAIAAADXAAAACwAAABgHAAAM AAAAAAAAAAAAAAAAAAAAAAAAAACgAkAAAAAAAAAAAADIBUAAAAAAAAAAAAD6CEAAAAAAAAAAAECc DEAAAAAAAAAAAFDDD0AAAAAAAAAAACT0EkAAAAAAAAAAgJaYFkAAAAAAAAAAILy+GUAAAAAAAAS/ yRuONEAAAACh7czOG8LTTkAg8J61cCuorcWdaUDQXf0l5RqOTxnrg0BxlteVQw4FjSmvnkD5v6BE 7YESj4GCuUC/PNWmz/9JH3jC00BvxuCM6YDJR7qTqEG8hWtVJzmN93DgfEK83Y7e+Z37636qUUOh 5nbjzPIpL4SBJkQoEBeq+K4Q48XE+kTrp9Tz9+vhSnqVz0VlzMeRDqauoBnjo0YNZRcMdYGGdXbJ SE1YQuSnkzk7Nbiy7VNNp+VdPcVdO4ueklr/XabwoSDAVKWMN2HR/Ytai9glXYn522eqlfjzJ7+i yF3dgG5MyZuXIIoCUmDEJXUAAAAAzczNzMzMzMzMzPs/cT0K16NwPQrXo/g/WmQ730+Nl24Sg/U/ w9MsZRniWBe30fE/0A8jhEcbR6zFp+4/QKa2aWyvBb03hus/Mz28Qnrl1ZS/1uc/wv39zmGEEXfM q+Q/L0xb4U3EvpSV5sk/ksRTO3VEzRS+mq8/3me6lDlFrR6xz5Q/JCPG4ry6OzFhi3o/YVVZwX6x U3wSu18/1+4vjQa+koUV+0Q/JD+l6TmlJ+p/qCo/fayh5LxkfEbQ3VU+Y3sGzCNUd4P/kYE9kfo6 GXpjJUMxwKw8IYnROIJHl7gA/dc73IhYCBux6OOGpgM7xoRFQge2mXU32y46M3Ec0iPbMu5JkFo5 poe+wFfapYKmorUy4miyEadSn0RZtxAsJUnkLTY0T1Ouzmslj1kEpMDewn376MYenueIWleRPL9Q gyIYTktlYv2Dj68GlH0R5C3en87SyATdptgKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAoMG8BAAAAAAAAAADMNG8B5DBvAQAAAAAAAAAAAAAAAAAAAAAA AAAAVDNvAbIxbwHAMW8B0jFvAeYxbwH2MW8BBDJvARgybwEsMm8BSDJvAV4ybwF4Mm8BjjJvAagy bwHAMm8B2jJvAfAybwH8Mm8BBjNvARIzbwEkM28BNDNvAUIzbwGgMW8BYjNvAXAzbwF+M28BijNv AZYzbwGiM28BvDNvAcgzbwHYM28B6DNvAfgzbwEMNG8BHjRvATA0bwFCNG8BUjRvAWI0bwFyNG8B gDRvAZI0bwGkNG8BvjRvAQAAAABUM28BsjFvAcAxbwHSMW8B5jFvAfYxbwEEMm8BGDJvASwybwFI Mm8BXjJvAXgybwGOMm8BqDJvAcAybwHaMm8B8DJvAfwybwEGM28BEjNvASQzbwE0M28BQjNvAaAx bwFiM28BcDNvAX4zbwGKM28BljNvAaIzbwG8M28ByDNvAdgzbwHoM28B+DNvAQw0bwEeNG8BMDRv AUI0bwFSNG8BYjRvAXI0bwGANG8BkjRvAaQ0bwG+NG8BAAAAAKoAR2V0Q29tbWFuZExpbmVBAEwB R2V0VmVyc2lvbgAAFgFHZXRQcm9jQWRkcmVzcwAA/gBHZXRNb2R1bGVIYW5kbGVBAAD1AEdldExv Y2FsVGltZQAAawBFeGl0UHJvY2VzcwBGAlRlcm1pbmF0ZVByb2Nlc3MAANMAR2V0Q3VycmVudFBy b2Nlc3MAUAJVbmhhbmRsZWRFeGNlcHRpb25GaWx0ZXIAAPwAR2V0TW9kdWxlRmlsZU5hbWVBAACW AEZyZWVFbnZpcm9ubWVudFN0cmluZ3NBAKsBTXVsdGlCeXRlVG9XaWRlQ2hhcgCXAEZyZWVFbnZp cm9ubWVudFN0cmluZ3NXAOEAR2V0RW52aXJvbm1lbnRTdHJpbmdzAOMAR2V0RW52aXJvbm1lbnRT dHJpbmdzVwAAbgJXaWRlQ2hhclRvTXVsdGlCeXRlAKMAR2V0Q1BJbmZvAJ0AR2V0QUNQAAAJAUdl dE9FTUNQAAAbAlNldEhhbmRsZUNvdW50AAAqAUdldFN0ZEhhbmRsZQAA7wBHZXRGaWxlVHlwZQAo AUdldFN0YXJ0dXBJbmZvQQBsAUhlYXBEZXN0cm95AGoBSGVhcENyZWF0ZQAAXgJWaXJ0dWFsRnJl ZQDlAVJ0bFVud2luZAB7AldyaXRlRmlsZQBoAUhlYXBBbGxvYwBIAUdldFRpbWVab25lSW5mb3Jt YXRpb24AAG4BSGVhcEZyZWUAAFsCVmlydHVhbEFsbG9jAACQAUxvYWRMaWJyYXJ5QQAA9ABHZXRM YXN0RXJyb3IAAI4ARmx1c2hGaWxlQnVmZmVycwAAGQJTZXRGaWxlUG9pbnRlcgAAKwFHZXRTdHJp bmdUeXBlQQAALgFHZXRTdHJpbmdUeXBlVwAAjQFMQ01hcFN0cmluZ0EAAI4BTENNYXBTdHJpbmdX AAApAlNldFN0ZEhhbmRsZQAAGABDbG9zZUhhbmRsZQAeAENvbXBhcmVTdHJpbmdBAAAfAENvbXBh cmVTdHJpbmdXAAARAlNldEVudmlyb25tZW50VmFyaWFibGVBAHEBSGVhcFJlQWxsb2MAS0VSTkVM MzIuZGxsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAYOM2QAAAAAAAAPA/AAAAAAAAAEAAAAAAAAAAAAAAAAAAAPA/ AAAAAAAAAEAAAAAAAAAAAAAAAAAAAPA/AAAAAAAAAEAAAAAAAAAAAAAAAAAAAPA/AAAAAAAAAEAA AAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAgIQuQQAA AAAAAPA/AAAAAAAACEAAAAAAAAAIQAAAAAAAAAhAAAAAAAAACEAAAAAAAAAIQAAAAAAAAAhAAAAA AAAACEAAAAAAAAAIQAAAAAAAAAhAmpmZmZmZuT+N7bWg98awPgAAAAAAAPA/mpmZmZmZuT+N7bWg 98awPgAAAAAAAPA/mpmZmZmZuT+N7bWg98awPgAAAAAAAPA/mpmZmZmZuT+N7bWg98awPgAAAAAA APA/je21oPfGsD6N7bWg98awPgAAAACAhC5BQ29weTogICAgICAAAAAAAAAAAAAAAAAAAAAAAAAA AABTY2FsZTogICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFkZDogICAgICAgAAAAAAAAAAAAAAAA AAAAAAAAAAAAVHJpYWQ6ICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgAAVGhpcyBzeXN0 ZW0gdXNlcyAlZCBieXRlcyBwZXIgRE9VQkxFIFBSRUNJU0lPTiB3b3JkLgoAAAAAAAAAAAAAAEFy cmF5IHNpemUgPSAlZCwgT2Zmc2V0ID0gJWQKAAAAVG90YWwgbWVtb3J5IHJlcXVpcmVkID0gJS4x ZiBNQi4KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEVhY2ggdGVzdCBpcyBydW4gJWQg dGltZXMsIGJ1dCBvbmx5CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0aGUgKmJlc3QqIHRp bWUgZm9yIGVhY2ggaXMgdXNlZC4KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWW91ciBj bG9jayBncmFudWxhcml0eS9wcmVjaXNpb24gYXBwZWFycyB0byBiZSAlZCBtaWNyb3NlY29uZHMu CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWW91ciBjbG9jayBncmFudWxhcml0eSBh cHBlYXJzIHRvIGJlIGxlc3MgdGhhbiBvbmUgbWljcm9zZWNvbmQuCgAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAARWFjaCB0ZXN0IGJlbG93IHdpbGwgdGFrZSBvbiB0aGUgb3JkZXIgb2Yg JWQgbWljcm9zZWNvbmRzLgoAAAAAACAgICg9ICVkIGNsb2NrIHRpY2tzKQoAAAAAAAAAAAAASW5j cmVhc2UgdGhlIHNpemUgb2YgdGhlIGFycmF5cyBpZiB0aGlzIHNob3dzIHRoYXQKAAAAAAAAAAAA AAAAAHlvdSBhcmUgbm90IGdldHRpbmcgYXQgbGVhc3QgMjAgY2xvY2sgdGlja3MgcGVyIHRlc3Qu CgAAAAAAAAAAAABXQVJOSU5HIC0tIFRoZSBhYm92ZSBpcyBvbmx5IGEgcm91Z2ggZ3VpZGVsaW5l LgoAAAAAAAAAAAAAAAAAAAAARm9yIGJlc3QgcmVzdWx0cywgcGxlYXNlIGJlIHN1cmUgeW91IGtu b3cgdGhlCgAAAAAAAAAAAAAAAAAAAAAAAHByZWNpc2lvbiBvZiB5b3VyIHN5c3RlbSB0aW1lci4K AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGdW5jdGlvbiAgICAgIFJhdGUgKE1CL3Mp ICAgUk1TIHRpbWUgICAgIE1pbiB0aW1lICAgICBNYXggdGltZQoAJXMlMTEuNGYgICUxMS40ZiAg JTExLjRmICAlMTEuNGYKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBAAAAA AAAA8D8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAA== ------=_NextPart_000_000D_01BFCE22.C99A3640 Content-Type: application/vnd.ms-excel; name="Athlon_stream_c.xls" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="Athlon_stream_c.xls" 0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAABAAAAIwAAAAAAAAAA EAAA/v///wAAAAD+////AAAAACIAAAD///////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////8J CBAAAAYFAPIVzAdJAAAABgAAAOEAAgCwBMEAAgAAAOIAAABcAHAADQAASC5XLiBTdG9ja21hbiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIAAgCwBGEBAgAAAD0BAgABAJwA AgAOABkAAgAAABIAAgAAABMAAgAAAK8BAgAAALwBAgAAAD0AEgB4AGkA+CWrGDgAAAAAAAEAWAJA AAIAAACNAAIAAAAiAAIAAAAOAAIAAQC3AQIAAADaAAIAAAAxABoAyAAAAP9/kAEAAAAAAMUFAUEA cgBpAGEAbAAxABoAyAAAAP9/kAEAAAAAAMUFAUEAcgBpAGEAbAAxABoAyAAAAP9/kAEAAAAAAMUF AUEAcgBpAGEAbAAxABoAyAAAAP9/kAEAAAAAAMUFAUEAcgBpAGEAbAAxABoAyAAAAP9/kAEAAAAA AMUFAUEAcgBpAGEAbAAxABoA8AADAP9/vAIAAAACAMUFAUEAcgBpAGEAbAAxABoANgEDAP9/vAIA AAACAMUFAUEAcgBpAGEAbAAxABoANgEBAP9/vAIAAAAAAMUFAUEAcgBpAGEAbAAxABoA8AABAP9/ vAIAAAAAAMUFAUEAcgBpAGEAbAAxABoA8AAAAP9/kAEAAAAAAMUFAUEAcgBpAGEAbAAxABoA8AAA AP9/kAEAAAAAAMUFAUEAcgBpAGEAbAAeBBwABQAXAAAiJCIjLCMjMF8pO1woIiQiIywjIzBcKR4E IQAGABwAACIkIiMsIyMwXyk7W1JlZF1cKCIkIiMsIyMwXCkeBCIABwAdAAAiJCIjLCMjMC4wMF8p O1woIiQiIywjIzAuMDBcKR4EJwAIACIAACIkIiMsIyMwLjAwXyk7W1JlZF1cKCIkIiMsIyMwLjAw XCkeBDcAKgAyAABfKCIkIiogIywjIzBfKTtfKCIkIiogXCgjLCMjMFwpO18oIiQiKiAiLSJfKTtf KEBfKR4ELgApACkAAF8oKiAjLCMjMF8pO18oKiBcKCMsIyMwXCk7XygqICItIl8pO18oQF8pHgQ/ ACwAOgAAXygiJCIqICMsIyMwLjAwXyk7XygiJCIqIFwoIywjIzAuMDBcKTtfKCIkIiogIi0iPz9f KTtfKEBfKR4ENgArADEAAF8oKiAjLCMjMC4wMF8pO18oKiBcKCMsIyMwLjAwXCk7XygqICItIj8/ Xyk7XyhAXyngABQAAAAAAPX/IAAAAAAAAAAAAAAAwCDgABQAAQAAAPX/IAAA9AAAAAAAAAAAwCDg ABQAAQAAAPX/IAAA9AAAAAAAAAAAwCDgABQAAgAAAPX/IAAA9AAAAAAAAAAAwCDgABQAAgAAAPX/ IAAA9AAAAAAAAAAAwCDgABQAAAAAAPX/IAAA9AAAAAAAAAAAwCDgABQAAAAAAPX/IAAA9AAAAAAA AAAAwCDgABQAAAAAAPX/IAAA9AAAAAAAAAAAwCDgABQAAAAAAPX/IAAA9AAAAAAAAAAAwCDgABQA AAAAAPX/IAAA9AAAAAAAAAAAwCDgABQAAAAAAPX/IAAA9AAAAAAAAAAAwCDgABQAAAAAAPX/IAAA 9AAAAAAAAAAAwCDgABQAAAAAAPX/IAAA9AAAAAAAAAAAwCDgABQAAAAAAPX/IAAA9AAAAAAAAAAA wCDgABQAAAAAAPX/IAAA9AAAAAAAAAAAwCDgABQAAAAAAAEAIAAAAAAAAAAAAAAAwCDgABQABQAr APX/IAAA+AAAAAAAAAAAwCDgABQABQApAPX/IAAA+AAAAAAAAAAAwCDgABQABQAsAPX/IAAA+AAA AAAAAAAAwCDgABQABQAqAPX/IAAA+AAAAAAAAAAAwCDgABQABQAJAPX/IAAA+AAAAAAAAAAAwCCT AgQAEIAD/5MCBAARgAb/kwIEABKABP+TAgQAE4AH/5MCBAAAgAD/kwIEABSABf9gAQIAAACFABAA /QwAAAAACABsaWxpX3hsc4wABAABAAEArgEEAAEAAQQXAAgAAQAAAAAAAADrAFoADwAA8FIAAAAA AAbwGAAAAAEIAAACAAAAAgAAAAEAAAABAAAAAgAAADMAC/ASAAAAvwAIAAgAgQEJAAAIwAFAAAAI QAAe8RAAAAANAAAIDAAACBcAAAj3AAAQ/ABZAg0AAAAJAAAAAwAAcnVuBAAAY29weQUAAHNjYWxl AwAAYWRkBQAAdHJpYWQJAABBdmcgMXN0IDcHAABBdmcgYWxsegABOwBKAHUAbgBlAC0ANAAtADIA MAAwADAAIABIAFcAUwB0AG8AYwBrAG0AYQBuACAAcgB1AG4AcwAgAHMAdAByAGUAYQBtAF8AZAAu AGMAIABvAG4AIABsAGkAbABpACwAIABBAHQAaABsAG8AbgAgADgAMAAwACAAdwBpAHQAaAAgADcA NgA4ACAATQBCACAAUABDADEAMwAzACAAUwBEAFIAQQBNACAAYQB0ACAANAA6ADMAIABSAEEATQA6 AEYAUwBCACAAYQBuAGQAIAAzAC0AMgAtADIAIAB0AGkAbQBpAG4AZwAgACgAQwBBAFMAJiApAB4B ADsgIFN0cmVhbV9kLmMgd2FzIGNvbXBpbGVkIHdpdGggSW50ZWwgQy9DKysgNC41OyB1c2VkIFBh dWwgSHNpZWgncyB0aW1lciByb3V0aW5lLiAgU3dpdGNoZXM6IC9HNiAvTUwgL1cyIC9HWCAvTzIg L0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9GQSAvRmEiUmVsZWFzZS8iIC9G cCIuXFJlbGVhc2Vcc3RyZWFtLnBjaCIgL1lYIC9GbyIuXFJlbGVhc2UvIiAvRmQiLlxSZWxlYXNl LyIgL0ZEIC1RcmVzdHJpY3QgL2MgIChOT1RFOiBubyByZXN0cmljdCBrZXl3b3JkcyBpbiBjb2Rl KS7/AAoECACaBgAADABvKsoHAAA8AWEAbQD/////AAAAAA8AAABUAGIAuolwMA8AAAAPAAAACQQA AAEAAABuq0cBaMpiABkAAAAPAAAA8Qj+Fz8HAgKZDgICBxgADgAAAAAAAN8H////5wAAAAAEAAAA BAAAAAkEAAABAAAAzsJHAVLGYgAAAAAAAAAAALqJcDAGAAAABgAAAAkEAAABAAAACh1HAeDKYgAA AAAAAAAAAEYAVQD//////////wAAAAAJAAAAGNCdMLqJcDAJAAAACQAAAAkEAAABAAAAZhhHAQjL YgAKAAAACQAAAEYAVQBEBwICUQ4CAlMALg4AAAAAQQBdB////+cAAAAAUQ4CAgUAAABEBwICRAAg AAAAAAAAAAAAAAAAAGmHcDDGwkcBBAAAAErGYgAEAAAAAQAAAAQAAABKxmIAxsJHAQQAAAAAAAAA BgAAANTKYgAGAAAAAQAAAAYAAAAAAAAA/hxHAQYAAAABAAAAUQ4CEm0ALgDgwkcBtAZUMPjFYgB0 AAAAAAAAAAIAxzAAAMUwAQAAAAkAAAAIy2IAZhhHAQoAAAB/em0wDgDHMNEAAAA6xmIA/AAAAAkA AACdRQQwAADFMOyjxzDRAAAAOsZiAP0AAAA6xmIAPMhiAN+/AzA6xmIA4MJHAQAAAAA8yGIAdAAA AAAAAACGqQ4wAAAAADjGYgAHAAAA/////2DCRwF4yGIAAAAAAAcAUABlAHIAYwBlAG4AdAAAAAAA AAAwAF0AAABmGEcBCgAAAAjLYgAJAAAA+CRHAQkAAAAHAAAAAAAAAEy8RwEAAAAAzMdiAAAAAAAE AAAAAQAAABjvnTAAAAAAXACHAMjHYgABAAAA/xAAMMZ7VDCCgVQwrogQMLUamgBUAIcAZRAAMFQA hwC1GpoAAgAAANWiDjC1GpoAVACHAAEAAAB8GpoAAAAAAAgAhwD8AYcAAAAAAAAAAADDGpoAAAAA AAAAAAAAAAAAPwAAAAAAAABMx2IAMaAOMAYAAAB8GpoAKQAAAAcAAAAGAocAeshiAHjIYgAIAIcA BwAAAEAAAADua1QwAAAAAGUQADCge1Qw7ASaAEwAAAD/EAAwAQAAADjIYgBAAB7xEAAAAIjHYgDW nHowAAAAAFAInAAIAAAAmMdiAFAInACIZHswsGNUMKjHYgAIAAAAAQAAAFAInAAEAAAAvMdiAFAI nADcx2IAj6V9MLhSVDAAAAAAzQAAANzHYgAAAAAAOMhiADjIYgAYyGIAkKd6MM0AAAAAAAAAOMhi AAEAAABQCJwAWgAAAOsAAABgyGIAAAAAANLIYgAlhRAweMhiAFoAAABQCJwAAAgAAJVgCTDrAAAA WgAAAHjIYgBRYAkw6gMKAAAACQgQAAAGEADyFcwHSQAAAAYAAAALAhQAAAAAAAAAAAARAAAAexEA AD0YAAANAAIAAQAMAAIAZAAPAAIAAQARAAIAAAAQAAgA/Knx0k1iUD9fAAIAAQAqAAIAAAArAAIA AACCAAIAAQCAAAgAAAAAAAAAAAAlAgQAAAD/AIEAAgDBBBQAAAAVAAAAgwACAAAAhAACAAAATQC+ AwAASABQACAATABhAHMAZQByAEoAZQB0ACAANgBQAC8ANgBNAFAAIAAtACAAUABvAHMAdABTAGMA cgBpAHAAdAAAAAAEAwTUAOgCH2cAAAEAAQDqCm8IZAABAAcAWAIBAAEAWAIDAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA CAAAAMASAADIGQAAAQAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAD9SSQ9INxuasMiDQAB AAEAAAAAAAEAAAAAAAIAAQABAFIDAADCAQAAAAAAAAAAZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 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 AAcAOgAAAgABAA0QDAAAAAQBYwBvAHAAeQBREBMAAQIAAAAACwA7AAADAAwAAQABAFEQEwACAgAA AAALADsAAAMADAAAAAAAURAIAAMBAAAAAAAABhAIAP//AAAAAAAAMxAAAF8QAgAAAAcQDAAAAIAA AgABAAAAIAAKEBAA////AAAAAAABAAEATgBNAAsQAgAAAAkQFAAAAIAA////AAgAEAAgAE4AjAAA ADQQAABFEAIAAAA0EAAAAxAMAAEAAQAKAAoAAQAAADMQAABREA8AAAIAAAAABwA6AAACAAIADRAO AAAABQFzAGMAYQBsAGUAURATAAECAAAAAAsAOwAAAwAMAAIAAgBREBMAAgIAAAAACwA7AAADAAwA AAAAAFEQCAADAQAAAAAAAAYQCAD//wEAAQAAADMQAABfEAIAAAAHEAwA/wD/AAAAAAABACEAChAQ AP///wAAAAAAAQABAE4ATQALEAIAAAAJEBQA/wD/AP8A/wABAAAAIQAhAIwAAAA0EAAARRACAAAA NBAAAAMQDAABAAEACgAKAAEAAAAzEAAAURAPAAACAAAAAAcAOgAAAgADAA0QCgAAAAMBYQBkAGQA URATAAECAAAAAAsAOwAAAwAMAAMAAwBREBMAAgIAAAAACwA7AAADAAwAAAAAAFEQCAADAQAAAAAA AAYQCAD//wIAAgAAADMQAABfEAIAAAAHEAwA/wAAAAAAAQAAAAoAChAQAP///wAAAAAAAQABAE4A TQALEAIAAAAJEBQA/wAAAP//AAACAAAACgAiALQAAAA0EAAARRACAAAANBAAAAMQDAABAAEACgAK AAEAAAAzEAAAURAPAAACAAAAAAcAOgAAAgAEAA0QDgAAAAUBdAByAGkAYQBkAFEQEwABAgAAAAAL ADsAAAMADAAEAAQAURATAAICAAAAAAsAOwAAAwAMAAAAAABREAgAAwEAAAAAAAAGEAgA//8DAAMA AAAzEAAAXxACAAAABxAMAAAAAAAAAAEAAAAIAAoQEAD///8AAAAAAAEAAQBOAE0ACxACAAAACRAU AAAAAAD///8ABAAQAAgATgDIAAAANBAAAEUQAgAAADQQAABEEAQAGgAAACQQAgACACUQIAACAgEA AAAAAOD////M////AAAAAAAAAACxAE0AIBAAADMQAABPEBQAAgACAAAAAAAAAAAAAAAAAAAAAAAm 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 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/v8AAAQKAgAAAAAAAAAAAAAAAAAAAAAAAgAA AALVzdWcLhsQk5cIACss+a5EAAAABdXN1ZwuGxCTlwgAKyz5rhQBAADQAAAACQAAAAEAAABQAAAA DwAAAFgAAAAXAAAAcAAAAAsAAAB4AAAAEAAAAIAAAAATAAAAiAAAABYAAACQAAAADQAAAJgAAAAM AAAArQAAAAIAAADkBAAAHgAAAA0AAABQZXJzb25hbCBVc2UAaV94AwAAADEVCAALAAAAAAAAAAsA AAAAAAAACwAAAAAAAAALAAAAAAAAAB4QAAABAAAACQAAAGxpbGlfeGxzAAwQAAACAAAAHgAAAAsA AABXb3Jrc2hlZXRzAAMAAAABAAAAmAAAAAMAAAAAAAAAIAAAAAEAAAA2AAAAAgAAAD4AAAABAAAA AgAAAAoAAABfUElEX0dVSUQAAgAAAOQEAABBAAAATgAAAHsAQgA1ADgARQBBADgAMgAwAC0AMwBB ADEAMAAtADEAMQBEADQALQBBAEEARQAzAC0AMAAwADAAMABDADAANwBGAEMARQAwADEAfQAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAA AAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAARAAAA/v///xMAAAAUAAAAFQAAABYAAAAXAAAA GAAAABkAAAD+////GwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAAP7////9/////v////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ////////////////////////////UgBvAG8AdAAgAEUAbgB0AHIAeQAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYABQH//////////wIAAAAgCAIAAAAAAMAAAAAA AABGAAAAAAAAAAAAAAAAAAAAAAAAAAD+////AAAAAAAAAABXAG8AcgBrAGIAbwBvAGsAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgACAf////////////// /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMIgAAAAAAAAUAUwB1AG0A bQBhAHIAeQBJAG4AZgBvAHIAbQBhAHQAaQBvAG4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAo AAIBAQAAAAMAAAD/////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAQ AAAAAAAABQBEAG8AYwB1AG0AZQBuAHQAUwB1AG0AbQBhAHIAeQBJAG4AZgBvAHIAbQBhAHQAaQBv AG4AAAAAAAAAAAAAADgAAgH///////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAaAAAAABAAAAAAAAA= ------=_NextPart_000_000D_01BFCE22.C99A3640-- From - Sun Jun 11 06:08:42 2000 Received: from aux153.plano.net ([209.217.36.11]) by Mail.austin.rr.com with Microsoft SMTPSVC(5.5.1877.357.35); Sun, 4 Jun 2000 21:58:51 -0500 Received: (qmail 18047 invoked by uid 10000); 5 Jun 2000 03:12:09 -0000 Delivered-To: mccalpin.com-john@mccalpin.com Received: (qmail 18042 invoked from network); 5 Jun 2000 03:12:09 -0000 Received: from ares.cs.virginia.edu (128.143.137.19) by aux153.plano.net with SMTP; 5 Jun 2000 03:12:09 -0000 Received: from mail-gw.NetergyNet.COM (mail-gw.8x8.com [192.84.19.131]) by ares.cs.Virginia.EDU (8.9.2/8.9.2/UVACS-2000040300) with ESMTP id XAA18368 for ; Sun, 4 Jun 2000 23:12:07 -0400 (EDT) Received: from mail.8x8.COM (mail.8x8.com [192.84.19.130]) by mail-gw.NetergyNet.COM (8.9.3+Sun/8.9.3) with ESMTP id UAA16994 for ; Sun, 4 Jun 2000 20:12:05 -0700 (PDT) Received: from 8x8.com (weiwei.8x8.com [192.84.18.39]) by mail.8x8.COM (8.9.1b+Sun/8.9.1) with ESMTP id UAA10622 for ; Sun, 4 Jun 2000 20:12:04 -0700 (PDT) Message-ID: <393B1B47.4037083B@8x8.com> Date: Sun, 04 Jun 2000 20:15:19 -0700 From: Wei Lin Organization: 8x8, Inc. X-Mailer: Mozilla 4.7 [en] (WinNT; I) X-Accept-Language: en,pdf MIME-Version: 1.0 To: mccalpin@cs.virginia.edu Subject: Athlon STREAM results Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Return-Path: wlin@NetergyNet.COM X-Mozilla-Status: 8001 X-Mozilla-Status2: 00000000 X-UIDL: d5300000.eml Status: RO AMD Athlon 750 MHz Asus K7M motherboard (AMD 750 chipset) 256 MByte PC-100 SDRAM (CAS-2) Windows NT4/SP6 Compaq Visual Fortran 6.1A -unroll:8 ---------------------------------------------- Double precision appears to have 16 digits of accuracy Assuming 8 bytes per DOUBLE PRECISION word ---------------------------------------------- Array size = 9012345 Offset = 0 The total memory requirement is 206 MB You are running each test 10 times The *best* time for each test is used ---------------------------------------------------- Your clock granularity/precision appears to be 10000 microseconds The tests below will each take a time on the order of 250000 microseconds (= 25 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) RMS time Min time Max time Copy: 480.6584 0.3050 0.3000 0.3100 Scale: 450.6173 0.3270 0.3200 0.3300 Add: 540.7407 0.4100 0.4000 0.4200 Triad: 491.5825 0.4510 0.4400 0.4600 Sum of a is = 1.039394452812601E+019 Sum of b is = 2.078788905585281E+018 Sum of c is = 2.771718540568361E+018 From - Sun Jun 11 06:09:35 2000 Received: from aux153.plano.net ([209.217.36.11]) by mail.austin.rr.com with Microsoft SMTPSVC(5.5.1877.357.35); Sat, 10 Jun 2000 13:00:19 -0500 Received: (qmail 15226 invoked by uid 10000); 10 Jun 2000 17:58:59 -0000 Delivered-To: mccalpin.com-john@mccalpin.com Received: (qmail 15222 invoked from network); 10 Jun 2000 17:58:59 -0000 Received: from ares.cs.virginia.edu (128.143.136.41) by aux153.plano.net with SMTP; 10 Jun 2000 17:58:59 -0000 Received: from mail-gw.NetergyNet.COM (mail-gw.8x8.com [192.84.19.131]) by ares.cs.Virginia.EDU (8.9.2/8.9.2/UVACS-2000040300) with ESMTP id NAA00762 for ; Sat, 10 Jun 2000 13:58:57 -0400 (EDT) Received: from mail.8x8.COM (mail.8x8.com [192.84.19.130]) by mail-gw.NetergyNet.COM (8.9.3+Sun/8.9.3) with ESMTP id KAA00984 for ; Sat, 10 Jun 2000 10:58:55 -0700 (PDT) Received: from 8x8.com (weiwei.8x8.com [192.84.18.39]) by mail.8x8.COM (8.9.1b+Sun/8.9.1) with ESMTP id KAA19333 for ; Sat, 10 Jun 2000 10:58:54 -0700 (PDT) Message-ID: <394282A4.CB14B705@8x8.com> Date: Sat, 10 Jun 2000 11:02:12 -0700 From: Wei Lin Organization: 8x8, Inc. X-Mailer: Mozilla 4.7 [en] (WinNT; I) X-Accept-Language: en,pdf MIME-Version: 1.0 To: mccalpin@cs.virginia.edu Subject: STREAM results AMD Athlon-750 on KX133 platform Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Return-Path: wlin@NetergyNet.COM X-Mozilla-Status: 8001 X-Mozilla-Status2: 00000000 X-UIDL: 07300000.eml Status: RO AMD Athlon 750 MHz Asus K7V motherboard, VIA KX133 chipset 256 MB PC133 SDRAM, CAS-2 Windows NT4/SP6 Compaq Visual Fortran 6.1A -unroll:8 ---------------------------------------------- Double precision appears to have 16 digits of accuracy Assuming 8 bytes per DOUBLE PRECISION word ---------------------------------------------- Array size = 9012345 Offset = 0 The total memory requirement is 206 MB You are running each test 10 times The *best* time for each test is used ---------------------------------------------------- Your clock granularity/precision appears to be 10000 microseconds The tests below will each take a time on the order of 240000 microseconds (= 24 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) RMS time Min time Max time Copy: 554.6058 0.2670 0.2600 0.2700 Scale: 554.6058 0.2660 0.2600 0.2700 Add: 655.4433 0.3351 0.3300 0.3500 Triad: 617.9894 0.3590 0.3500 0.3600 Sum of a is = 1.039394452812601E+019 Sum of b is = 2.078788905585281E+018 Sum of c is = 2.771718540568361E+018 From - Mon Jul 17 04:04:32 2000 Delivered-To: mccalpin.com-john@mccalpin.com Reply-To: HCB03556@nifty.ne.jp Message-Id: Date: Thu, 22 Jun 2000 20:14:37 +0900 To: mccalpin@cs.virginia.edu From: "ISOBE, Michiro" Subject: STREAM results of tuned Power Mac G4. Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Mozilla-Status: 8001 X-Mozilla-Status2: 00000000 X-UIDL: 8a300000.eml Status: RO The following results were obtained from two different configurations of tuned Power Mac G4 AGP (or Sawtooth). The one was standard 100MHz FSB and CPU was overclocked to 500MHz. The other was overclocked FSB to 133MHz. I used standard 601-optimized executable because PPC7400 prefers 601-optimized one than 604-optimized one. I also found that some early revisions of Power Mac G4 AGP are disabled speculative processing function. It makes lower the STREAM result drastically. Michiro Isobe -- Result 1 System descriptions Power Mac G4/500MHz (OC'd from 450MHz), L2 Cache: 1MB/250MHz, RAM: PC100 CL2@100MHz bus, MacOS 9.0.4, VM enabled, Speculative Processing enabled ------------------------------------------------------------- This system uses 8 bytes per DOUBLE PRECISION word. ------------------------------------------------------------- Array size = 400000, Offset = 0 Total memory required = 9.2 MB. Each test is run 10 times, but only the *best* time for each is used. ------------------------------------------------------------- Your clock granularity/precision appears to be 7 microseconds. Each test below will take on the order of 20409 microseconds. (= 2915 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) RMS time Min time Max time Copy: 558.0746 0.0118 0.0115 0.0127 Scale: 531.1203 0.0122 0.0120 0.0128 Add: 509.5271 0.0190 0.0188 0.0192 Triad: 529.7721 0.0182 0.0181 0.0184 -- Result 2 System descriptions Power Mac G4/466MHz (OC'd from 450MHz), L2 Cache: 1MB/233MHz, RAM: PC133 CL2@133MHz bus, MacOS 9.0.4, VM enabled, Speculative Processing enabled ------------------------------------------------------------- This system uses 8 bytes per DOUBLE PRECISION word. ------------------------------------------------------------- Array size = 400000, Offset = 0 Total memory required = 9.2 MB. Each test is run 10 times, but only the *best* time for each is used. ------------------------------------------------------------- Your clock granularity/precision appears to be 8 microseconds. Each test below will take on the order of 15750 microseconds. (= 1968 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) RMS time Min time Max time Copy: 791.4915 0.0082 0.0081 0.0091 Scale: 673.9680 0.0096 0.0095 0.0098 Add: 783.4177 0.0124 0.0123 0.0129 Triad: 685.1270 0.0141 0.0140 0.0145 -- From - Mon Jul 17 04:01:10 2000 Received: from aux153.plano.net ([209.217.36.11]) by mail.austin.rr.com with Microsoft SMTPSVC(5.5.1877.357.35); Wed, 28 Jun 2000 10:57:10 -0500 Received: (qmail 12055 invoked by uid 10000); 28 Jun 2000 15:55:40 -0000 Delivered-To: mccalpin.com-john@mccalpin.com Received: (qmail 12034 invoked from network); 28 Jun 2000 15:55:40 -0000 Received: from mg02.austin.ibm.com (HELO mailgate2.austin.ibm.com) (192.35.232.12) by aux153.plano.net with SMTP; 28 Jun 2000 15:55:40 -0000 Received: from netmail2.austin.ibm.com (netmail2.austin.ibm.com [9.53.250.97]) by mailgate2.austin.ibm.com (AIX4.3/8.9.3/8.9.3) with ESMTP id KAA27496 for ; Wed, 28 Jun 2000 10:57:05 -0500 Received: from popmail.austin.ibm.com (popmail.austin.ibm.com [9.53.247.178]) by netmail2.austin.ibm.com (8.8.5/8.8.5) with ESMTP id KAA31374 for ; Wed, 28 Jun 2000 10:55:38 -0500 Received: from austin.ibm.com (gmp246.austin.ibm.com [9.53.52.182]) by popmail.austin.ibm.com (AIX4.3/8.9.3/8.7-client1.01) with ESMTP id KAA06352 for ; Wed, 28 Jun 2000 10:55:35 -0500 Sender: mccalpin@austin.ibm.com Message-ID: <395A1FF8.F185CDE4@austin.ibm.com> Date: Wed, 28 Jun 2000 10:55:36 -0500 From: John McCalpin X-Mailer: Mozilla 4.61 [en] (X11; U; AIX 4.3) X-Accept-Language: en MIME-Version: 1.0 To: john@mccalpin.com Subject: [Fwd: DS10 fixup] Content-Type: multipart/mixed; boundary="------------227D98182AEF9E71C0F1DD68" Return-Path: mccalpin@austin.ibm.com X-Mozilla-Status: 8001 X-Mozilla-Status2: 00000000 X-UIDL: eb300000.eml Status: RO This is a multi-part message in MIME format. --------------227D98182AEF9E71C0F1DD68 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit -- John D. McCalpin, Ph.D. mccalpin@austin.ibm.com Senior Scientist IBM POWER Microprocessor Development "I am willing to make mistakes as long as someone else is willing to learn from them." --------------227D98182AEF9E71C0F1DD68 Content-Type: message/rfc822 Content-Transfer-Encoding: 7bit Content-Disposition: inline Received: from netmail1.austin.ibm.com (netmail1.austin.ibm.com [9.53.250.96]) by gmp246.austin.ibm.com (AIX4.3/UCB 8.8.8/8.7-client1.01) with ESMTP id KAA38958 for ; Wed, 28 Jun 2000 10:41:31 -0500 Received: from mailgate2.austin.ibm.com (mailgate2.austin.ibm.com [9.3.199.12]) by netmail1.austin.ibm.com (8.8.5/8.8.5) with ESMTP id KAA37816 for ; Wed, 28 Jun 2000 10:41:32 -0500 Received: from zmamail03.zma.compaq.com (zmamail03.zma.compaq.com [161.114.64.103]) by mailgate2.austin.ibm.com (AIX4.3/8.9.3/8.9.3) with SMTP id KAA27296 for ; Wed, 28 Jun 2000 10:42:56 -0500 Received: by zmamail03.zma.compaq.com (Postfix, from userid 12345) id A45F640B3; Wed, 28 Jun 2000 11:41:29 -0400 (EDT) Received: from perfom (perfom.zko.dec.com [16.31.64.90]) by zmamail03.zma.compaq.com (Postfix) with SMTP id 7BA564EAE for ; Wed, 28 Jun 2000 11:41:27 -0400 (EDT) Date: Wed, 28 Jun 2000 11:36:48 -0400 Message-Id: <00062811364807@perfom.zko.dec.com> From: henning@perfom.zko.dec.com (John Henning) To: MCCALPIN@austin.ibm.com Subject: DS10 fixup X-VMS-To: MCCALPIN@AUSTIN.IBM.COM X-VMS-Cc: HENNING X-Mozilla-Status2: 00000000 Hi John, Two problems: (1) Your web site currently has two different values for the DS10 and DS10L. This should not be true. (2) Furthermore, the values I've measured with the latest rev DS10 do not match EITHER of the two values you have posted. These confusing results stimulated me to do a massive number of experiments - on various different combinations of system, firmware, software, memory config, etc. I believe the attached is a more accurate representation of the currently shipping product than either of the existing postings. If you are willing, I'd suggest calling it: Compaq_AlphaServer_DS10/DS10L or if space does not permit the above, then how about Compaq_Alpha_DS10/DS10L Please *remove* the result that I submitted 5/26/99, http://www.cs.virginia.edu/stream/stream_mail/1999/0026.html . Or if you don't like removing old history, you could move it to the experimental table or somehow rename it with something like "older rev" or "obsolete firmware". The other existing result is from Greg Lindahl. Greg wrote in http://www.cs.virginia.edu/stream/stream_mail/2000/0008.html that he thought that his slower result was due to hardware. Actually, it's probably due to the fact that he was using Linux, and the compiler version he had may have been slightly less aggressive in its use of prefecthing. It's not hardware; I have it from an authoritative member of the engineering team that the DS10 and DS10L memory systems are the same, in all aspects except capacity. The former can hold 2GB; the latter can hold only 1GB. So perhaps you could mark Greg's result as something like Compaq_Alpha_DS10_Linux You'll note that the source below is identical to the source for the recent ES40 submissions; I just compiled it WITHOUT "-omp", so those parallel directives are treated as comments. Thanks - John Henning Script started on Tue Jun 27 05:00:51 2000 % /usr/sbin/psrinfo -v Status of processor 0 as of: 06/27/00 05:00:55 Processor has been on-line since 06/21/2000 11:15:15 The alpha EV6 (21264) processor operates at 463 MHz, and has an alpha internal floating point processor. % diff stream_d.f_as_at_ftp_site_22may97 mcc_omp.f 0a1,4 > * this version 25-May-2000 j. henning compaq > * Arrays are ALLOCATABLE; OpenMP syntax has been simplified (per > * suggestion from John McCalpin); timer is Fortran-90 SYSTEM_CLOCK > 52,53c56,57 < INTEGER n,offset,ndim,ntimes < PARAMETER (n=2000000,offset=0,ndim=n+offset,ntimes=10) --- > INTEGER*8 n,offset,ndim,ntimes,maxtimes > PARAMETER (maxtimes=10000) 57c61 < INTEGER j,k,nbpw,quantum --- > INTEGER*8 j,k,nbpw,quantum 60,62c64,66 < DOUBLE PRECISION maxtime(4),mintime(4),rmstime(4),sum(3), < $ times(4,ntimes) < INTEGER bytes(4) --- > DOUBLE PRECISION maxtime(4),mintime(4),rmstime(4), > $ sum1,sum2,sum3,times(4,maxtimes),avgbw > INTEGER*8 bytes(4) 75c79 < DOUBLE PRECISION a(ndim),b(ndim),c(ndim) --- > REAL*8, ALLOCATABLE:: a(:),b(:),c(:) 88a93,98 > PRINT *, "n, offset, ntimes" > READ *, n, offset, ntimes > ndim=n+offset > IF (ntimes .GT. maxtimes) ntimes=maxtimes > ALLOCATE (a(ndim), b(ndim), c(ndim)) > CALL defend_wrap 94c104 < $ 3*nbpw*n/ (1024*1024),' MB' --- > $ 3D0*nbpw*DBLE(n)/ (1024d0*1024),' MB' 97a108 > c$omp parallel do 103a115 > c$omp parallel do 128a141 > c$omp parallel do 135a149 > c$omp parallel do 142a157 > c$omp parallel do 149a165 > c$omp parallel do 165a182 > avgbw = 0 169a187 > avgbw = avgbw+n*bytes(j)*nbpw/mintime(j)/1.0D6 171,173c189,193 < sum(1) = 0.0d0 < sum(2) = 0.0d0 < sum(3) = 0.0d0 --- > WRITE (*,FMT=9050) "AvgBW: ", avgbw/4D0 > sum1 = 0.0d0 > sum2 = 0.0d0 > sum3 = 0.0d0 > c$omp parallel do 175,177c195,197 < sum(1) = sum(1) + a(j) < sum(2) = sum(2) + b(j) < sum(3) = sum(3) + c(j) --- > sum1 = sum1 + a(j) > sum2 = sum2 + b(j) > sum3 = sum3 + c(j) 179,181c199,201 < PRINT *,'Sum of a is = ',sum(1) < PRINT *,'Sum of b is = ',sum(2) < PRINT *,'Sum of c is = ',sum(3) --- > PRINT *,'Sum of a is = ',sum1 > PRINT *,'Sum of b is = ',sum2 > PRINT *,'Sum of c is = ',sum3 185c205 < 9020 FORMAT (1x,a,i4,a) --- > 9020 FORMAT (1x,a,f10.2,a) 334a355,374 > END > > SUBROUTINE defend_wrap > INTEGER count, count_rate, count_max > CALL SYSTEM_CLOCK ( count, count_rate, count_max ) > IF (DBLE(count) .GT. .999*DBLE(count_max)) THEN > PRINT *,"Oops, this code won't handle a wrapping system_clock" > PRINT *,"and soon we will wrap." > PRINT 4, "count:", count, "count_max:", count_max > 4 FORMAT (1X, A10, I16) > PRINT *,"Try again later, or fix the code to handle wraps." > PRINT *,"(The counter wraps approx once every 60 hours)" > STOP > END IF > END > > DOUBLE PRECISION FUNCTION second > INTEGER count, count_rate, count_max > CALL SYSTEM_CLOCK ( count, count_rate, count_max ) > second = DBLE(count)/DBLE(count_rate) % cat !$ % cat mcc_omp.f * this version 25-May-2000 j. henning compaq * Arrays are ALLOCATABLE; OpenMP syntax has been simplified (per * suggestion from John McCalpin); timer is Fortran-90 SYSTEM_CLOCK * Program: Stream * Programmer: John D. McCalpin * Revision: 4.1, June 4, 1996 * * This program measures memory transfer rates in MB/s for simple * computational kernels coded in Fortran. These numbers reveal the * quality of code generation for simple uncacheable kernels as well * as showing the cost of floating-point operations relative to memory * accesses. * *========================================================================= * INSTRUCTIONS: * 1) Stream requires a cpu timing function called second(). * A sample is shown below. This is unfortunately rather * system dependent. The code attempts to determine the * granularity of the clock to help interpret the results. * For dedicated or parallel runs, you might want to comment * these out and compile/link with "wallclock.c". * 2) Stream requires a good bit of memory to run. * Adjust the Parameter 'N' in the main program to give * a 'timing calibration' of at least 20 clicks. * This will provide rate estimates that should be good to * about 5% precision. * ------------------------------------------------------------ * Note that you are free to use any array length and offset * that makes each array larger than the last-level cache. * The intent is to determine the *best* sustainable bandwidth * available with this simple coding. Of course, lower values * are usually fairly easy to obtain on cached machines, but * by keeping the test to the *best* results, the answers are * easier to interpret. * You may put the arrays in common or not, at your discretion. * There is a commented-out COMMON statement below. * ------------------------------------------------------------ * 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 * Please let me know if this happens. * 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 *========================================================================= * PROGRAM stream * IMPLICIT NONE C .. Parameters .. INTEGER*8 n,offset,ndim,ntimes,maxtimes PARAMETER (maxtimes=10000) C .. C .. Local Scalars .. DOUBLE PRECISION dummy,scalar,t INTEGER*8 j,k,nbpw,quantum C .. C .. Local Arrays .. DOUBLE PRECISION maxtime(4),mintime(4),rmstime(4), $ sum1,sum2,sum3,times(4,maxtimes),avgbw INTEGER*8 bytes(4) CHARACTER label(4)*11 C .. C .. External Functions .. DOUBLE PRECISION second INTEGER checktick,realsize EXTERNAL second,checktick,realsize C .. C .. Intrinsic Functions .. C INTRINSIC dble,max,min,nint,sqrt C .. C .. Arrays in Common .. REAL*8, ALLOCATABLE:: a(:),b(:),c(:) C .. C .. Common blocks .. * COMMON a,b,c C .. C .. Data statements .. DATA rmstime/4*0.0D0/,mintime/4*1.0D+36/,maxtime/4*0.0D0/ DATA label/'Copy: ','Scale: ','Add: ', $ 'Triad: '/ DATA bytes/2,2,3,3/,dummy/0.0d0/ C .. * --- SETUP --- determine precision and check timing --- PRINT *, "n, offset, ntimes" READ *, n, offset, ntimes ndim=n+offset IF (ntimes .GT. maxtimes) ntimes=maxtimes ALLOCATE (a(ndim), b(ndim), c(ndim)) CALL defend_wrap nbpw = realsize() WRITE (*,FMT=9010) 'Array size = ',n WRITE (*,FMT=9010) 'Offset = ',offset WRITE (*,FMT=9020) 'The total memory requirement is ', $ 3D0*nbpw*DBLE(n)/ (1024d0*1024),' MB' WRITE (*,FMT=9030) 'You are running each test ',ntimes,' times' WRITE (*,FMT=9030) 'The *best* time for each test is used' c$omp parallel do DO 10 j = 1,n a(j) = 1.0d0 b(j) = 2.0D0 c(j) = 0.0D0 10 CONTINUE t = second(dummy) c$omp parallel do DO 20 j = 1,n a(j) = 2.0d0*a(j) 20 CONTINUE t = second(dummy) - t PRINT *,'----------------------------------------------------' quantum = checktick() WRITE (*,FMT=9000) $ 'Your clock granularity/precision appears to be ',quantum, $ ' microseconds' PRINT *,'The tests below will each take a time on the order ' PRINT *,'of ',nint(t*1d6),' microseconds' PRINT *,' (= ',nint((t*1d6)/quantum),' clock ticks)' PRINT *,'Increase the size of the arrays if this shows that' PRINT *,'you are not getting at least 20 clock ticks per test.' PRINT *,'----------------------------------------------------' PRINT *,'WARNING -- The above is only a rough guideline.' PRINT *,'For best results, please be sure you know the' PRINT *,'precision of your system timer.' PRINT *,'----------------------------------------------------' * --- MAIN LOOP --- repeat test cases NTIMES times --- scalar = 1.5d0*a(1) DO 70 k = 1,ntimes t = second(dummy) c$omp parallel do DO 30 j = 1,n c(j) = a(j) 30 CONTINUE t = second(dummy) - t times(1,k) = t t = second(dummy) c$omp parallel do DO 40 j = 1,n b(j) = scalar*c(j) 40 CONTINUE t = second(dummy) - t times(2,k) = t t = second(dummy) c$omp parallel do DO 50 j = 1,n c(j) = a(j) + b(j) 50 CONTINUE t = second(dummy) - t times(3,k) = t t = second(dummy) c$omp parallel do DO 60 j = 1,n a(j) = b(j) + scalar*c(j) 60 CONTINUE t = second(dummy) - t times(4,k) = t 70 CONTINUE * --- SUMMARY --- DO 90 k = 1,ntimes DO 80 j = 1,4 rmstime(j) = rmstime(j) + times(j,k)**2 mintime(j) = min(mintime(j),times(j,k)) maxtime(j) = max(maxtime(j),times(j,k)) 80 CONTINUE 90 CONTINUE WRITE (*,FMT=9040) avgbw = 0 DO 100 j = 1,4 rmstime(j) = sqrt(rmstime(j)/dble(ntimes)) WRITE (*,FMT=9050) label(j),n*bytes(j)*nbpw/mintime(j)/1.0D6, $ rmstime(j),mintime(j),maxtime(j) avgbw = avgbw+n*bytes(j)*nbpw/mintime(j)/1.0D6 100 CONTINUE WRITE (*,FMT=9050) "AvgBW: ", avgbw/4D0 sum1 = 0.0d0 sum2 = 0.0d0 sum3 = 0.0d0 c$omp parallel do DO 110 j = 1,n sum1 = sum1 + a(j) sum2 = sum2 + b(j) sum3 = sum3 + c(j) 110 CONTINUE PRINT *,'Sum of a is = ',sum1 PRINT *,'Sum of b is = ',sum2 PRINT *,'Sum of c is = ',sum3 9000 FORMAT (1x,a,i6,a) 9010 FORMAT (1x,a,i10) 9020 FORMAT (1x,a,f10.2,a) 9030 FORMAT (1x,a,i3,a,a) 9040 FORMAT ('Function',5x,'Rate (MB/s) RMS time Min time Max time' $ ) 9050 FORMAT (a,4 (f10.4,2x)) END *------------------------------------- * INTEGER FUNCTION dblesize() * * A semi-portable way to determine the precision of DOUBLE PRECISION * in Fortran. * Here used to guess how many bytes of storage a DOUBLE PRECISION * number occupies. * INTEGER FUNCTION realsize() * IMPLICIT NONE C .. Local Scalars .. DOUBLE PRECISION result,test INTEGER j,ndigits C .. C .. Local Arrays .. DOUBLE PRECISION ref(30) C .. C .. External Subroutines .. EXTERNAL confuse C .. C .. Intrinsic Functions .. INTRINSIC abs,acos,log10,sqrt C .. C Test #1 - compare single(1.0d0+delta) to 1.0d0 10 DO 20 j = 1,30 ref(j) = 1.0d0 + 10.0d0** (-j) 20 CONTINUE DO 30 j = 1,30 test = ref(j) ndigits = j CALL confuse(test,result) IF (test.EQ.1.0D0) THEN GO TO 40 END IF 30 CONTINUE GO TO 50 40 WRITE (*,FMT='(a)') $ '----------------------------------------------' WRITE (*,FMT='(1x,a,i2,a)') 'Double precision appears to have ', $ ndigits,' digits of accuracy' IF (ndigits.LE.8) THEN realsize = 4 ELSE realsize = 8 END IF WRITE (*,FMT='(1x,a,i1,a)') 'Assuming ',realsize, $ ' bytes per DOUBLE PRECISION word' WRITE (*,FMT='(a)') $ '----------------------------------------------' RETURN 50 PRINT *,'Hmmmm. I am unable to determine the size.' PRINT *,'Please enter the number of Bytes per DOUBLE PRECISION', $ ' number : ' READ (*,FMT=*) realsize IF (realsize.NE.4 .AND. realsize.NE.8) THEN PRINT *,'Your answer ',realsize,' does not make sense.' PRINT *,'Try again.' PRINT *,'Please enter the number of Bytes per ', $ 'DOUBLE PRECISION number : ' READ (*,FMT=*) realsize END IF PRINT *,'You have manually entered a size of ',realsize, $ ' bytes per DOUBLE PRECISION number' WRITE (*,FMT='(a)') $ '----------------------------------------------' END SUBROUTINE confuse(q,r) * IMPLICIT NONE C .. Scalar Arguments .. DOUBLE PRECISION q,r C .. C .. Intrinsic Functions .. INTRINSIC cos C .. r = cos(q) RETURN END * A semi-portable way to determine the clock granularity * Adapted from a code by John Henning of Digital Equipment Corporation * INTEGER FUNCTION checktick() * IMPLICIT NONE C .. Parameters .. INTEGER n PARAMETER (n=20) C .. C .. Local Scalars .. DOUBLE PRECISION dummy,t1,t2 INTEGER i,j,jmin C .. C .. Local Arrays .. DOUBLE PRECISION timesfound(n) C .. C .. External Functions .. DOUBLE PRECISION second EXTERNAL second C .. C .. Intrinsic Functions .. INTRINSIC max,min,nint C .. i = 0 dummy = 0.0d0 t1 = second(dummy) 10 t2 = second(dummy) IF (t2.EQ.t1) GO TO 10 t1 = t2 i = i + 1 timesfound(i) = t1 IF (i.LT.n) GO TO 10 jmin = 1000000 DO 20 i = 2,n j = nint((timesfound(i)-timesfound(i-1))*1d6) jmin = min(jmin,max(j,0)) 20 CONTINUE IF (jmin.GT.0) THEN checktick = jmin ELSE PRINT *,'Your clock granularity appears to be less ', $ 'than one microsecond' checktick = 1 END IF RETURN * PRINT 14, timesfound(1)*1d6 * DO 20 i=2,n * PRINT 14, timesfound(i)*1d6, * & nint((timesfound(i)-timesfound(i-1))*1d6) * 14 FORMAT (1X, F18.4, 1X, i8) * 20 CONTINUE END SUBROUTINE defend_wrap INTEGER count, count_rate, count_max CALL SYSTEM_CLOCK ( count, count_rate, count_max ) IF (DBLE(count) .GT. .999*DBLE(count_max)) THEN PRINT *,"Oops, this code won't handle a wrapping system_clock" PRINT *,"and soon we will wrap." PRINT 4, "count:", count, "count_max:", count_max 4 FORMAT (1X, A10, I16) PRINT *,"Try again later, or fix the code to handle wraps." PRINT *,"(The counter wraps approx once every 60 hours)" STOP END IF END DOUBLE PRECISION FUNCTION second INTEGER count, count_rate, count_max CALL SYSTEM_CLOCK ( count, count_rate, count_max ) second = DBLE(count)/DBLE(count_rate) END % cat buildit_noomp.csh cat buildit_noomp.csh #!/bin/csh set verbose unlimit f90 -v -source_listing -machine_code \ -o mcc_noomp_`date +%Y%m%d` \ -fast -O5 -unroll 32 -arch ev6 \ mcc_omp.f grep COMPILER: mcc_omp.lis % % ./!$ % ./buildit_noomp.csh unlimit f90 -v -source_listing -machine_code -o mcc_noomp_`date +%Y%m%d` -fast -O5 -unroll 32 -arch ev6 mcc_omp.f /usr/lib/cmplrs/fort90/decfort90 -machine_code -fast -O5 -unroll 32 -arch ev6 -I/usr/lib/cmplrs/hpfrtl -source_listing -o /tmp/forAAAabcuna.o mcc_omp.f /usr/bin/cc -v -o mcc_noomp_20000627 -arch ev6 /usr/lib/cmplrs/fort90/for_main.o -source_listing /tmp/forAAAabcuna.o -O4 -qlshpf -lUfor -lfor -lFutil -lm -lots -lm_c32 /usr/lib/cmplrs/cc/ld -o mcc_noomp_20000627 -g0 -O4 -call_shared /usr/lib/cmplrs/cc/crt0.o /usr/lib/cmplrs/fort90/for_main.o /tmp/forAAAabcuna.o -qlshpf -lUfor -lfor -lFutil -lm -lots -lm_c32 -lc /usr/lib/cmplrs/cc/ld: 0.01u 0.01s 0:00 40% 0+19k 0+12io 0pf+0w 19stk+2008mem grep COMPILER: mcc_omp.lis COMPILER: Compaq Fortran V5.3-915-449BB % % ls buildit_noomp.csh mcc_omp.lis mcc_noomp_20000627 stream_d.f_as_at_ftp_site_22may97 mcc_omp.f typescript % ./mcc_noomp_20000627 n, offset, ntimes 1008075,0,10 ---------------------------------------------- Double precision appears to have 16 digits of accuracy Assuming 8 bytes per DOUBLE PRECISION word ---------------------------------------------- Array size = 1008075 Offset = 0 The total memory requirement is 23.07 MB You are running each test 10 times The *best* time for each test is used ---------------------------------------------------- Your clock granularity/precision appears to be 100 microseconds The tests below will each take a time on the order of 18100 microseconds (= 181 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) RMS time Min time Max time Copy: 806.4600 0.0202 0.0200 0.0208 Scale: 798.4752 0.0203 0.0202 0.0206 Add: 763.2114 0.0318 0.0317 0.0320 Triad: 777.9357 0.0313 0.0311 0.0317 AvgBW: 786.5206 Sum of a is = 1.162613685089136E+018 Sum of b is = 2.325227370154242E+017 Sum of c is = 3.100303160218152E+017 % exit % script done on Tue Jun 27 05:01:42 2000 --------------227D98182AEF9E71C0F1DD68-- From - Mon Jul 17 04:21:10 2000 Received: from aux153.plano.net ([209.217.36.11]) by Mail.austin.rr.com with Microsoft SMTPSVC(5.5.1877.357.35); Sat, 8 Jul 2000 22:29:05 -0500 Received: (qmail 23536 invoked by uid 10000); 9 Jul 2000 03:29:36 -0000 Delivered-To: mccalpin.com-john@mccalpin.com Received: (qmail 23529 invoked from network); 9 Jul 2000 03:29:36 -0000 Received: from ares.cs.virginia.edu (128.143.136.41) by aux153.plano.net with SMTP; 9 Jul 2000 03:29:36 -0000 Received: from mail-gw.NetergyNet.COM (mail-gw.8x8.com [192.84.19.131]) by ares.cs.Virginia.EDU (8.9.2/8.9.2/UVACS-2000040300) with ESMTP id XAA26042 for ; Sat, 8 Jul 2000 23:29:34 -0400 (EDT) Received: from mail.8x8.COM (mail.8x8.com [192.84.19.130]) by mail-gw.NetergyNet.COM (8.9.3+Sun/8.9.3) with ESMTP id UAA04217 for ; Sat, 8 Jul 2000 20:29:33 -0700 (PDT) Received: from 8x8.com (weiwei.8x8.com [192.84.18.39]) by mail.8x8.COM (8.9.1b+Sun/8.9.1) with ESMTP id UAA09424 for ; Sat, 8 Jul 2000 20:29:31 -0700 (PDT) Message-ID: <3967F264.367EFDF9@8x8.com> Date: Sat, 08 Jul 2000 20:32:52 -0700 From: Wei Lin Organization: 8x8, Inc. X-Mailer: Mozilla 4.7 [en] (WinNT; I) X-Accept-Language: en,pdf MIME-Version: 1.0 To: mccalpin@cs.virginia.edu Subject: Stream results Super7 platform: K6-2, MII, mP6, PentiumMMX Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Return-Path: wlin@NetergyNet.COM X-Mozilla-Status: 8001 X-Mozilla-Status2: 00000000 X-UIDL: de300000.eml Status: RO Note1: mP6 and Cyrix use performance rating; actual frequency noted Note2: Pentium-MMX was never officially released for 100 MHz platform AMD K6-2/550 (5.5x100 MHz) Tyan S1598 motherboard with VIA MVP3 chipset 256 MB PC100 SDRAM, CAS-2 Windows NT4/SP6 Compaq Visual Fortran 6.1A -unroll:8 ---------------------------------------------- Double precision appears to have 16 digits of accuracy Assuming 8 bytes per DOUBLE PRECISION word ---------------------------------------------- Array size = 9012345 Offset = 0 The total memory requirement is 206 MB You are running each test 10 times The *best* time for each test is used ---------------------------------------------------- Your clock granularity/precision appears to be 10000 microseconds The tests below will each take a time on the order of 750000 microseconds (= 75 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) RMS time Min time Max time Copy: 136.0354 1.0660 1.0600 1.0800 Scale: 136.0354 1.0670 1.0600 1.0800 Add: 149.1698 1.4560 1.4500 1.4700 Triad: 160.2195 1.3600 1.3500 1.3700 Sum of a is = 1.039394452812601E+019 Sum of b is = 2.078788905585281E+018 Sum of c is = 2.771718540568361E+018 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Cyrix MII-433 (3x100 MHz) Tyan S1598 motherboard with VIA MVP3 chipset 256 MB PC100 SDRAM, CAS-2 Windows NT4/SP6 Compaq Visual Fortran 6.1A -unroll:8 ---------------------------------------------- Double precision appears to have 16 digits of accuracy Assuming 8 bytes per DOUBLE PRECISION word ---------------------------------------------- Array size = 9012345 Offset = 0 The total memory requirement is 206 MB You are running each test 10 times The *best* time for each test is used ---------------------------------------------------- Your clock granularity/precision appears to be 10000 microseconds The tests below will each take a time on the order of 730000 microseconds (= 73 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) RMS time Min time Max time Copy: 153.4016 0.9430 0.9400 0.9600 Scale: 153.4016 0.9410 0.9400 0.9500 Add: 152.3213 1.4280 1.4200 1.4400 Triad: 152.3213 1.4240 1.4200 1.4300 Sum of a is = 1.039394452812601E+019 Sum of b is = 2.078788905585281E+018 Sum of c is = 2.771718540568361E+018 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Rise mP6-266 (2x100 MHz) Tyan S1598 motherboard with VIA MVP3 chipset 256 MB PC100 SDRAM, CAS-2 Windows NT4/SP6 Compaq Visual Fortran 6.1A -unroll:8 ---------------------------------------------- Double precision appears to have 16 digits of accuracy Assuming 8 bytes per DOUBLE PRECISION word ---------------------------------------------- Array size = 9012345 Offset = 0 The total memory requirement is 206 MB You are running each test 10 times The *best* time for each test is used ---------------------------------------------------- Your clock granularity/precision appears to be 10000 microseconds The tests below will each take a time on the order of 760000 microseconds (= 76 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) RMS time Min time Max time Copy: 142.7698 1.0120 1.0100 1.0200 Scale: 142.7698 1.0130 1.0100 1.0300 Add: 137.7683 1.5790 1.5700 1.5900 Triad: 134.3455 1.6170 1.6100 1.6400 Sum of a is = 1.039394452812601E+019 Sum of b is = 2.078788905585281E+018 Sum of c is = 2.771718540568361E+018 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Intel Pentium-MMX (2.5x100 MHz) Tyan S1598 motherboard with VIA MVP3 chipset 256 MB PC100 SDRAM, CAS-2 Windows NT4/SP6 Compaq Visual Fortran 6.1A -unroll:8 ---------------------------------------------- Double precision appears to have 16 digits of accuracy Assuming 8 bytes per DOUBLE PRECISION word ---------------------------------------------- Array size = 9012345 Offset = 0 The total memory requirement is 206 MB You are running each test 10 times The *best* time for each test is used ---------------------------------------------------- Your clock granularity/precision appears to be 10000 microseconds The tests below will each take a time on the order of 780000 microseconds (= 78 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) RMS time Min time Max time Copy: 153.4016 0.9460 0.9400 0.9600 Scale: 150.2058 0.9680 0.9600 0.9800 Add: 147.1403 1.4750 1.4700 1.4900 Triad: 143.2426 1.5200 1.5100 1.5300 Sum of a is = 1.039394452812601E+019 Sum of b is = 2.078788905585281E+018 Sum of c is = 2.771718540568361E+018 From - Mon Jul 17 04:40:54 2000 Received: from aux153.plano.net ([209.217.36.11]) by Mail.austin.rr.com with Microsoft SMTPSVC(5.5.1877.357.35); Sun, 9 Jul 2000 22:40:33 -0500 Received: (qmail 15118 invoked by uid 10000); 10 Jul 2000 03:41:06 -0000 Delivered-To: mccalpin.com-john@mccalpin.com Received: (qmail 15091 invoked from network); 10 Jul 2000 03:41:05 -0000 Received: from ares.cs.virginia.edu (128.143.136.41) by aux153.plano.net with SMTP; 10 Jul 2000 03:41:05 -0000 Received: from mail-gw.NetergyNet.COM (mail-gw.8x8.com [192.84.19.131]) by ares.cs.Virginia.EDU (8.9.2/8.9.2/UVACS-2000040300) with ESMTP id XAA11609 for ; Sun, 9 Jul 2000 23:41:03 -0400 (EDT) Received: from mail.8x8.COM (mail.8x8.com [192.84.19.130]) by mail-gw.NetergyNet.COM (8.9.3+Sun/8.9.3) with ESMTP id UAA06698 for ; Sun, 9 Jul 2000 20:41:02 -0700 (PDT) Received: from 8x8.com (weiwei.8x8.com [192.84.18.39]) by mail.8x8.COM (8.9.1b+Sun/8.9.1) with ESMTP id UAA05199 for ; Sun, 9 Jul 2000 20:41:00 -0700 (PDT) Message-ID: <39694696.1061EE34@8x8.com> Date: Sun, 09 Jul 2000 20:44:22 -0700 From: Wei Lin Organization: 8x8, Inc. X-Mailer: Mozilla 4.7 [en] (WinNT; I) X-Accept-Language: en,pdf MIME-Version: 1.0 To: mccalpin@cs.virginia.edu Subject: Stream results 386, 5x86 Content-Type: multipart/mixed; boundary="------------B48A5DE43C7FC5C8360D82D3" Return-Path: wlin@NetergyNet.COM X-Mozilla-Status: 8001 X-Mozilla-Status2: 00000000 X-UIDL: 3f300000.eml Status: RO This is a multi-part message in MIME format. --------------B48A5DE43C7FC5C8360D82D3 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Some results that may be of historical interest. A 1992 386 machine and a 1995 5x86 (high-end 486 compatible) machine. A special clock driver was used to get 10 millisecond resolution under DOS (normally it has 55 ms resolution). Driver included for reference. Evergreen 586 = AMD 5x86, 16KB L1 cache, 120 MHz (3x40) ALI Vi15G motherboard with SiS 85C471 chipset, 256KB L2 cache 64 MB Fast Page Mode DRAM, 60ns DOS 6.22, QEMM 8.01, Causeway DOS Extender Watcom Fortran 11.0, wfl386 -Ox -4 -fp3 -l=Causeway ---------------------------------------------- Double precision appears to have 16 digits of accuracy Assuming 8 bytes per DOUBLE PRECISION word ---------------------------------------------- Array size = 2345678 Offset = 0 The total memory requirement is 53 MB You are running each test 10 times The *best* time for each test is used ---------------------------------------------------- Your clock granularity/precision appears to be 10000 microseconds The tests below will each take a time on the order of 1040000 microseconds (= 104 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) RMS time Min time Max time Copy: 50.7174 0.7450 0.7400 0.7500 Scale: 45.2179 0.8443 0.8300 0.8900 Add: 47.7087 1.1890 1.1800 1.1900 Triad: 44.3278 1.2771 1.2700 1.3100 Sum of a is = 2.7052722699857500D+018 Sum of b is = 5.4105445396884370D+017 Sum of c is = 7.2140593867314100D+017 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< AMD 386, 40 MHz + IIT 3C87 math coprocessor, 40 MHz Noname motherboard, Forex chipset FRX36C100/FRX36C200, 64KB cache 8 MB DRAM, 70ns DOS 5.0, QEMM 7.04, Causeway DOS Extender Watcom Fortran 11.0, wfl386 -Ox -3 -fp3 -l=Causeway ---------------------------------------------- Double precision appears to have 16 digits of accuracy Assuming 8 bytes per DOUBLE PRECISION word ---------------------------------------------- Array size = 234567 Offset = 0 The total memory requirement is 5 MB You are running each test 10 times The *best* time for each test is used ---------------------------------------------------- Your clock granularity/precision appears to be 10000 microseconds The tests below will each take a time on the order of 700000 microseconds (= 70 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) RMS time Min time Max time Copy: 7.3590 0.5140 0.5100 0.5200 Scale: 5.6865 0.6610 0.6600 0.6700 Add: 7.7118 0.7370 0.7300 0.7400 Triad: 6.3973 0.8870 0.8800 0.8900 Sum of a is = 2.7052630435503090D+017 Sum of b is = 5.4105260870780820D+016 Sum of c is = 7.2140347828127140D+016 --------------B48A5DE43C7FC5C8360D82D3 Content-Type: application/x-unknown-content-type-sysfile; name="clkptch3.sys" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="clkptch3.sys" /////wCAFgAhAC5DTEtQVENIAAAAAC6JHhIALowGFADLHlNQLsUeEgCAfwIAdQPpKQG4A4GJ RwNYWx/LAAAAAAAAAABQHjPAjtiDPm4EGHIVdwiBPmwEsAByC6NuBKNsBMYGcAT/H1gu/y48 AID8LHRXLv8uQACcLv8eQACcCsB1RVAeM8CO2ID9DHIKgwZsBAGDFm4EAFFShtGxBIrF1ArS 5ArEiuiKwtQK0uQKxIrQisbUCtLkCsSK8IbRMtK0A80aWlkfWJ3PUFNWVwb7M9KOwibEHmwE jMGwBOZDjsImxD5sBORA5EA7+3QICsB5BIvfjMGL8Yv79tCK44rXivGL2IvK0eDR0gPYE8oD 3xPOi8Yz0r4XAPf2l/f2K9gbz4vBM9K+jAD39pP39pMz0r5kAPf2k/f2isqTM9K+PAD39pP3 9orqkzPS9/aT9/aK8IrSh9EHX15bWM8GUlFWDh+wNOZDM8DmQOZAtALNGorGiubA7AQkD9UK i9iKwYrhwOwEJA/VCpGKxMDsBCQP1Qq+PAD35gPB9+YDw4PSAIvKvqeR9+aL2IvBi8r35gPB g9IAit+K+IrEMuTR6NHb0ejR29Ho0dszyY7ZiR5sBKNuBA4fuCE1zSGJHkAAjAZCALgINc0h um0AuCElzSG6CwK0Cc0hxR4SAMdHDlsBjE8QuAABXllaB+kq/g0KVWhyZW4tUGF0Y2ggR2Vy hHRldHJlaWJlciBWMS4zIGaBciBTY2huZWlkZXIgUEMgdW5kIFBDLURPUyAzLjMgICAoYykn ODksJzkwIE4uSi4NCgokDQpLZWluIFNjaG5laWRlciBQQyAxNTEyIG9kZXIga2VpbiBQQy1E T1MgMy4zDQoKJA== --------------B48A5DE43C7FC5C8360D82D3-- From - Fri Aug 25 08:43:29 2000 Received: from aux153.plano.net ([209.217.36.11]) by Mail.austin.rr.com with Microsoft SMTPSVC(5.5.1877.537.53); Thu, 24 Aug 2000 13:49:55 -0500 Received: (qmail 18386 invoked by uid 10000); 24 Aug 2000 18:51:48 -0000 Delivered-To: mccalpin.com-john@mccalpin.com Received: (qmail 18345 invoked from network); 24 Aug 2000 18:51:47 -0000 Received: from ares.cs.virginia.edu (128.143.137.19) by aux153.plano.net with SMTP; 24 Aug 2000 18:51:47 -0000 Received: from sgi.com (sgi.SGI.COM [192.48.153.1]) by ares.cs.Virginia.EDU (8.9.2/8.9.2/UVACS-2000040300) with ESMTP id OAA29958 for ; Thu, 24 Aug 2000 14:51:40 -0400 (EDT) Received: from relay1.corp.sgi.com (corp.sgi.com [198.29.75.13]) by sgi.com (980327.SGI.8.8.8-aspam/980304.SGI-aspam: SGI does not authorize the use of its proprietary systems or networks for unsolicited or bulk email from the Internet.) via ESMTP id LAA08167 for <@external-mail-relay.sgi.com:mccalpin@cs.virginia.edu>; Thu, 24 Aug 2000 11:51:37 -0700 (PDT) mail_from (wesley@sgi.com) Received: from sgi.com (sshgate.corp.sgi.com [169.238.216.146]) by relay1.corp.sgi.com (980427.SGI.8.8.8/970903.SGI.AUTOCF) via ESMTP id LAA35949; Thu, 24 Aug 2000 11:51:35 -0700 (PDT) Sender: wesley@sgi.com Message-ID: <39A56CF0.DEDB7B7E@sgi.com> Date: Thu, 24 Aug 2000 11:44:00 -0700 From: Wesley Jones X-Mailer: Mozilla 4.61C-SGI [en] (X11; I; IRIX 6.5 IP22) X-Accept-Language: en MIME-Version: 1.0 To: mccalpin@cs.virginia.edu, wesley@sgi.com Subject: SGI Origin 3800, 400 MHz MIPS R12K: 128 CPU STREAM Result Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Return-Path: wesley@sgi.com X-Mozilla-Status: 8001 X-Mozilla-Status2: 00000000 X-UIDL: 1d400000.eml Status: R SGI Origin 3800 400 MHz MIPS R12K 8 MB cache 96 GB Main Memory IRIX 6.5.9 Results: ---------------------------------------------- Double precision appears to have 16 digits of accuracy Assuming 8 bytes per DOUBLE PRECISION word ---------------------------------------------- Array size = 640000000 Offset = 0 The total memory requirement is 14648 MB You are running each test 4 times The *best* time for each test is used ---------------------------------------------------- Your clock granularity/precision appears to be 1 microseconds The tests below will each take a time on the order of 168363 microseconds (= 168363 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) Min time Max time Mean time RMS time Median Copy: 43264.76 0.2367 0.2380 0.2375 0.2375 0.2378 Scale: 42975.19 0.2383 0.2416 0.2403 0.2403 0.2407 Add: 50937.02 0.3015 0.3029 0.3023 0.3023 0.3025 Triad: 50562.21 0.3038 0.3047 0.3043 0.3043 0.3042 ----------------------------------------------------------------------------- All times are 0.2375 0.2383 0.3029 0.3041 0.2380 0.2406 0.3020 0.3047 0.2376 0.2409 0.3029 0.3038 0.2367 0.2416 0.3015 0.3047 ----------------------------------------------------------------------------- Sum of a is = 197.7539062609455 Sum of b is = 39.55078124652111 Sum of c is = 52.73437499310039 Note: Some output has been modified to handle supercomputer class problem. E.G. output of array size changed from i4 to i6. Code available if required. WEs -- Wesley B. Jones, PhD wesley@sgi.com SGI, Boulder, CO Phone: (303)-448-1165 Performance Engineering FAX: From - Fri Sep 15 08:43:04 2000 Received: from aux153.plano.net ([209.217.36.11]) by Mail.austin.rr.com with Microsoft SMTPSVC(5.5.1877.537.53); Wed, 30 Aug 2000 02:01:12 -0500 Received: (qmail 6754 invoked by uid 10000); 30 Aug 2000 07:02:58 -0000 Delivered-To: mccalpin.com-john@mccalpin.com Received: (qmail 6737 invoked from network); 30 Aug 2000 07:02:57 -0000 Received: from ares.cs.virginia.edu (128.143.137.19) by aux153.plano.net with SMTP; 30 Aug 2000 07:02:57 -0000 Received: from mailrelay2.lrz-muenchen.de (mailrelay2.lrz-muenchen.de [129.187.254.102]) by ares.cs.Virginia.EDU (8.9.2/8.9.2/UVACS-2000040300) with ESMTP id DAA04510 for ; Wed, 30 Aug 2000 03:02:45 -0400 (EDT) Received: from [129.187.12.106] by mailout.lrz-muenchen.de with ESMTP; Wed, 30 Aug 2000 09:02:42 +0200 Sender: a2825af@lrz-muenchen.de Message-Id: <39ACB191.90C4914@lrz-muenchen.de> Date: Wed, 30 Aug 2000 09:02:42 +0200 From: Herbert Huber Organization: Leibniz-Rechenzentrum der Bayerischen Akademie der Wissenschaften X-Mailer: Mozilla 4.72 [en] (X11; I; Linux 2.2.14 i686) X-Accept-Language: en MIME-Version: 1.0 To: mccalpin@cs.virginia.edu CC: Reinhold.Bader@lrz-muenchen.de, linux-smp@vger.rutgers.edu Subject: Stream results Intel_Pentium_800EB on ServerSetIII HE platform Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Return-Path: Herbert.Huber@lrz-muenchen.de X-Mozilla-Status: 8001 X-Mozilla-Status2: 00000000 X-UIDL: 3f400000.eml Status: R Intel Pentium 800EB Tyan Tunder 2500 S1867 board with 133 MHz front side bus 1 GB registered PC133 SDRAM SuSE 6.4 with 2.2.16 kernel PGI FORTRAN-77 compiler (pgf77 3.1-3): -fast -tp p6 -Mvect -Minline -Munroll=n:8 ---------------------------------------------- Double precision appears to have 16 digits of accuracy Assuming 8 bytes per DOUBLE PRECISION word ---------------------------------------------- Array size = 9012345 Offset = 0 The total memory requirement is 206 MB You are running each test 50 times The *best* time for each test is used ---------------------------------------------------- Your clock granularity/precision appears to be 10000 microseconds The tests below will each take a time on the order of 340000 microseconds (= 34 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) RMS time Min time Max time Copy: 424.1104 0.3444 0.3400 0.3500 Scale: 424.1104 0.3490 0.3400 0.3500 Add: 569.2007 0.3880 0.3800 0.3900 Triad: 554.6059 0.3968 0.3900 0.4000 Sum of a is = 1.1492929878599060E+066 Sum of b is = 2.2985859757129975E+065 Sum of c is = 3.0647813009459470E+065 Regards H. Huber -- Leibniz-Rechenzentrum der Bayerischen Akademie der Wissenschaften High Performance Computing Group Dr. Herbert Huber (Phone: +49 89 289 28833, Fax +49 89 2809460, Email:herbert.huber@lrz-muenchen.de) Barer Strasse 21 D-80333 Muenchen Germany From - Wed Dec 6 07:52:54 2000 Received: from sm4.texas.rr.com ([24.93.35.211]) by Mail.austin.rr.com with Microsoft SMTPSVC(5.5.1877.537.53); Mon, 4 Dec 2000 12:38:26 -0600 Received: from aux153.plano.net (aux-209-217-36-11.oklahoma.net [209.217.36.11]) by sm4.texas.rr.com (8.10.1/8.10.1) with SMTP id eB4Igra26994 for ; Mon, 4 Dec 2000 12:42:57 -0600 Received: (qmail 24960 invoked by uid 10000); 4 Dec 2000 18:37:54 -0000 Delivered-To: mccalpin.com-john@mccalpin.com Received: (qmail 24925 invoked from network); 4 Dec 2000 18:37:54 -0000 Received: from zcamail05.zca.compaq.com (161.114.32.105) by aux153.plano.net with SMTP; 4 Dec 2000 18:37:54 -0000 Received: by zcamail05.zca.compaq.com (Postfix, from userid 12345) id 68495489; Mon, 4 Dec 2000 10:38:29 -0800 (PST) Received: from exctay-gh03.tay.cpqcorp.net (exctay-gh03.tay.cpqcorp.net [16.103.129.53]) by zcamail05.zca.compaq.com (Postfix) with ESMTP id 1CB5363F for ; Mon, 4 Dec 2000 10:38:29 -0800 (PST) Received: by exctay-gh03.tay.cpqcorp.net with Internet Mail Service (5.5.2652.78) id ; Mon, 4 Dec 2000 13:37:26 -0500 Message-ID: <21ECC6E090DCD21180D20000F809A18B07ED83FB@exctay-02.tay.dec.com> From: "Henning, John (Nashua)" To: "'mccalpin@austin.ibm.com'" Cc: "'john@mccalpin.com'" Subject: GS80 STREAM results Date: Mon, 4 Dec 2000 13:37:25 -0500 MIME-Version: 1.0 X-Mailer: Internet Mail Service (5.5.2652.78) Content-Type: text/plain; charset="iso-8859-1" Return-Path: john.henning@compaq.com X-Mozilla-Status: 8003 X-Mozilla-Status2: 00000000 X-UIDL: e2700000.eml Status: R Hi John, Here is the Compaq_AlphaServer_GS80 with 8 CPUs. This is the same binary as was used for http://www.cs.virginia.edu/stream/stream_mail/2000/0013.html Please let me know when you think this might be posted? Thanks! -john echo "120000549,0,10" | ./mcc_omp_nodebug_20000510 n, offset, ntimes ---------------------------------------------- Double precision appears to have 16 digits of accuracy Assuming 8 bytes per DOUBLE PRECISION word ---------------------------------------------- Array size = 120000549 Offset = 0 The total memory requirement is 2746.59 MB You are running each test 10 times The *best* time for each test is used ---------------------------------------------------- Your clock granularity/precision appears to be 1000 microseconds The tests below will each take a time on the order of 246000 microseconds (= 246 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) RMS time Min time Max time Copy: 4897.9816 0.3938 0.3920 0.3960 Scale: 4800.0220 0.4009 0.4000 0.4010 Add: 5255.4985 0.5482 0.5480 0.5490 Triad: 5133.7133 0.5619 0.5610 0.5680 Sum of a is = 1.383967266434037E+020 Sum of b is = 2.767934540034517E+019 Sum of c is = 3.690579379856141E+019 From - Wed Dec 6 08:16:05 2000 Received: from sm4.texas.rr.com ([24.93.35.211]) by mail.austin.rr.com with Microsoft SMTPSVC(5.5.1877.537.53); Sun, 19 Nov 2000 23:47:08 -0600 Received: from aux153.plano.net (aux-209-217-36-11.oklahoma.net [209.217.36.11]) by sm4.texas.rr.com (8.10.1/8.10.1) with SMTP id eAK5ixj23285 for ; Sun, 19 Nov 2000 23:45:00 -0600 Received: (qmail 28399 invoked by uid 10000); 20 Nov 2000 05:44:55 -0000 Delivered-To: mccalpin.com-john@mccalpin.com Received: (qmail 28395 invoked from network); 20 Nov 2000 05:44:54 -0000 Received: from ares.cs.virginia.edu (128.143.137.19) by aux153.plano.net with SMTP; 20 Nov 2000 05:44:54 -0000 Received: from havana.ks.uiuc.edu (havana.ks.uiuc.edu [130.126.120.73]) by ares.cs.Virginia.EDU (8.9.2/8.9.2/UVACS-2000040300) with ESMTP id AAA12007 for ; Mon, 20 Nov 2000 00:44:52 -0500 (EST) Received: from geneseo.ks.uiuc.edu (geneseo.ks.uiuc.edu [130.126.120.127]) by havana.ks.uiuc.edu (8.9.1/8.9.1) with ESMTP id XAA29525; Sun, 19 Nov 2000 23:44:51 -0600 (CST) Received: (from johns@localhost) by geneseo.ks.uiuc.edu (8.9.3+Sun/8.9.1) id XAA02920; Sun, 19 Nov 2000 23:44:51 -0600 (CST) Date: Sun, 19 Nov 2000 23:44:51 -0600 From: John Stone To: mccalpin@cs.virginia.edu Cc: John Stone Subject: STREAM results for Sunblade 1000/750.... Message-ID: <20001119234450.E2847@geneseo.ks.uiuc.edu> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Mailer: Mutt 1.0i Return-Path: johns@ks.uiuc.edu X-Mozilla-Status: 8001 X-Mozilla-Status2: 00000000 X-UIDL: 5c600000.eml Status: R Hi, I ran STREAM on a 1-cpu 750MHz Sunblade 1000 tonight, and thought you might be interested in their numbers. I compiled it using the Sun Forte 6 maintenance update 1 compilers, with the UltraSPARC-III architecture compiler flags, to allow for whatever tricks their compiler would do. I gave the results for both the C and Fortran version of STREAM, and the results are different, C being a lot slower, despite very agressive optimization flags. This didn't used to be quite so different with older compilers/machines from Sun, I seem to remember that the C/Fortran results were closer with older machines/compilers. Anyway, here are the numbers. John Stone johns@ks.uiuc.edu ** ** 32-bit Fortran results (-xarch=v8plusb) ** johns@sundemo[21] f77 second_cpu.f stream_d.f -fast -xarch=v8plusb -fsimple=2 second_cpu.f: second: stream_d.f: MAIN stream: realsize: confuse: checktick: checksums: Linking: johns@sundemo[22] a.out ---------------------------------------------- Double precision appears to have 16 digits of accuracy Assuming 8 bytes per DOUBLE PRECISION word ---------------------------------------------- Array size = 20000000 Offset = 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 ---------------------------------------------------- Your clock granularity/precision appears to be 7 microseconds ---------------------------------------------------- Function Rate (MB/s) Avg time Min time Max time Copy: 827.6625 0.3869 0.3866 0.3872 Scale: 768.9331 0.4163 0.4162 0.4164 Add: 827.3550 0.5832 0.5802 0.5840 Triad: 845.0919 0.5682 0.5680 0.5685 ---------------------------------------------------- Solution Validates! ---------------------------------------------------- ** ** 64-bit Fortran results (-xarch=v9b) ** johns@sundemo[17] f77 second_cpu.f stream_d.f -fast -xarch=v9b -fsimple=2 second_cpu.f: second: stream_d.f: MAIN stream: realsize: confuse: checktick: checksums: Linking: johns@sundemo[18] a.out ---------------------------------------------- Double precision appears to have 16 digits of accuracy Assuming 8 bytes per DOUBLE PRECISION word ---------------------------------------------- Array size = 20000000 Offset = 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 ---------------------------------------------------- Your clock granularity/precision appears to be 7 microseconds ---------------------------------------------------- Function Rate (MB/s) Avg time Min time Max time Copy: 809.2464 0.3957 0.3954 0.3959 Scale: 814.7661 0.3933 0.3928 0.3936 Add: 931.4449 0.5158 0.5153 0.5160 Triad: 890.7752 0.5392 0.5389 0.5395 ---------------------------------------------------- Solution Validates! ---------------------------------------------------- ** ** 32-bit C results (-xarch=v8plusb) ** johns@sundemo[33] cc -fast -xO5 -native -xarch=v8plusb -xrestrict -fsimple=2 stream_d.c second_cpu.c stream_d.c: second_cpu.c: johns@sundemo[34] a.out ------------------------------------------------------------- This system uses 8 bytes per DOUBLE PRECISION word. ------------------------------------------------------------- Array size = 8000000, Offset = 0 Total memory required = 183.1 MB. Each test is run 10 times, but only the *best* time for each is used. ------------------------------------------------------------- Your clock granularity/precision appears to be 9999 microseconds. Each test below will take on the order of 239999 microseconds. (= 24 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) RMS time Min time Max time Copy: 492.3091 0.2680 0.2600 0.2700 Scale: 474.0749 0.2700 0.2700 0.2700 Add: 426.6668 0.4550 0.4500 0.4600 Triad: 426.6678 0.4520 0.4500 0.4600 ** ** 64-bit C results (-xarch=v9b) ** johns@sundemo[35] cc -fast -xO5 -native -xarch=v9b -xrestrict -fsimple=2 stream_d.c second_cpu.c stream_d.c: second_cpu.c: johns@sundemo[36] a.out ------------------------------------------------------------- This system uses 8 bytes per DOUBLE PRECISION word. ------------------------------------------------------------- Array size = 8000000, Offset = 0 Total memory required = 183.1 MB. Each test is run 10 times, but only the *best* time for each is used. ------------------------------------------------------------- Your clock granularity/precision appears to be 9999 microseconds. Each test below will take on the order of 250000 microseconds. (= 25 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) RMS time Min time Max time Copy: 492.3091 0.2670 0.2600 0.2700 Scale: 474.0749 0.2720 0.2700 0.2800 Add: 426.6668 0.4570 0.4500 0.4600 Triad: 426.6668 0.4530 0.4500 0.4600 -- NIH Resource for Macromolecular Modeling and Bioinformatics Beckman Institute for Advanced Science and Technology University of Illinois, 405 N. Mathews Ave, Urbana, IL 61801 Email: johns@ks.uiuc.edu Phone: 217-244-3349 WWW: http://www.ks.uiuc.edu/~johns/ Fax: 217-244-6078 -- NIH Resource for Macromolecular Modeling and Bioinformatics Beckman Institute for Advanced Science and Technology University of Illinois, 405 N. Mathews Ave, Urbana, IL 61801 Email: johns@ks.uiuc.edu Phone: 217-244-3349 WWW: http://www.ks.uiuc.edu/~johns/ Fax: 217-244-6078 From - Sat Jan 27 17:22:44 2001 Received: from sm3.texas.rr.com ([24.93.35.210]) by Mail.austin.rr.com with Microsoft SMTPSVC(5.5.1877.537.53); Mon, 27 Nov 2000 08:03:40 -0600 Received: from aux153.plano.net (aux-209-217-36-11.oklahoma.net [209.217.36.11]) by sm3.texas.rr.com (8.10.1/8.10.1) with SMTP id eARE8Ni24996 for ; Mon, 27 Nov 2000 08:08:24 -0600 Received: (qmail 19857 invoked by uid 10000); 27 Nov 2000 14:08:22 -0000 Delivered-To: mccalpin.com-john@mccalpin.com Received: (qmail 19837 invoked from network); 27 Nov 2000 14:08:21 -0000 Received: from ares.cs.virginia.edu (128.143.137.19) by aux153.plano.net with SMTP; 27 Nov 2000 14:08:21 -0000 Received: from ocworkbench.com (mav90.mavweb.net [4.23.113.90] (may be forged)) by ares.cs.Virginia.EDU (8.9.2/8.9.2/UVACS-2000040300) with ESMTP id JAA26788 for ; Mon, 27 Nov 2000 09:08:18 -0500 (EST) Received: from chin [202.166.107.75] by ocworkbench.com with ESMTP (SMTPD32-6.05) id A97C1310162; Mon, 27 Nov 2000 09:02:36 -0500 Message-ID: <000c01c0587b$8ef70930$4b6ba6ca@chin> From: "webmaster" To: Subject: Results obtained on DDR mainboard using Duron 600/800/800(133) Date: Mon, 27 Nov 2000 22:08:43 +0800 Organization: ocworkbench.com MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_NextPart_000_0009_01C058BE.9AF74220" X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 5.50.4133.2400 X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4133.2400 Return-Path: webmaster@ocworkbench.com X-Mozilla-Status: 8001 X-Mozilla-Status2: 00000000 X-UIDL: cf600000.eml Status: R This is a multi-part message in MIME format. ------=_NextPart_000_0009_01C058BE.9AF74220 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hello, here are some of my results for your references. Benchmarks using STREAM for DOS v2 We ran the test loop 1000 times to get a more accurate result in DOS = mode. Here are the results obtained. Duron 600 (6x100) STREAM for DOS v2 by Dennis Lee =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D 1 MB =3D 1000000 Bytes in the following measurements. For accurate results, this benchmark should be executed in a true DOS session, and not a DOS shell under another OS. Time Operation Mem Speed Error ---- --------- --------- ----- 14.23 sec COPY32 449.75 MB/s 0.4% 14.39 sec COPY64 444.75 MB/s 0.4% 10.55 sec SCALE 606.64 MB/s 0.6% 16.53 sec ADD 580.76 MB/s 0.4% 17.41 sec TRIAD 551.41 MB/s 0.3% These results are comparable with those on the STREAM website. See for info on STREAM. Type 'streamd ?' for help Duron 800 (8x100) STREAM for DOS v2 by Dennis Lee =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D 1 MB =3D 1000000 Bytes in the following measurements. For accurate results, this benchmark should be executed in a true DOS session, and not a DOS shell under another OS. Time Operation Mem Speed Error ---- --------- --------- ----- 15.49 sec COPY32 413.17 MB/s 0.4% 13.67 sec COPY64 468.18 MB/s 0.4% 10.49 sec SCALE 610.10 MB/s 0.6% 15.27 sec ADD 628.68 MB/s 0.4% 16.59 sec TRIAD 578.66 MB/s 0.4% These results are comparable with those on the STREAM website. See for info on STREAM. Type 'streamd ?' for help Duron 800 (6x133) STREAM for DOS v2 by Dennis Lee =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D 1 MB =3D 1000000 Bytes in the following measurements. For accurate results, this benchmark should be executed in a true DOS session, and not a DOS shell under another OS. Time Operation Mem Speed Error ---- --------- --------- ----- 10.66 sec COPY32 600.38 MB/s 0.6% 10.82 sec COPY64 591.50 MB/s 0.6% 7.91 sec SCALE 809.10 MB/s 0.8% 12.41 sec ADD 773.57 MB/s 0.5% 13.07 sec TRIAD 734.51 MB/s 0.5% These results are comparable with those on the STREAM website. See for info on STREAM. Type 'streamd ?' for help ------=_NextPart_000_0009_01C058BE.9AF74220 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Hello, here are some of my results for = your=20 references.
 

Benchmarks using STREAM for DOS=20 v2

We ran the test loop 1000 times to get = a more=20 accurate result in DOS mode. Here are the results obtained.

Duron 600 = (6x100)

STREAM for DOS v2 by Dennis Lee
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D
1 MB =3D 1000000 Bytes in the following measurements.
For =
accurate results, this benchmark should be executed
in a true DOS session, and not a DOS shell under another OS.
  =
 Time        Operation      Mem Speed       Error
   ----        ---------      ---------       -----
 14.23 sec      COPY32       449.75 MB/s       0.4%
 14.39 sec      COPY64       444.75 MB/s       0.4%
 10.55 sec       SCALE       606.64 MB/s       0.6%
 16.53 sec         ADD       580.76 MB/s       0.4%
 17.41 sec       TRIAD       551.41 MB/s       0.3%
These =
results are comparable with those on the STREAM website.
See <http://www.cs.virginia.edu/stream> for info on =
STREAM.
Type 'streamd ?' for help

Duron 800 = (8x100)

STREAM for=20 DOS v2 by Dennis = Lee
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D
1 MB =3D 1000000 Bytes=20 in the following measurements.

For accurate results, this =
benchmark should be executed
in a true DOS session, and not a DOS shell under another OS.
  =
 Time        Operation      Mem Speed       Error
   ----        ---------      ---------       -----
 15.49 sec      COPY32       413.17 MB/s       0.4%
 13.67 sec      COPY64       468.18 MB/s       0.4%
 10.49 sec       SCALE       610.10 MB/s       0.6%
 15.27 sec         ADD       628.68 MB/s       0.4%
 16.59 sec       TRIAD       578.66 MB/s       0.4%
These =
results are comparable with those on the STREAM website.
See <http://www.cs.virginia.edu/stream> for info on =
STREAM.
Type 'streamd ?' for help

Duron 800 = (6x133)

STREAM for DOS v2 by Dennis Lee
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D
1 MB =3D 1000000 Bytes in the following measurements.
For =
accurate results, this benchmark should be executed
in a true DOS session, and not a DOS shell under another OS.
  =
 Time        Operation      Mem Speed       Error
   ----        ---------      ---------       -----
 10.66 sec      COPY32       600.38 MB/s       0.6%
 10.82 sec      COPY64       591.50 MB/s       0.6%
  7.91 sec       SCALE       809.10 MB/s       0.8%
 12.41 sec         ADD       773.57 MB/s       0.5%
 13.07 sec       TRIAD       734.51 MB/s       0.5%
These =
results are comparable with those on the STREAM website.
See <http://www.cs.virginia.edu/stream> for info on =
STREAM.
Type 'streamd ?' for help
------=_NextPart_000_0009_01C058BE.9AF74220-- From - Sun Jan 28 18:27:40 2001 Received: from sm3.texas.rr.com ([24.93.35.210]) by Mail.austin.rr.com with Microsoft SMTPSVC(5.5.1877.537.53); Thu, 21 Dec 2000 14:23:35 -0600 Received: from aux153.plano.net (aux-209-217-36-11.oklahoma.net [209.217.36.11]) by sm3.texas.rr.com (8.10.1/8.10.1) with SMTP id eBLKT5a24843 for ; Thu, 21 Dec 2000 14:29:05 -0600 Received: (qmail 5118 invoked by uid 10000); 21 Dec 2000 20:21:59 -0000 Delivered-To: mccalpin.com-john@mccalpin.com Received: (qmail 4797 invoked from network); 21 Dec 2000 20:21:53 -0000 Received: from ares.cs.virginia.edu (128.143.137.19) by aux153.plano.net with SMTP; 21 Dec 2000 20:21:53 -0000 Received: from tab.pbc.com ([63.207.108.67]) by ares.cs.Virginia.EDU (8.9.2/8.9.2/UVACS-2000040300) with ESMTP id PAA20879 for ; Thu, 21 Dec 2000 15:21:25 -0500 (EST) Received: from himalaya.pacband.com (himalaya.pacband.com [192.168.10.182]) by tab.pbc.com (8.9.3+Sun/8.9.3) with ESMTP id MAA02653 for ; Thu, 21 Dec 2000 12:21:07 -0800 (PST) Received: by himalaya.pacband.com with Internet Mail Service (5.5.2650.21) id ; Thu, 21 Dec 2000 12:20:52 -0800 Message-ID: <8104DBB8386FD411B8A600D0B76FEAFE251D7F@himalaya.pacband.com> From: Norbert Juffa To: "'mccalpin@cs.virginia.edu'" Subject: STREAM results Athlon, two different compilers on same machine Date: Thu, 21 Dec 2000 12:20:48 -0800 MIME-Version: 1.0 X-Mailer: Internet Mail Service (5.5.2650.21) Content-Type: text/plain; charset="iso-8859-1" Return-Path: norbert@pbc.com X-Mozilla-Status: 8001 X-Mozilla-Status2: 00000000 X-UIDL: 08700000.eml Status: R John: I figured it might be useful to have STREAM numbers for the same machine, but generated with executables from 2 different compilers. 1. The following results are from my home system. It has an Asus K7V motherboard with Via KX133 chipset and an 750 MHz Athlon Classic, 256MB of Crucial PC133-CAS2 SDRAM. It is running WinNT4/SP6 and I used Compaq Visual Fortran 6.5 as the compiler. Compiler was invoked like so: df -unroll:8 -arch:k7 ---------------------------------------------- Double precision appears to have 16 digits of accuracy Assuming 8 bytes per DOUBLE PRECISION word ---------------------------------------------- Array size = 9012345 Offset = 0 The total memory requirement is 206 MB You are running each test 10 times The *best* time for each test is used ---------------------------------------------------- Your clock granularity/precision appears to be 10000 microseconds The tests below will each take a time on the order of 210000 microseconds (= 21 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) RMS time Min time Max time Copy: 576.7901 0.2580 0.2500 0.2600 Scale: 576.7901 0.2540 0.2500 0.2600 Add: 655.4433 0.3310 0.3300 0.3400 Triad: 636.1655 0.3430 0.3400 0.3500 Sum of a is = 1.039394452812601E+019 Sum of b is = 2.078788905585281E+018 Sum of c is = 2.771718540568361E+018 2. The following results are also from my home system. Again, Asus K7V motherboard with Via KX133 chipset and 750 MHz Athlon Classic, 256MB of Crucial PC133-CAS2 SDRAM. Running WinNT4/SP6 and I used Lahey Fujitsu Fortran 95 5.6 as the compiler. Compiler was invoked like so: lf95 -o1 -tpp --------------------------------------------- Double precision appears to have 16 digits of accuracy Assuming 8 bytes per DOUBLE PRECISION word --------------------------------------------- Array size = 9012345 Offset = 0 The total memory requirement is 206 MB You are running each test 10 times The *best* time for each test is used ---------------------------------------------------- Your clock granularity/precision appears to be 10014 microseconds The tests below will each take a time on the order of 280403 microseconds (= 28 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. ---------------------------------------------------- unction Rate (MB/s) RMS time Min time Max time opy: 496.5194 0.2914 0.2904 0.3004 cale: 553.8091 0.2614 0.2604 0.2704 dd: 654.5015 0.3365 0.3305 0.3405 riad: 635.2507 0.3475 0.3405 0.3505 Sum of a is = 1.039394452812601E+19 Sum of b is = 2.078788905585281E+18 Sum of c is = 2.771718540568361E+18 As one can see the results match nicely with the exception of "Copy". LF95 doesn't offer an assembly language listing so I have not figured out why its copy loop is slower than CVF's. -- Norbert From - Sun Jan 28 18:29:40 2001 Received: from sm3.texas.rr.com ([24.93.35.210]) by Mail.austin.rr.com with Microsoft SMTPSVC(5.5.1877.537.53); Sat, 23 Dec 2000 20:19:27 -0600 Received: from aux153.plano.net (aux-209-217-36-11.oklahoma.net [209.217.36.11]) by sm3.texas.rr.com (8.10.1/8.10.1) with SMTP id eBO2P2a20873 for ; Sat, 23 Dec 2000 20:25:03 -0600 Received: (qmail 26305 invoked by uid 10000); 24 Dec 2000 02:24:42 -0000 Delivered-To: mccalpin.com-john@mccalpin.com Received: (qmail 26294 invoked from network); 24 Dec 2000 02:24:41 -0000 Received: from ares.cs.virginia.edu (128.143.137.19) by aux153.plano.net with SMTP; 24 Dec 2000 02:24:41 -0000 Received: from paralleldata.com (smtp.paralleldata.com [38.153.145.2]) by ares.cs.Virginia.EDU (8.9.2/8.9.2/UVACS-2000040300) with ESMTP id VAA25580 for ; Sat, 23 Dec 2000 21:24:44 -0500 (EST) Received: by paralleldata.com from localhost (router,SLMail V2.5); Sat, 23 Dec 2000 08:25:35 -0600 Received: by paralleldata.com from paralleldata.com (65.3.53.39::mail daemon; unverified,SLMail V2.5); Sat, 23 Dec 2000 08:25:34 -0600 Sender: "Wsb" Message-ID: <3A45627E.36574A3C@paralleldata.com> Date: Sat, 23 Dec 2000 20:42:06 -0600 From: "W Bauske" Organization: PDS Inc. X-Mailer: Mozilla 4.75 [en] (X11; U; Linux 2.2.5-15 i686) X-Accept-Language: en MIME-Version: 1.0 To: mccalpin@cs.virginia.edu Subject: P4 1.4Ghz Intel Results Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Return-Path: wsb@paralleldata.com X-Mozilla-Status: 8001 X-Mozilla-Status2: 00000000 X-UIDL: e8700000.eml Status: R John, I have a Dell P4 that I've run your stream test on. I used RH7.0 and the kgcc compiler (egcs-1.1.2 I believe). I hope you find the results useful. Wes Bauske (PDS Inc) [wsb@wsb64 stream]$ stream_d.p4 ------------------------------------------------------------- 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. ------------------------------------------------------------- Your clock granularity/precision appears to be 2 microseconds. Each test below will take on the order of 36025 microseconds. (= 18012 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) RMS time Min time Max time Copy: 1352.4930 0.0474 0.0473 0.0476 Scale: 1364.3423 0.0470 0.0469 0.0474 Add: 1572.1212 0.0619 0.0611 0.0680 Triad: 1555.2601 0.0619 0.0617 0.0623