File: Beowulf-HOWTO.pl.html

package info (click to toggle)
doc-linux-pl 2002.06.14-2
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k, jessie, jessie-kfreebsd, lenny, squeeze, wheezy
  • size: 6,900 kB
  • ctags: 968
  • sloc: makefile: 66
file content (1122 lines) | stat: -rw-r--r-- 52,039 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
 <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
<META HTTP-EQUIV="content-type" content="text/html; charset=iso-8859-2">
<TITLE>Beowulf HOWTO</TITLE>


</HEAD>
<BODY>
<H1>Beowulf HOWTO</H1>

<H2>Autor: Jacek Radajewski i Douglas Eadline<BR>

v1.1.1, 22 padziernik 1998<BR>
<B>Wersja polska: Adam Byrtek
<A HREF="mailto:alpha@irc.pl">alpha@irc.pl</A></B><BR>

v1.0, lipiec 1999</H2>
<P><HR>
<EM>Ten dokument jest wprowadzeniem do architektury superkomputerw Beowulf i
dostarcza podstawowych informacji na temat programowania rwnolegego,
wraz z odnonikami do bardziej szczegowych dokumentw oraz stron WWW.</EM>
<HR>
<H2><A NAME="s1">1. Wstp</A></H2>

<H2>1.1 Zastrzeenie</H2>

<P>Nie ponosimy adnej odpowiedzialnoci za jakiekolwiek bdne informacje
zawarte w tym dokumencie, ani za uszkodzenia ktre mog one spowodowa.
<P>
<H2>1.2 Prawa autorskie</H2>

<P>Copyright &copy; 1997 - 1998 Jacek Radajewski and Douglas Eadline.
Udzielono zezwolenia na dystrybucj i modyfikowanie tego dokumentu zgodnie z
licencj GNU General Public Licence.
<P>
<H2>1.3 Informacje o dokumencie</H2>

<P>Jacek Radajewski rozpocz prac nad tym dokumentem w padzierniku 1997,
niedugo potem doczy do niego Douglas Eadline. W przecigu kilku miesicy
dokument Beowulf HOWTO znacznie si rozrs, i w sierpniu 1998 zosta
podzielony na trzy dokumenty: Beowulf HOWTO, Beowulf Architecture Design
HOWTO, oraz Beowulf Installation and Administration HOWTO. Wersja 1.0.0
Beowulf HOWTO zostaa wydana w ramach Linux Documentation Project (Projektu
Dokumentacji Linuxa) 11 padziernika 1998. Mamy nadziej, e to jedynie
pocztek tego, co stanie si wkrtce Beowulf Documentation Project (Projektem
Dokumentacji Beowulfa).
<P>
<H2>1.4 Informacje o autorach</H2>

<P>
<UL>
<LI>Jacek Radajewski pracuje jako zarzdca sieci i studiuje nauki
komputerowe na Uniwersytecie Poudniowego Queensland, w Australii. Jacek
pierwszy raz spotka si z Linuxem w 1995 roku, i bya to mio od
pierwszego spojrzenia. Jacek wybudowa swj pierwszy klaster Beowulf w maju
1997 i od tamtego czasu eksperymentuje, starajc si znale nowe i lepsze
sposoby rozwizywania problemw. Mona skontaktowa si z Jackiem wysyajc
mu email na adres 
<A HREF="mailto:jacek@usq.edu.au">jacek@usq.edu.au</A>
</LI>
<LI>Douglas Eadline, Ph.D. jest Prezesem i Pierwszym Naukowcem w
Paralogic, Inc., Bethlehem, PA, USA. Z wyksztacenia chemik
fizyczny/analityczny, zainteresowany komputerami od 1978, gdy zbudowa swj
pierwszy komputer do uycia z instrumentami chemicznymi. Teraz Dr. Eadline
interesuje si Linuxem, klastrami Beowulf i algorytmami rwnolegymi. Mona
skontaktowa si z nim wysyajc email na adres 
<A HREF="mailto:deadline@plogic.com">deadline@plogic.com</A>
</LI>
</UL>
<P>
<H2>1.5 Podzikowania</H2>

<P>Pisanie Beowulf HOWTO byo dugim procesem, zakoczonym dziki wielu osobom.
Chciaem podzikowa nastpujcym ludziom za pomoc i wkad w ten dokument.
<UL>
<LI> Becky za jej mio, wsparcie i zrozumienie.
</LI>
<LI> Tom'owi Sterling, Don'owi Becker oraz innym ludziom z NASA, ktrzy
rozpoczli projekt Beowulf.
</LI>
<LI> Thanh Tran-Cong i Katedrze Inynierii i Pomiarw za stworzenie maszyny
Beowulf <EM>topcat</EM>, udostpnionej do eksperymentw.
</LI>
<LI> Mojemu nadzorcy Christopher'owi Vance za wiele wietnych pomysw.
</LI>
<LI> Mojemu przyjacielowi Russell'owi Waldron za wietne pomysy
programistyczne, jego zainteresowanie projektem i wsparcie.
</LI>
<LI> Mojemu przyjacielowi David'owi Smith za przeczytanie tego dokumentu w
poszukiwaniu bdw.
</LI>
<LI> Wielu innym ludziom z listy dyskusyjnej Beowulfa, ktrzy dostarczyli
mi opinii i pomysw.
</LI>
<LI> Wszystkim ludziom odpowiedzialnym za system operacyjny Linux i
pozostae darmowe oprogramowanie wykorzystywane na <EM>topcat</EM> i innych
maszynach Beowulf.
</LI>
</UL>
<P>
<H2><A NAME="s2">2. Wstp</A></H2>

<P>
<P>Jako e wydajno sprztu komputerowego i sieciowego wci ronie, a jego
ceny spadaj, bardziej praktyczne ni kupowanie bardzo kosztownego 
superkomputera staje si budowanie rwnolegych systemw obliczeniowych ze 
skadnikw dostpnych w kadym sklepie. W rzeczywistoci wskanik wydajnoci
do ceny maszyny typu Beowulf jest od trzech do dziesiciu razy wyszy ni
tradycyjnych superkomputerw. Architektura Beowulf jest atwo skalowalna,
atwa w budowie i paci si jedynie za sprzt, jako e wikszo
oprogramowania jest darmowa.
<P>
<H2>2.1 Kto powinien czyta ten dokument?</H2>

<P>To HOWTO jest zaprojektowane dla osoby majcej przynajmniej podstawowe
dowiadczenie z systemem operacyjnym Linux. Znajomo technologii Beowulf
czy rozumienie bardziej zoonych koncepcji zwizanych z systemami
operacyjnymi i sieciami nie jest konieczne, ale podstawowa wiedza o
przetwarzaniu rwnolegym bdzie przydatna (w kocu musisz mie jaki powd,
czytajc ten dokument). To HOWTO nie odpowie na wszystkie moliwe pytania na
temat Beowulf'a, ale by moe da ci pomysy i poprowadzi we waciwym
kierunku. Celem tego dokumentu jest udzielenie podstawowych informacji,
oraz odnonikw do bardziej zaawansowanych dokumentw.
<P>
<H2>2.2 Czym jest Beowulf?</H2>

