1/45 8 Outline 1. 2. 3. 4. Jun. 6, 2013@ A
(1/2) 2/45 HPC top runner application programmer PC-9801F N88-BASIC Quick BASIC + DOS ( ) BCB Windows Percolation, Event-driven MD ActionScript Flash MPI MD
(2/2) ( ) 3/45 MS-DOS RPG ( BGM ) ( BGM ) RPG ( BGM) Windows (DOS ) 2 ( BGM) Flash
4/45 CPU MPI
5/45
6/45
(1/3) 7/45 ( ) Michael A. Jackson, 1975
(2/3) 8/45 It is not always true that a fast runner is a good soccer player. H. Watanabe, 2012
(3/3) 9/45
10/45 (1 ) (4 ) (1 )
Q. A. 11/45
Q. A. 12/45 ( ) ( )
13/45 sort+diff
14/45 ( ) sort + diff sort + diff print sort diff
15/45
sort+diff 1 (1/2) 16/45 ( ) (Exclusive Grid ) (Non-Exclusive Grid )
sort+diff 1 (2/2) 17/45 O(N) O(N^2) configuration O(N^2) ( ) ( ) O(N) O(N^2) 1 diff $./on2code sort > o2.dat $./on1code sort > o1.dat $ diff o1.dat o2.dat diff
sort+diff 2 (1/2) 18/45 3 26 Domain C 6 Domain A Domain B
sort+diff 2 (2/2) 19/45 (1) ( ) (2) (proc012.dat ) (3) ( ) ( test1/ test2/ ) (4) (sort + diff ) $ sort test1/proc000.dat > test1/proc000s.dat $ sort test2/proc000.dat > test2/proc000s.dat $ diff test1/proc000s.dat test2/proc000s.dat
sort+diff 3 (1/2) 20/45 configuration
sort+diff 3 (2/2) 21/45 ( ) ( ) ( ) (proc???.dat) cat sort + diff $./serial sort > serial.dat $./parallel $ cat proc???.dat sort > parallel.dat $ diff serial.dat parallel.dat
22/45
23/45
24/45 (Y/y) CVS, Subversion, Git checkout update commit commit checkout update
25/45 1) 2) 3) A 4) B B A
26/45 1) 2) 5) 3) 6) B A 4) A 7) ( ) C
27/45 ( ) ( ) ( )
28/45 A C B (1) ( ) (2) (Subversion ) (3) ( )
29/45 Subversion tag trunk tags 130606_bug Subversion ( ) ( )
(1/2) Segmentation Fault ( ) print (gdb ) printf 1 ; printf 2 ; printf 3 ; 1 12 30/45
(2/2) const int N = 10; double data[n]; double func(int index){ return data[index]; index=10 } 31/45 index 0 9 ( ) assert (if ) #include <assert.h> double func(int index){ assert(index<n); assert } assert Assertion failed: (i<10), function func, file test.cc, line 7.
N N rand 0 RAND_MAX (RAND_MAX=2147483647) RAND_MAX 0 1 double myrand_double (void){ return (double)(rand())/(double) (RAND_MAX); } 32/45 int myrand_int (const int N){ return (int)(myrand_double()*n); } rand RAND_MAX myrand_int N const int N = 10; double data[n]; int index = myrand_int(n); // ( ) return data[index]; print +assert
(1/2) 33/45 Input A Main Kernel Ver. 1 Observe Energy OK Input B Main Kernel Ver. 2 Observe Energy NG Observe Pressure Input B ( ) Input B Input B Main Kernel Ver. 1 Observe Energy OK? NG?
(2/2) 34/45 ( ) (2) ( ) (1) Rev. 1 Rev. 2 Rev. 3 Rev. 4 Rev. 5 (3) Rev. 2 Rev. 3 diff
35/45 ( ) ( ) ( ) print assert ( ) ( )
36/45
37/45 PD
38/45 ( )
39/45
40/45 SourceForge.net, SourceForge.jp, GitHub... google sites
SorceForge.net 41/45 http://mdacp.sourceforge.net/ sourceforge.net/projects/mdacp/stats/traffic
SorceForge.jp SourceForge 42/45 http://qcad.sourceforge.jp/ http://sourceforge.jp/projects/qcad/devel SF.jp
GitHub 43/45 https://github.com/kaityo256 https://github.com/kaityo256/flash/blob/ master/sentos/sentos.as SNS
44/45 Academia ( )
45/45