<P><I>Famed was this Beowulf: far flew the boast of him, son of Scyld,
in the Scandian lands.  So becomes it a youth to quit him well with
his father's friends, by fee and gift, that to aid him, aged, in after
days, come warriors willing, should war draw nigh, liegemen loyal: by
lauded deeds shall an earl have honor in every clan.</I> Beowulf to
najstarszy zachowany poemat epicki w jzyku angielskim. Jest to opowie o
bohaterze dysponujcym wielk si i odwag, ktry pokona potwora zwanego
Grendel. Patrz do dziau 
<A HREF="#history">Historia</A> aby dowiedzie
si wicej o walecznym Beowulf'ie.
<P>Prawdopodobnie istnieje co najmniej tyle definicji Beowulf'a, ile ludzi
ktrzy budowali lub korzystali z architektury superkomputera Beowulf.
Niektrzy twierdz e system moe zosta nazwany Beowulf tylko jeli zosta
zbudowany tak samo, jak oryginalna maszyna NASA. Inni zmierzaj do drugiej
skrannoci, nazywajc imieniem Beowulf kady system stacji roboczych
wykonujcych kod rwnolegy. Moja definicja Beowulf'a mieci si mniej
wicej porodku, i jest oparta na wielu opiniach z listy dyskusyjnej
Beowulf'a:
<P>
<P>Beowulf to wielo-komputerowa architektura ktra moe zosta uyta do
oblicze rwnolegych. Jest to system, ktry na ogl skada si z jednego
wz-serwera i jednego lub wicej wza-klienta poczonego przez Ethernet
lub jak inn sie. Jest to system zbudowany w oparciu o powszechnie
dostpne komponenty sprztowe, jak kady PC zdolny do uruchomienia Linuxa,
standardowe karty Ethernet i switch'e. Nie zawiera adnych unikalnych
komponentw sprztowych i jest atwy w tworzeniu. Beowulf korzysta rwnie
ze zwykego oprogramowania, jak system operacyjny Linux, Parallel Virtual
Machine (PVM) oraz Message Passing Interface (MPI). Wze-serwer kontroluje
cay klaster i udostpnia pliki klientom. Peni on take funkcj konsoli
klastra i jest jego bram do zewntrznego wiata. Due maszyny Beowulf mog
posiada wicej ni jeden wze-serwer, oraz inne wzy stworzone dla
specyficznych zada, na przykad konsole lub stacje monitorujce. W
wikszoci przypadkw wzy-klienci w systemie Beowulf s gupie, im gupsze
tym lepiej. Wzy s konfigurowane i kontrolowane przez wze-serwer, i
robi tylko to, co kazano im robi. W konfiguracji bezdyskowej klienci nie
znaj nawet swojego adresu IP lub nazwy, dopki serwer im ich nie poda.
Jedn z podstawowych rnic pomidzy Beowulf'em a architektur Cluster of
Workstations (COW) jest to, e Beowulf zachowuje si bardziej jak jedna
maszyna, ni wiele stacji roboczych. W wikszoci przypadkw wzy-klienci
nie posiadaj klawiatur czy monitorw, a dostp do nich jest moliwy jedynie
przez odlege logowanie bdz opcjonalny terminal szeregowy. Wezy Beowulf
mona sobie wyobrazi jako pakiej CPU + pami, ktry moe zosta podczony
do klastra, tak jak CPU czy modu pamici moe zosta doczony do pyty
gwnej.
<P>
<P>Beowulf to nie aden specjalny pakiet oprogramowania, nowa topologia sieci
czy nowa nakadka na jdro. Beowulf to technologia czenia komputerw Linux
aby utworzy rwnolegy, wirtualny superkomputer. Chocia istnieje wiele
pakietw oprogramowania, takich jak modyfikacje jdra, biblioteki PVM i MPI,
narzdzia konfiguracyjne, ktre przyspieszaj architektur Beowulf,
uatwiaj konfiguracj i zwikszaj uyteczno, jednak moliwe jest
zbudowanie maszyny Beowulf wykorzystujc standardow dystrybucj Linux, bez
adnego dodatkowego oprogramowania. Jeli masz przynajmniej dwa usieciowione
komputery Linux ktre dziel przynajmniej katalog <CODE>/home</CODE> poprzez
NFS, i ufaj sobie nawzajem na tyle, aby uruchomi odleg powok (rsh),
moesz si upiera e dysponujesz prost, dwu-wzow maszyn Beowulf.
<P>
<P>
<H2>2.3 Klasyfikacja</H2>

<P>Systemy Beowulf za konstruowane z rnorodnych czci. W celu zwikszenia
moliowci obliczeniowych czasami korzysta ci z pewnych niedostpnych
powszechnie komponentw (tzn. produkowanych przez pojedynczego producenta).
W celu odrnienia osigw rnych typw systemw, i uatwienia dyskusji na
ich temat, proponujemy nastpujc klasyfikacj:
<P>BEOWULF KLASY I:
<P>Maszyna tej klasy jest zbudowana wycznie z powszechnie dostpnych
komponentw. W celu sprawdzenia powszechnoci elementw przeprowadzmy test
przy uyciu "Computer Shopper" (calowej gruboci miesicznika/katalogu
systemw PC i komponentw). Test ten wyglda nastpujco:
<P>Beowulf KLASY I to maszyna, ktra moe zosta skonstruowana z czci
znalezionych przynajmiej w 3 krajowych/oglnowiatowych katalogach
reklamowych.
<P>Zalety systemw KLASY I to:
<UL>
<LI> sprzt dostpny z wielu rdel (niskie ceny, atwa konserwacja)</LI>
<LI> niezalenoc od konkretnego producenta</LI>
<LI> wsparcie standardowych sterownikw Linux</LI>
<LI> najczciej oparte o standardy (SCSI, Ethernet itp.)</LI>
</UL>
<P>Wady systemw KLASY I to:
<UL>
<LI> najlepsza wydajno moe wymaga sprztu KLASY II</LI>
</UL>
<P>BEOWULF KLASY II
<P>Beowulf KLASY II to po prostu kada maszyna ktra nie przejdzie testu z
uyciem "Computer Shopper". To nie jest co zego, jest to jedynie
klasyfikacja maszyny.
<P>Zalety systemw KLASY II to:
<UL>
<LI> cakiem dobra wydajno!</LI>
</UL>
<P>Wady systemw KLASY II to:
<UL>
<LI> problemy ze sterownikami</LI>
<LI> zaleno od konkretnego producenta</LI>
<LI> moe by droszy ni system klasy I</LI>
</UL>
<P>adna KLASA nie jest lepsza ni inna. Wszystko zaley wycznie do potrzeb i
moliwoci finansowych. Ta klasyfikacja zostaa utworzona jedynie w celu
uatwienia i wikszej zwizoci dyskusji na temat systemw Beowulf. Dzia
"Projektowanie systemu" moe pomc ustali, ktry typ systemu pardziej
pasuje do twoich potrzeb.
<P>
<P>
<P>
<H2><A NAME="s3">3. Oglny opis architektury</A></H2>

<P>
<P>
<H2>3.1 Jak to wyglda?</H2>

<P>Myl, e najlepszym sposobem opisu architektury superkomputera Beowulf
jest uycie przykadu, ktry jest bardzo podobny do prawdziwego Beowulf'a, ale
znany wikszoci administratorw systemu. Przykad najbliszy Beowulf'owi to
laboratorium komputerw Unix z serwerem i klientami. Aby by bardziej
szczegowym uyj jako przykadu laboratorium komputerw DEC Alpha na
Katedrze Nauk Komputerowych, USQ. Serwer nazywa si <EM>beldin</EM>, a klienci
nazywaj si <EM>scilab01</EM>, <EM>scilab02</EM>, a do <EM>scilab20</EM>. Wszyscy
klienci maj zainstalowan lokaln kopi systemu operacyjnego Digital Unix
4.0, ale korzystaj z katalogw uytkownika (<CODE>/home</CODE>) oraz
<CODE>/usr/local</CODE> serwera poprzez NFS (Network File System). Kady klient
posiada wpis dla serwera i wszystkich pozostaych klientw w swoim pliku
<CODE>/etc/hosts.equiv</CODE>, wic wszyscy klienci mog uruchomi rsh na kadym
innym. Serwer jest jednoczenie serwerem NIS dla caego laboratorium, wic
informacje ksigowania s identyczne dla wszystkich maszyn. Osoba moe
siedzie przed konsol <EM>scilab02</EM>, zalogowa si i pracowa w tym samym
rodowisku, w jakim pracowaa by gdyby zalogowaa si z serwera bdz z
<EM>scilab15</EM>. Spowodowane jest to tym, e system operacyjny na wszystkich
komputerach jest zainstalowany i skonfigurowany w ten sam sposb, a katalogi
uytkownika <CODE>/home</CODE> i <CODE>/usr/local</CODE> mieszcz si fizycznie na
serwerze, i s udostpniane przez NFS. Wicej informacji o NIS i NFS
znajdziesz w dokumentach HOWTO 
<A HREF="http://sunsite.unc.edu/LDP/HOWTO/NIS-HOWTO.html">NIS</A> oraz 
<A HREF="http://sunsite.unc.edu/LDP/HOWTO/NFS-HOWTO.html">NFS</A>.
<P>
<P>
<H2>3.2 Jak wykorzysta pozostae wzy?</H2>

<P>
<P>Gdy mamy ju jakie pojcie o architekturze systemu, moemy spojrze jak
wykorzysta dostpne cykle CPU maszyn w laboratorium komputerowym.
Kada osoba moe zalogowa si na dowolnej maszynie, i uruchomi program i
swoim katalogu domowym, ale moe take wykona to zadanie na innej maszynie
wywoujc po prostu odleg powok. Przykadowo zamy e chcemy obliczy
sum pierwiastkw kwadratowych wszystkich liczb cakowitych od 1 do 10
wcznie. Piszemy prosty program nazwany <CODE>sigmasqrt</CODE> (patrz 
<A HREF="#sigmasqrt">kod rdowy</A>), ktry wykonuje oblicznia. Aby obliczy
sum pierwiastkw kwadratowych liczb od 1 do 10 wykonujemy:
<PRE>
[jacek@beldin sigmasqrt]$ time ./sigmasqrt 1 10
22.468278

real    0m0.029s
user    0m0.001s
sys     0m0.024s
</PRE>

Komenda <CODE>time</CODE> pozwala nam ledzi upyw czasu podczas wykonywania
zadania. Jak wida, ten przykad zaj jedynie may uamek sekundy (0.029s),
ale co bdzie jeli sprbujemy doda pierwiastki kwadratowe liczb od 1 do 
1000000000? Sprbujmy, ponownie obliczajc upyw czasu.
<P>
<PRE>
[jacek@beldin sigmasqrt]$ time ./sigmasqrt 1 1000000000
21081851083600.559000

real    16m45.937s
user    16m43.527s
sys     0m0.108s
</PRE>
<P>Tym razem wykonianie programu trwao znacznie duej. Oczywistym pytaniem
jest co moemy zrobi aby przyspieszy wykonanie programu? Jak moemy
zmieni sposb wykonania zadania aby zmniejszy upyw czasu? Oczywist
odpowiedzi jest rozbicie zadania na wiele pod-zada rwnolegych na
wszystkich komputerach. Moemy rozbi jedno due zadanie dodawania na 20
czci, obliczajc jeden zakres pierwiastkw kwadratowych i dodajc je na
kadym wle. Gdy wszystkie wzy zakocz obliczenia i zwrc rezultaty, 20
liczb powinno zosta dodanych do siebie aby otrzyma kocowy wynik.
<P>
<PRE>
[jacek@beldin sigmasqrt]$ mkfifo output
[jacek@beldin sigmasqrt]$ ./prun.sh &amp; time cat output | ./sum
[1] 5085
21081851083600.941000
[1]+  Done                    ./prun.sh

real    0m58.539s
user    0m0.061s
sys     0m0.206s
</PRE>
<P>Tym razem zajo to okoo 58.5s. Jest to czas od rozpoczcia zadania do
zakoczenia go przez wszystkie wzy i zwrcenia rezultatu przez potok.
Ten czas nie zawiera kocowego dodania 20 liczb, ale to jedynie may uamek
sekundy, ktry moe zosta zignorowany. Zauwaamy e nastpia znaczna
poprawa przy rwnolegym wykonaniu zadania. Rwnolege zadanie wykonao si
ponad 17 razy szybciej, co jest bardzo dobrym wynikiem przy 20-krotnym
zwikszeniu iloci CPU. Powyszy przykad ma na celu zilustrowanie
najprostszej metody zmiany zwykego kodu na rwnolegy. W praktyce takie
proste przypadki s niezwykle rzadkie, i rne techniki (takie jak API PVM i
PMI) s wykorzystywane do osignicia rwnolegoci.
<P>
<P>
<H2>3.3 Czym Beowulf rni si od COW?</H2>

<P>Laboratorium komputerowe opisane powyej jest doskonaym przykadem klastra
stacji roboczych (COW). Tak wic co jest szczeglnego w Beowulf'ie, i w jaki
sposb rni si on od COW? Prawd jest, e nie jest to wielka rnica, ale
Beowulf posiada kilka unikalnych cech. Po pierwsze, w wikszoci przypadkw
wzy-klienci klastra Beowulf nie posiadaj klawiatury, myszy, karty
graficznej czy monitora. Dostp do wzw-klientw odbywa si poprzez
odlege poczenia z wza-serwera, dedykowanego wza-konsoli lub konsoli
szeregowej. Jako e wzy-klienci nie musz mie dostpu do maszyn spoza
klastra, ani maszyny spoza klastra nie musz mie bezporedniego dostpu do 
wzw-klientw, powszechnie stosowan praktyk jest nadawanie
wzom-klientom prywatnych adresw IP, z prywatnych zakresw takich jak
10.0.0.0/8 czy 192.168.0.0/16 (RFC 1918 
<A HREF="http://www.alternic.net/rfcs/1900/rfc1918.txt.html">http://www.alternic.net/rfcs/1900/rfc1918.txt.html</A>). Na og jedyn
maszyn podczon do wiata zewntrznego za pomoc drugiej karty sieciowej
jest wze-serwer. Najczciej korzysta si z systemu poprzez bezporedni
dostp do konsoli serwera, lub poprzez telnet czy odlege logowanie na
serwer z odlegej stacji roboczej. Na serwerze uytkownicy mog edytowa i
kompilowa swj kod, a take uruchamia procesy na wszystkich wzach w
klastrze. W wikszoci przypadkw systemy COW s uywane do oblicze
rwnolegych w nocy i w weekendy, gdy uytkownicy nie korzystaj ze swoich
stacji roboczych do pracy, wykorzystujc w ten sposb z niepotrzebne cykle
procesora. Z kolei maszyna Beowulf jest maszyn dedykowan do przetwarzania
rwnolegego, i zoptymalizowan w tym celu. Beowulf zapewnia take wikszy
wspczynnik ceny do wydajnoci, jako e jest zbudowany z oglnie dostpnych
komponentw i korzysta na og z darmowego oprogramowania. Beowulf ma take
wicej cech pojedynczego systemu, ktre pomagaj uytkownikom
dostrzega klaster Beowulf jako pojedyncz obliczeniow stacj robocz.
<P>
<P>
<H2><A NAME="s4">4. Planowanie systemu</A></H2>

<P>Przed zakupem sprztu dobrym pomysem moe okaza si przemylenie planu
gotowego systemu. Przy tworzeniu systemu Beowulf naley wzi pod uwag
przede wszystkim dwie gwne kwestie sprztowe: typ komputerw/wzw ktrych
masz zamiar uy, oraz sposb ich poczenia. Istnieje jedna kwestia
programowa, ktra moe wpyn na decyzj w sprawie sprztu: biblioteka
komunikacyjna lub API. Bardziej szczegowe rozwaania na temat sprztu i
oprogramowania znajduj si w innym miejscu tego dokumentu.
<P>Mimo e wybr nie jest zbyt wielki, istniej jednak pewne istotne decyzje
ktre musz zosta podjte przy konstruowaniu systemu Beowulf.
Jako e dziedzina wiedzy (bd sztuka) "przetwarzanie rwnolege" posiada
wiele moliwych interpretacji, poniej zamieszczone wprowadzenie do niej.
Jeli nie jeste zainteresowany takim materiaem wprowadzajcym, moesz
pomin t sekcj, jednak zaleca si, aby przeczyta sekcj 
<A HREF="#suitability">Suitability</A> zanim podejmiesz ostateczne
decyzje sprztowe.
<P>
<H2>4.1 Krtkie wprowadzenie do przetwarzania rwnolegego.</H2>

<P>Ta sekcja stanowi wprowadzenie do koncepcji przetwarzania rwnolegego. NIE
jest to wyczerpujcy materia, jest to jedynie krtki opis spraw, ktre mog
by istotne dla projektanta i uytkownika Beowulf'a.
<P>Podczas projektowania i budowania Beowulf'a, wiele z opisanych poniej 
zagadnie moe okaza si istotnych dla twoich decyzji. Ze wzgldu na
szczeglne cechy komponentw superkomputera Beowulf, naley uwanie
zastanowi si nad wieloma aspektami, dopki jeszcze zale one od ciebie.
Wcale nie jest tak trudno zrozumie podstawowe zagadnienia zwizane z
przetwarzaniem rwnolegym. W rzeczywistoci gdy ju zrozumie si te
zagadnienia, oczekiwania oka si bardziej rzeczywiste i sukces bdzie
bardziej prawdopodobny. W przeciwiestwie do "wiata sekwencyjnego", gdzie
szybko procesora jest najwaniejszym aspektem, szybko procesora w
"wiecie rwnolegym" jest tylko jednym z wielu aspektw wpywajcych na
ogln wydajno i efektywno systemu.
<P>
<P>
<H2>4.2 Metody przetwarzania rwnolegego</H2>

<P>Przetwarzanie rwnolege moe zosta osignite w rny sposb. Z perspektywy
uytkownika istotne jest rozpatrzenie zalet i wad kadej metody. Ponisze
dziay prbuj dostarczy informacji na temat metod przetwarzania
rwnolegego i stwierdzaj, czy maszyna Beowulf podpada pod t kategori.
<P>
<H3>Po co wicej ni jeden procesor?</H3>

<P>Odpowied na to pytanie jest bardzo istotna. Korzystanie z 8 procesorw aby
uruchomi twj ulubiony edytor tekstw to lekka przesada. A co z serwerem
www, baz danych, programem renderujcym? Moe wicej CPU pomoe. A co ze
zoon symulacj, kodem dynamiki cieczy czy aplikacj grnicz? Dodatkowe
CPU na pewno pomog w tych przypadkach. Faktem jest e architektury
wieloprocesorowe s wykorzystywane do rozwizywania coraz wikszej liczby
problemw.
<P>Najczciej nastpnym pytaniem jest: "Dlaczego potrzebuj dwch czy czterech
CPU? Po prostu poczekam na turbo-hiper ukad 986." Istnieje kilka powodw:
<OL>
<LI> Podczas korzystania z wielozadaniowych systemw operacyjnych mona
robi wicej ni jedn rzecz w tym samym czasie. Jest to naturalna
"rwnolego", ktra moe by atwo wykorzystana przez wicej ni jeden
tani CPU.
</LI>
<LI> Szybko procesorw podwaja si co kade 18 miesicy, ale co z
prdkoci pamici i dysku twardego? Niestety te szybkoci nie rosn tak
szybko, jak szybko CPU. Pamitaj, e wikszo aplikacji wymaga dostpu do
pamici i twardego dysku. Wykonywanie zada rwnolegle jest sposobem
obejcia tych ogranicze.
</LI>
<LI> Badania wskazuj, e szybko procesorw przestanie rosn dwukrotnie
co 18 miesicy po roku 2005. Istniej pewne bardzo powane przeszkody ktre
naley pokona aby utrzyma ten wskanik.
</LI>
<LI> Zalenie od aplikacji, przetwaanie rwnolege moe przyspieszy
dziaanie od 2 do 500 razy (w pewnych przypadkach nawet wicej). Taka
wydajno nie jest dostpna przy uyciu pojedynczego procesora. Nawet
superkomputery, ktre kiedy korzystay z bardzo szybkiego, specjalnego
procesora teraz s budowane z wielu oglnodostpnych CPU.</LI>
</OL>
<P>Jeli do rozwizania zoonego problemu potrzebujesz szybkoci,
przetwarzanie rwnolege jest warte rozwaenia. Poniewa przetwarzanie
rwnolege moe zosta zaimplementowane na rne sposoby, rozwizanie
problemu wymaga podjcia pewnych bardzo wanych decyzji. Te decyzje mog
drastycznie wpyn na przenono, wydajno i koszt systemu.
<P>Zanim dojdziemy do spraw technicznych, spjrzmy na realny problem dla
przetwaania rwnolegego, korzystajc z przykadu ktry dobrze znamy --
oczekiwania w dugich kolejkach w sklepie.
<P>
<H3>Sklep z przetwarzaniem rwnolegym</H3>

<P>Rozwamy wielki sklep z omioma kasami zgrupowanymi razem na przedzie
sklepu. Zamy e kada kasa/kady kasjer jest CPU, a kady klient jest
programem komputerowym. Wielko zamwienia kadego klienta jest rozmiarem 
programu komputerowego (iloci pracy). Te analogie mog zosta wykorzystane
do zilustrowania poj przetwarzania rwnolegego.
<P>
<H3>Jednozadaniowy system operacyjny</H3>

<P>Tylko jedna kasa jest otwarta, i musi obsuy kadego klienta pojedynczo.
<P>Przykad: MS-DOS
<P>
<H3>Wielozadaniowy system operacyjny</H3>

<P>Otwarta jest jedna kasa, ale teraz przetwarzany jest tylko fragment
zamwienia klienta, a nastpnie obsugiwany jest fragment zamwienia klienta
nastpnego. Kademu wydaje si, e wszyscy s obsugiwani jednoczenie, ale
jeli nie ma nikogo innego w kolejce klient zostanie obsuony szybciej.
<P>Przykad: UNIX, NT korzystajcy z jednego CPU
<P>
<H3>Wielozadaniowe systemy operacyjne z wieloma CPU</H3>

<P>Teraz sklep dysponuje wieloma kasami. Kade zamwienie moe zosta
przetworzone przez odrbn kas i kolejka moe zosta obsuona szybciej.
Nazywane jest to SMP -- Symmetric Multi-processing. Mimo e istnieje wiele
kas, to jeli jeste sam w kolejce, nie zostaniesz obsuony szybciej, ni 
gdyby istniaa tylko jedna kasa.
<P>Przykad: UNIX oraz NT z wieloma CPU
<P>
<P>
<H3>Wtki w wielozadaniowym systemie operacyjnym z wieloma CPU</H3>

<P>Jeli podzielisz produkty w zamwieniu, by moe zdoasz szybciej przej
przez kolejk korzystajc z kilku kas jednoczenie. Najpierw musimy zaoy,
e posiadasz du ilo towaru, poniewa czas powicony na rozbijanie
zamwienia musi zwrci si przez korzystanie z wielu kas. Teoretycznie
powiniene przej kolejk n-razy szybciej ni poprzednio, gdzie `n' to
ilo kas. Gdy kasjer musi podsumowa zamwienie, moe wymieni informacj
i komunikowa si z wszystkimi innymi `lokalnymi' kasami. Kasy mog nawet
`zaglda' do innych kas aby uzyska informacj, ktra przyspieszy ich
prac. Istnieje jednak limit iloci kas w jednym sklepie, aby praca
przebiegaa efektywnie.
<P>Prawo Amdala take ogranicza prdko programu do prdkoci jego
najwolniejszego, sekwencyjnego fragmentu.
<P>Przykad: UNIX lub NT z wielona CPU na jednej pycie gwnej uruchamiajce
programy wielo-wtkowe.
<P>
<P>
<H3>Wysyanie komunikatw w wielozadaniowych systemach z wieloma CPU</H3>

<P>Aby zwikszy wydajno, sklep dodaje 8 kas na tyach sklepu. Jako e nowe
kasy s daleko od kas z przodu, kasjerzy musz przekazywa sobie sumy
czstkowe przez telefon. Ta odlego zwiksza nieco opnienie w
komunikacji midzy kasjerami, ale jeli uda si zminimalizowa komunikacj,
to wszystko jest w porzdku. Jeli masz naprawd wielkie zamwienie,
wymagajce wszystkich kas jednoczenie, to przed obliczeniem zyskw
czasowych naley rozway opnienia komunikacji. W pewnych przypadkach
sklep moe posiada pojedyncze kasy (lub zgrupowania kas) rozmieszczone na
terenie caego sklepu -- kada kasa (lub zgrupowanie) musi komunikowa si
przez telefon. Jako e kady kasjer moe rozmawia z dowolnym innym, nie
jest istotne gdzie oni si znajduj.
<P>Przykad: Jedna lub wicej kopii UNIX lub NT z wieloma CPU na tej samej lub
innej pycie gwnej, porozumiewajcych si poprzez komunikaty.
<P>Powysze scenariusze, mimo e niedokadne, s dobym przykadem ogranicze
nakadanych na system rwnolegy. W przeciwiestwie do pojedynczego CPU (lub
kasy) komunikacja jest istotna.
<P>
<H2>4.3 Architektury przetwarzania rwnolegego</H2>

<P>Popularne metody i architektury przetwarzania rwnolegego s zaprezentowane
poniej. Mimo e opis ten nie jest pod adnym wzgldem wyczerpujcy, jest
jednak wystarczajcy do zrozumienia podstaw projektu Beowulf.
<P>
<H3>Architektury sprztowe</H3>

<P>
<P>Istniej dwa podstawowe sposoby czenia sprztu:
<P>
<OL>
<LI> Maszyny z pamici lokaln, komunikujce si przez komunikaty
(klastry Beowulf)</LI>
<LI> Maszyny z pamici dzielon, komunikujce si przez pami (maszyny
SMP)</LI>
</OL>
<P>Typowy Beowulf to zbir jednoprocesorowych maszyn poczonych przez szybk
sie Ethernet, a wic jest systemem z wasn pamici. System SMP to maszyna
z pamici dzielon, ktra moe zosta wykorzystana do przetwarzania
rwnolegego -- aplikacje rwnolege komunikuj si przez pami dzielon.
Tak jak w przykadzie sklepu, maszyny z pamici lokaln (pojedyncze kasy)
s skalowalne do duej liczby CPU, gdy liczba CPU maszyn z pamici dzielon
jest ograniczona przez pami.
<P>Jest jednak moliwe poczenie wielu maszyn z pamici dzielon aby utworzy
"hybrydow" maszyn z pamici dzielon. Te hybrydowe maszyny wygldaj dla
uytkownika jak pojedyncze, due maszyny SMP i czsto zwane s maszynami NUMA
(non uniform memory access -- nietypowy dostp do pamici), poniewa
globalna pami widoczna dla programisty i dzielona przez wszystkie CPU moe
by ukrywana. Jednak na pewnym poziomie maszyna NUMA musi przekazywa
wiadomoci pomidzy lokalnymi obszarami pamici dzielonej.
<P>Moliwe jest take podczenie maszyn SMP jako lokalnych wzw
obliczeniowych. Typowe pyty gwne KLASY I maj 2 lub 4 procesory, jest to
sposb zredukowania kosztw. Wewntrzny scheluder Linuxa okrela, w jaki
sposb te CPU s dzielone. W tym przypadku uytkownik nie moe okreli
odrbnego zadania dla konkretnego procesora SMP. Uytkownik moe jednak
rozpocz dwa niezalene procesy lub proces wielowtkowy i spodziewa si
poprawy wydajnoci w stosunku do systemu z pojedynczym CPU.
<P>
<H3>Programowe architektury API</H3>

<P>Istniej dwa podstawowe sposoby okrelania momentw zbienych w programie:
<OL>
<LI> Komunikaty wysyane midzy procesorami</LI>
<LI> Wtki systemu operacyjnego</LI>
</OL>
<P>Istniej inne metody, ale powysze s najszerzej wykorzystywane. Naley
zapamita, e sposb okrelania zbienoci nie musi zalee od warstwy
sprztowej. Zarwno komunikaty, jak i wtki mog zosta zaimplementowane w
systemach SMP, NUMA-SMP jak i klastrach -- mimo e, jak wyjaniono poniej,
istotnymi kwestiami s efektywno i przenono.
<P>
<H3>Komunikaty</H3>

<P>Z punktu widzenia historii, technologia przekazywania komunikatw
odzwierciedla projekty wczesnych komputerw rwnolegych z lokaln pamici.
Komunikaty wymagaj kopiowania danych, podczas gdy wtki korzystaj z danych
na miejscu. Tajno i szybko kopiowania komunikatw to wartoci
ograniczajce ten model. Komunikat jest stosunkowo prosty: jakie dane oraz
procesor docelowy. Najpopularniejsze API do przesyania komunikatw to:
<A HREF="http://www.epm.ornl.gov/pvm">PVM</A> lub 
<A HREF="http://www.mcs.anl.gov/Projects/mpi/index.html">MPI</A>.
Przekazywanie komunikatw moe zosta efektywnie zaimplementowane przy
wykorzystaniu wtkw, a komunikaty pracuj rwnie dobrze na maszynach SMP i
pomidzy klastrami maszyn. Zalet korzystania z komunikatw na maszynach
SMP, w przeciwiestwie do wtkw, jest to, e jeli zdecydujesz si na
korzystanie w przyszoci z klastrw, dodawanie maszyn i skalowanie aplikacji
bdzie bardzo atwe.
<P>
<H3>Wtki</H3>

<P>Wtki systemu operacyjnego zostay stworzone, poniewa projekty SMP
(symmetrical multiprocessing -- symetryczna wieloprocesowo) dopuszczay
bardzo szybk komunikacj poprzez pami dzielon, oraz synchronizacj
pomidzy zbienymi fragmentami programu. Wtki dziaaj bardzo dobrze na
systemie SMP, poniewa komunikuje si on poprzez pami dzielon. Z tego
powodu uytkownik musi oddzieli dane lokalne od globalnych, w przeciwnym
wypadku programy nie bd dziaa poprawnie. W przeciwiestwie do
komunikatw, wiele operacji kopiowania moe zosta wyeliminowanych przez
uycie wtkw, poniewa dane s dzielone pomidzy procesami (wtkami). Linux
wspomaga wtki POSIX. W przypadku wtkw problemem jest to, e trudno
rozszerzy ich zasig poza maszyn SMP oraz, poniewa dane j dzielone
pomidzy procesory, koherencja pamici podrcznej moe doprowadzi do
opnie. Efektywne rozcignicie wtkw poza granic SMP wymaga technologi
NUMA, ktra jest kosztowna i nie wspomagana bezporednio przez Linuxa.
Implementacja wtkw poprzez wiadomoci jest moliwa (
<A HREF="http://syntron.com/ptools/ptools_pg.htm">http://syntron.com/ptools/ptools_pg.htm</A>), ale wtki s czsto
nieefektywne gdy zaimplementowane przy uyciu komunikatw.
<P>Mona wycignc nastpujce wnioski jeli chodzi o wydajno:
<PRE>
          wydajno na     wydajno w     skalowalno
          maszynie SMP       klastrze
          -----------     ---------------  -----------
messages    dobra           najlepsza       najlepsza

threads     najlepsza        saba*          saba*

* wymaga kosztownej technologii NUMA.
</PRE>
<P>
<H3>Architektura aplikacji</H3>

<P>Aby uruchomi aplikacj rwnolegle na wielu CPU, musi ona zosta rozbita na
konkurencyjne czci. Standardowa jednoprocesorowa aplikacja nie bdzie
dziaa szybciej na wielu procesorach. Istniej pewne narzdzia i kompilatory,
ktre potrafi podzieli program, ale przeksztacenie kodu na rwnolegy nie
jest operacj "plug and play". Zalenie od aplikacji, moe to by proste,
ekstremalnie trudne a w pewnych przypadkach nawet niemoliwe, ze wzgldu na
zalenoci algorytmw.
<P>Zanim zostan omwione kwestie sprztowe, koncepcja musi zosta wprowadzona.
Before the software issues can be addressed the concept of Suitability 
needs to be introduced.
<P>
<H2><A NAME="suitability"></A> 4.4 Suitability</H2>

<P>Odpowiedzi na wikszo pyta dotyczcych przetwarzania rwnolegego jest:
<P>"Wszystko zaley od zastosowania."
<P>Zanim przejdziemy do tego tematu, naley dokona jeszcze jednego bardzo
wanego podziau -- rnicy pomidzy KONKURENCYJNYM i RWNOLEGYM. Dla celw
tej dyskusji zdefiniujemy te dwa pojcia nastpujco:
<P>KONKURENCYJNE czci programu, to te, ktre mog zosta wykonane niezalenie.
<P>RWNOLEGE czci programu, to te KONKURENCYJE czci, ktre s wykonywane
na osobnym procesorze w tym samym czasie.
<P>Rnica jest bardzo wana, poniewa KONKURENCJA to wasno programu, a
efektywna RWNOLEGO, to wano maszyny. Na og wykonywanie RWNOLEGE
powoduje przyspieszenie pracy. Czynnikiem ograniczajcym wydajno systemu
rwnolegego jest prdko komunikacji i opnienie pomidzy wzami
(opnienie wystpuje take w wielowtkowych aplikacji SMP, z powodu
koherencji pamici podrcznej). Wikszo programw testujcych wydajno
jest wysoce rwnolega, a komunikacja i opnienia nie s wskim gardem.
Ten tym zadania mona nazwa "typowo rwnolegym". Inne aplikacje nie s
takie proste i wywoanie KONKURENCYJNYCH czci programu RWNOLEGLE moe
spowolni go, zmniejszajc tym samym zysk z innych KONKURENCYJNYCH czci.
Mwic prosto, koszt czasu komunikacji musi zwrci si w oszczdnociach
czasu obliczenia, w przeciwnym wypadku RWNOLEGE wykonanie KONKURENCYJNEJ
czci jest nieefektywne.
<P>Zadaniem programisty jest stwierdzenie, ktre KONKURENCYJNE czci programu
POWINNY by wykonane RWNOLEGLE, a ktre NIE. Od odpowied na te pytania
zaley EFEKTYWNO aplikacji. Poniszy wykres podsumowuje sytuacj:
<P>
<PRE>



         | *
         | *
         | *
 %       | *
 zasto-  |  *
 sowa   |  *
         |  *
         |  *
         |    *
         |     *
         |      *
         |        ****
         |            ****
         |                ********************
         +-----------------------------------
          czas komunikacji/czas przetwarzania
</PRE>
<P>W idealnym komputerze rwnolegym, wskanik komunikacji/przetwarzania jest
rwny i wszystko, co jest KONKURENCYJNE moe zosta zaimplementowane
RWNOLEGLE. Niestety, rzeczywiste komputery rwnolege, wczajc w to
maszyny z pamici dzielon, podlegaj efektom pokazanym na wykresie.
Podczas projektowania Beowulfa, uytkownicy powinni zapamita ten wykres,
poniewa efektywno rwnolega zaley do wskanika czasu komunikacji do
czasu przetwarzania dla KONKRETNEGO KOMPUTERA RWNOLEGEGO. Aplikacje mog
by przenone, ale nie mona zagwarantowa e bd efektywne na innej
platformie.
<P>NA OGÓŁ NIE ISTNIEJE PRZENONY I EFEKTYWNY PROGRAM RWNOLEGY
<P>Jest jeszcze jedna konsekwencja powyszego wykresu. Jako e efektywno
zaley od wskanika komunikacji/przetwarzania, zmiana jedynie jednego
elementu wskanika nie musi koniecznie powodowa wzrostu szybkoci. Zmiana
prdkoci procesora, nie zmieniajc czasu komunikacji, moe mie nietypowy
wpyw na program. Na przykad podwojenie albo potrojenie prdkoci CPU,
zachowujc t sam prdko komunikacji, moe sprawi, e poprzednio
efektywne RWNOLEGE fragmenty programu stan si bardziej efektywne gdy
zostan uruchomione SEKWENCYJNIE. To znaczy uruchomienie poprzednio
RWNOLEGYCH fragmentw jako SEKWENCYJNE moe okaza si lepsze. Wykonywanie
nieefektywnych czci programu rwnolegle uniemoliwia uzyskanie maksymalnej
prdkoci. Tak wic dodajc szybszy procesor, moesz spowolni aplikacj
(CPU nie wykorzystuje swojej penej szybkoci).
<P>ZMIANA CPU NA SZYBSZY MOE SPOWOLNI APLIKACJ
<P>Podsumowujc, aby wiedzie, czy mona wykorzysta rodowisko rwnolege,
naley przyjrze si, czy konkretna maszyna pasuje do aplikacji. Musisz
wzi pod uwag wiele kwestii, takich jak prdko CPU, kompilator, API
przekazywania komunikatw, sie itd. Naley zauway, e zwyke profilowanie
aplikacji nie zamyka sprawy. Moesz zidentyfikowa fragment programu 
wymagajcy wielu oblicze, ale nie znasz kosztw komunikacji tego fragmentu.
Moe si zdarzy, e koszty komunikacji sprawi, e kod rwnolegy nie
bdzie efektywny.
<P>Ostatnia uwaga na temat pewnego niedomwienia. Czsto twierdzi si, e
program "jest RWNOLEGY", ale w rzeczywistoci jedynie zidentyfikowano
KONKURENCYJNE fragmenty. Z powodw podanych powyej program nie jest
RWNOLEGY. Efektywna RWNOLEGO jest wasnoci maszyny.
<P>
<P>
<H2>4.5 Pisanie i przenoszenie oprogramowania rwnolegego</H2>

<P>Gdy zdecydujesz, e potrzebujesz przetwarzania rwnolegego i chcesz
zaprojektowa i zbudowa Beowulfa, dobrym pomysem jest kilka chwil
zastanowienia nad aplikacj, z poszanowaniem wczeniejszych uwag.
<P>No og moesz zrobi dwie rne rzeczy:
<OL>
<LI>I dalej i skonstruowa Beowulfa KLASY I a nastpnie "dopasowa" do
niego swoj aplikacj, lub korzysta z istniejcej rwnolegej aplikacji o
ktrej wiesz, e pracuje na Beowulfie (ale pamitaj o kwestiach efektywnoci
i przenonoci poruszanych wczeniej).
</LI>
<LI>Przyjrze si aplikacjom ktre maj dziaa na Beowulfie i na ich
podstawie dokona wyboru sprztu i oprogramowania.</LI>
</OL>
<P>W kadym z przypadkw w pewnym momencie musisz zastanowi si nad kwestiami
efektywnoci. Na og powiniene zrobi trzy rzeczy:
<OL>
<LI>Wyznaczy konkurencyjne czci programu</LI>
<LI>Obliczy rwnoleg efektywno</LI>
<LI>Opisa konkurencyjne czci programu</LI>
</OL>
<P>Przyjrzyjmy si im po kolei.
<P>
<H3>Wyznaczanie konkurencyjnych czci programu</H3>

<P>Ten krok jest czsto nazywany "urwnolegleniem programu". Decyzje podejmiemy
dopiero w kroku 2. Teraz musisz jedynie wyznaczy zalenoci pomidzy danymi.
<P>Z praktycznego punktu widzenia, aplikacje mog wykazywa dwa typy
konkurencji: oblicze i wejcia/wyjcia. Mimo e w wielu wypadkach
konkurencje oblicze i wejcia/wyjcia s niezalene, to istniej aplikacje,
ktre wymagaj obu. Istniej narzdzia, ktre mog wykona analiz
konkurencji istniejcej aplikacji. Wiele z tych narzdzi jest projektowanych
dla FORTANa. S dwa powody dla ktrych uywa si FORTAN: historycznie
wikszo aplikacji obliczeniowych byo pisanych w FORTANie oraz jest
on atwiejszy w analizie. Jeli nie istniej adne narzdzia, to ten krok
moe okaza si do trudny dla istniejcych aplikacji.
<P>
<H3>Obliczanie efektywnoci rwnolegej</H3>

<P>Bez pomocy narzdzi, ten krok wymaga by uycia metody prb i bdw, lub po
prostu zgadywania. Jeli bierzesz pod uwag pojedyncz aplikacj, postaraj
si okreli czy jest ograniczona przez CPU (granica obliczeniowa) lub przez
twardy dysk (granica wejcia/wyjcia). Wymagania Beowulfa mog by do
rne, zalenie od potrzeb. Na przykad problem ograniczony obliczeniowo
moe wymaga kilku bardzo szybkich CPU i szybkiej sieci z maym opnieniem,
gdy problem ograniczony przez wejcie/wyjcie moe dziaa lepiej na
wolniejszym CPU i szybkiej sieci Ethernet.
<P>To zalecenem czsto zaskakuje wiele osb, poniewa zwykle uwaa si, e
szybszy procesor jest zawsze lepszy. Jest to prawd jeli dysponuje si
nieograniczonym budetem, jednak w przypadku prawdziwych systemw
powinno si minimalizowa koszty. Dla problemw ograniczonych przez
wejcie/wyjcie istnieje prosta zasada (zwana Prawem Eadline'a-Dedkova)
ktra jest do pomocna:
<P>Z dwch komputerw rwnolegych o tej samym zsumowanym wskaniku wydajnoci
CPU lepsz wydajno dla aplikacji z dominujcymi operacjami wejcia/wyjcia
bdzie mia ten, ktry posiada wolniejsze procesory (i prawdopodobnie take
wolniejsz komunikacj midzyprocesorow).
<P>Dowd tego prawa wychodzi poza zakres tego dokumenty, jednak moe
zainteresowa ci dokument <I>Performance Considerations for I/O-Dominant
Applications on Parallel Computers</I> (w formacie Postscript 109K) 
<A HREF="ftp://www.plogic.com/pub/papers/exs-pap6.ps">(ftp://www.plogic.com/pub/papers/exs-pap6.ps)</A><P>Gdy ju okrelie typ konkurencji aplikacji, musisz obliczy jak efektywna
bdzie ona rwnolegle. Patrz dzia 
<A HREF="#software">Oprogramowanie</A>
aby znale opis narzdzi programowych.
<P>W razie nieobecnoci narzdzi, moesz prbowa po prostu zgadn. Jeli
ptla obliczeniowa trwa minuty, a dane mog zosta przesane w cigu sekund,
to prawdopodobnie jest to dobry kandydat na program rwnolegy. Ale
pamitaj, jeli rozbijesz 16-minutow ptle na 32 czci, a transfer danych
wymaga kilku sekund, to zaczyna robi si ciasno.
<P>
<H3>Opisywanie konkurencyjnych czci programu</H3>

<P>Istnieje kilka sposobw opisu konkurencyjnych czci programu:
There are several ways to describe concurrent parts of your program:
<OL>
<LI>Wyrane wykonanie rwnolege</LI>
<LI>Domniemane wykonanie rwnolege</LI>
</OL>
<P>Te dwa sposoby rni si gwnie tym, e rwnolego "wyrana" jest
okrelana przez uytkownika, a domniemana jest okrelana przez kompilator.
<P>
<H3>Metody wyrane</H3>

<P>S to po prostu metody, w ktrych uytkownik musi zmodyfikowa kod rdowy
specjalnie dla komputera rwnolegego. Uytkownik musi doda obsug
komunikatw korzystajc z 
<A HREF="http://www.epm.ornl.gov/pvm">PVM</A> lub 
<A HREF="http://www.mcs.anl.gov/Projects/mpi/index.html">MPI</A>,
albo wtkw korzystajc z wtkw POSIX (pamitaj jednak e wtki nie
dziaaj na komputerach SMP).
<P>Metody wyrane s bardzo trudne w implementacji i poprawianiu bdw.
Uytkownicy najczciej osadzaj wyrane wywoania funkcji w standardowym
kodzie rdowym FORTAN 77 lub C/C++. Biblioteka MPI dodaje pewne funkcje
uatwiajce implementacj standardowych rwnolegych metod (np. funkcje
scatter/gather). Dodatkowo moliwe jest take uycie standardowych bibliotek
napisanych dla rwnolegych komputerw. Pamitaj jednak, e przenono nie
idzie w parze z efektywnoci.
<P>Ze wzgldw historycznych, wikszo programw operujcych na liczbach zostao
napisanych w FORTANie. Z tego powodu FORTAN posiada najwiksze wsparcie
(narzdzia, biblioteki itp.) dla przetwarzania rwolegego. Teraz wielu
programistw korzysta z C, lub przepisuje istniejce programy FORTAN w C,
jako e C dziaa szybciej. Moe jest prawd, e C jest najblisze
uniwersalnemu kodowi maszynowemu, posiada jednak kilka powanych wad. Uycie
wskanikw w C znacznie utrudnia wyznaczanie zalenoci pomidzy danymi.
Automatyczna analiza wskanikw jest bardzo trudna. Jeli dysponujesz
gotowym programem w FORTANie i mylisz, e mgby uczyni go rwnolegym w
przyszoci -- NIE KONWERTUJ GO NA C!
<P>
<H3>Domniemane metody</H3>

<P>Domniemane metody to te, w ktrych uytkownik pozostawia niektre (lub
wszystkie) decyzje dotyczce rwnolegoci kompilatorowi. Przykadem jest
FORTAN 90, High Performance FORTAN, Bulk Synchronous Parallel (BSP) oraz
caa lista metod rozwijanych obecnie.
<P>Metody domylne wymagaj od uytkownika podania pewnych informacji na temat
konkurencyjnej natury aplikacji, ale to kompilator podejmie nastpnie
decyzje jak wykonywa t konkurencj rwnolegle. Te metody gwarantuj pewien
stopie przenonoci i efektywnoci, jednak cigle nie istnieje najlepszy
sposb opisu problemu konkurencyjnego dla komputera rwnolegego.
<P>
<H2><A NAME="s5">5. Zasoby dotyczce Beowulfa</A></H2>

<P>
<P>
<H2>5.1 Punkty startowe</H2>

<P>
<P>
<UL>
<LI>Lista dyskusyjna Beowulf. Aby si zapisa napisz list do 
<A HREF="mailto:beowulf-request@cesdis.gsfc.nasa.gov">beowulf-request@cesdis.gsfc.nasa.gov</A> ze sowem
<I>subscribe</I> w treci listu.
</LI>
<LI>Beowulf Homepage 
<A HREF="http://www.beowulf.org">http://www.beowulf.org</A>
</LI>
<LI>Extreme Linux 
<A HREF="http://www.extremelinux.org">http://www.extremelinux.org</A>
</LI>
<LI>Extreme Linux Software from Red Hat 
<A HREF="http://www.redhat.com/extreme">http://www.redhat.com/extreme</A>
</LI>
</UL>
<P>
<P>
<H2>5.2 Documentation</H2>

<P>
<P>
<UL>
<LI>Najnowsza wersja Beowulf HOWTO 
<A HREF="http://www.sci.usq.edu.au/staff/jacek/beowulf">http://www.sci.usq.edu.au/staff/jacek/beowulf</A>.
</LI>
<LI>Building a Beowulf System 
<A HREF="http://www.cacr.caltech.edu/beowulf/tutorial/building.html">http://www.cacr.caltech.edu/beowulf/tutorial/building.html</A>
</LI>
<LI>Jacek's Beowulf Links 
<A HREF="http://www.sci.usq.edu.au/staff/jacek/beowulf">http://www.sci.usq.edu.au/staff/jacek/beowulf</A>.
</LI>
<LI>Beowulf Installation and Administration HOWTO (DRAFT) 
<A HREF="http://www.sci.usq.edu.au/staff/jacek/beowulf">http://www.sci.usq.edu.au/staff/jacek/beowulf</A>.
</LI>
<LI>Linux Parallel Processing HOWTO 
<A HREF="http://yara.ecn.purdue.edu/~pplinux/PPHOWTO/pphowto.html">http://yara.ecn.purdue.edu/~pplinux/PPHOWTO/pphowto.html</A>
</LI>
</UL>
<P>
<P>
<H2><A NAME="papers"></A> 5.3 Dokumenty</H2>

<P>
<P>
<UL>
<LI>Chance Reschke, Thomas Sterling, Daniel Ridge, Daniel Savarese,
Donald Becker, and Phillip Merkey <I>A Design Study of Alternative
Network Topologies for the Beowulf Parallel Workstation</I>.
Proceedings Fifth IEEE International Symposium on High Performance
Distributed Computing, 1996. 
<A HREF="http://www.beowulf.org/papers/HPDC96/hpdc96.html">http://www.beowulf.org/papers/HPDC96/hpdc96.html</A>

</LI>
<LI>Daniel Ridge, Donald Becker, Phillip Merkey, Thomas Sterling
Becker, and Phillip Merkey. <I>Harnessing the Power of Parallelism in
a Pile-of-PCs</I>.  Proceedings, IEEE Aerospace, 1997. 
<A HREF="http://www.beowulf.org/papers/AA97/aa97.ps">http://www.beowulf.org/papers/AA97/aa97.ps</A>

</LI>
<LI>Thomas Sterling, Donald J. Becker, Daniel Savarese, Michael
R. Berry, and Chance Res. <I>Achieving a Balanced Low-Cost
Architecture for Mass Storage Management through Multiple Fast
Ethernet Channels on the Beowulf Parallel Workstation</I>.
Proceedings, International Parallel Processing Symposium, 1996.
<A HREF="http://www.beowulf.org/papers/IPPS96/ipps96.html">http://www.beowulf.org/papers/IPPS96/ipps96.html</A>

</LI>
<LI>Donald J. Becker, Thomas Sterling, Daniel Savarese, Bruce
Fryxell, Kevin Olson. <I>Communication Overhead for Space Science
Applications on the Beowulf Parallel Workstation</I>.
Proceedings,High Performance and Distributed Computing, 1995.
<A HREF="http://www.beowulf.org/papers/HPDC95/hpdc95.html">http://www.beowulf.org/papers/HPDC95/hpdc95.html</A>


</LI>
<LI>Donald J. Becker, Thomas Sterling, Daniel Savarese, John
E. Dorband, Udaya A. Ranawak, Charles V.  Packer. <I>BEOWULF: A
PARALLEL WORKSTATION FOR SCIENTIFIC COMPUTATION</I>.  Proceedings,
International Conference on Parallel Processing, 95.
<A HREF="http://www.beowulf.org/papers/ICPP95/icpp95.html">http://www.beowulf.org/papers/ICPP95/icpp95.html</A>
</LI>
<LI>Dokumenty na stronie Beowulf 
<A HREF="http://www.beowulf.org/papers/papers.html">http://www.beowulf.org/papers/papers.html</A>

</LI>
</UL>
<P>
<P>
<H2><A NAME="software"></A> 5.4 Oprogramowanie</H2>

<P>
<UL>
<LI>PVM - Parallel Virtual Machine 
<A HREF="http://www.epm.ornl.gov/pvm/pvm_home.html">http://www.epm.ornl.gov/pvm/pvm_home.html</A>


</LI>
<LI>LAM/MPI (Local Area Multicomputer / Message Passing Interface)
<A HREF="http://www.mpi.nd.edu/lam">http://www.mpi.nd.edu/lam</A>
</LI>
<LI>BERT77 - FORTRAN program konwertujcy 
<A HREF="http://www.plogic.com/bert.html">http://www.plogic.com/bert.html</A>
</LI>
<LI>Oprogramowanie ze strony Beowulf Project 
<A HREF="http://beowulf.gsfc.nasa.gov/software/software.html">http://beowulf.gsfc.nasa.gov/software/software.html</A>
</LI>
<LI>Jacek's Beowulf-utils 
<A HREF="ftp://ftp.sci.usq.edu.au/pub/jacek/beowulf-utils">ftp://ftp.sci.usq.edu.au/pub/jacek/beowulf-utils</A>
</LI>
<LI>bWatch - program monitorujcy klaster 
<A HREF="http://www.sci.usq.edu.au/staff/jacek/bWatch">http://www.sci.usq.edu.au/staff/jacek/bWatch</A>
</LI>
</UL>
<P>
<P>
<P>
<H2>5.5 Maszyny Beowulf</H2>

<P>
<UL>
<LI>Avalon skada si z 140 procesorw Alpha, 36GB RAM i jest
prawdopodobnie najszybsz maszyn Beowulf, osigajc prdko 47.7Gflops i
zajmujc 144-te miejsce w rankingu Top 500.
<A HREF="http://swift.lanl.gov/avalon/">http://swift.lanl.gov/avalon/</A>
</LI>
<LI>Megalon-A Massively PArallel CompuTer Resource (MPACTR) skada si z
14 poczwrnych wzw Pentium Pro 200 i 14 GB RAM.  
<A HREF="http://megalon.ca.sandia.gov/description.html">http://megalon.ca.sandia.gov/description.html</A>
</LI>
<LI>theHIVE - Highly-parallel Integrated Virtual Environment jest innym
szybkim superkomputerem Beowulf. theHIVE skada si z 64 wzw, 128 CPU
posiadajc w sumie 4GB RAM. 
<A HREF="http://newton.gsfc.nasa.gov/thehive/">http://newton.gsfc.nasa.gov/thehive/</A>
</LI>
<LI>Topcat to o wiele mniejsza maszyna, skada si z 16 CPU i 1.2GB RAM.
<A HREF="http://www.sci.usq.edu.au/staff/jacek/topcat">http://www.sci.usq.edu.au/staff/jacek/topcat</A>
</LI>
<LI>MAGI cluster - to bardzo interesujca strona z wieloma dobrymi
odnonikami. 
<A HREF="http://noel.feld.cvut.cz/magi/">http://noel.feld.cvut.cz/magi/</A>
</LI>
</UL>
<P>
<P>
<P>
<H2>5.6 Inne interesujce strony</H2>

<P>
<P>
<UL>
<LI>SMP Linux 
<A HREF="http://www.linux.org.uk/SMP/title.html">http://www.linux.org.uk/SMP/title.html</A>
</LI>
<LI>Paralogic - kup Beowulfa 
<A HREF="http://www.plogic.com">http://www.plogic.com</A>
</LI>
</UL>
<P>
<H2><A NAME="history"></A> 5.7 Historia</H2>

<P>
<UL>
<LI>Legends - Beowulf  
<A HREF="http://legends.dm.net/beowulf/index.html">http://legends.dm.net/beowulf/index.html</A>
</LI>
<LI>The Adventures of Beowulf  
<A HREF="http://www.lnstar.com/literature/beowulf/beowulf.html">http://www.lnstar.com/literature/beowulf/beowulf.html</A>
</LI>
</UL>
<P>
<H2><A NAME="s6">6. Kod rdowy</A></H2>

<P>
<H2><A NAME="sum"></A> 6.1 sum.c</H2>

<P>
<PRE>
/* Jacek Radajewski jacek@usq.edu.au */
/* 21/08/1998 */

#include &lt;stdio.h>
#include &lt;math.h>

int main (void) {

  double result = 0.0;
  double number = 0.0;
  char string[80];
  

  while (scanf("%s", string) != EOF) {

    number = atof(string);
    result = result + number;
  }
    
  printf("%lf\n", result);
  
  return 0;
  
}
</PRE>
<P>
<H2><A NAME="sigmasqrt"></A> 6.2 sigmasqrt.c</H2>

<P>
<PRE>
/* Jacek Radajewski jacek@usq.edu.au */
/* 21/08/1998 */

#include &lt;stdio.h>
#include &lt;math.h>

int main (int argc, char** argv) {

  long number1, number2, counter;
  double result;
  
  if (argc &lt; 3) {
    printf ("usage : %s number1 number2\n",argv[0]);
    exit(1);
  } else {
    number1 = atol (argv[1]);
    number2 = atol (argv[2]);
    result = 0.0;
  }

  for (counter = number1; counter &lt;= number2; counter++) {
    result = result + sqrt((double)counter);
  }
    
  printf("%lf\n", result);
  
  return 0;
  
}
</PRE>
<P>
<P>
<H2><A NAME="prun"></A> 6.3 prun.sh</H2>

<P> 
<P>
<PRE>
#!/bin/bash
# Jacek Radajewski jacek@usq.edu.au
# 21/08/1998

export SIGMASQRT=/home/staff/jacek/beowulf/HOWTO/example1/sigmasqrt

# $OUTPUT must be a named pipe
# mkfifo output

export OUTPUT=/home/staff/jacek/beowulf/HOWTO/example1/output

rsh scilab01 $SIGMASQRT         1  50000000 > $OUTPUT &lt; /dev/null&amp;
rsh scilab02 $SIGMASQRT  50000001 100000000 > $OUTPUT &lt; /dev/null&amp;
rsh scilab03 $SIGMASQRT 100000001 150000000 > $OUTPUT &lt; /dev/null&amp;
rsh scilab04 $SIGMASQRT 150000001 200000000 > $OUTPUT &lt; /dev/null&amp;
rsh scilab05 $SIGMASQRT 200000001 250000000 > $OUTPUT &lt; /dev/null&amp;
rsh scilab06 $SIGMASQRT 250000001 300000000 > $OUTPUT &lt; /dev/null&amp;
rsh scilab07 $SIGMASQRT 300000001 350000000 > $OUTPUT &lt; /dev/null&amp;
rsh scilab08 $SIGMASQRT 350000001 400000000 > $OUTPUT &lt; /dev/null&amp;
rsh scilab09 $SIGMASQRT 400000001 450000000 > $OUTPUT &lt; /dev/null&amp;
rsh scilab10 $SIGMASQRT 450000001 500000000 > $OUTPUT &lt; /dev/null&amp;
rsh scilab11 $SIGMASQRT 500000001 550000000 > $OUTPUT &lt; /dev/null&amp;
rsh scilab12 $SIGMASQRT 550000001 600000000 > $OUTPUT &lt; /dev/null&amp;
rsh scilab13 $SIGMASQRT 600000001 650000000 > $OUTPUT &lt; /dev/null&amp;
rsh scilab14 $SIGMASQRT 650000001 700000000 > $OUTPUT &lt; /dev/null&amp;
rsh scilab15 $SIGMASQRT 700000001 750000000 > $OUTPUT &lt; /dev/null&amp;
rsh scilab16 $SIGMASQRT 750000001 800000000 > $OUTPUT &lt; /dev/null&amp;
rsh scilab17 $SIGMASQRT 800000001 850000000 > $OUTPUT &lt; /dev/null&amp;
rsh scilab18 $SIGMASQRT 850000001 900000000 > $OUTPUT &lt; /dev/null&amp;
rsh scilab19 $SIGMASQRT 900000001 950000000 > $OUTPUT &lt; /dev/null&amp;
rsh scilab20 $SIGMASQRT 950000001 1000000000 > $OUTPUT &lt; /dev/null&amp;
</PRE>
<P>
<P>
</BODY>
</HTML>