2.3¡¡DISTRIBUTEÖ¸Áî

DISTRIBUTEÖ¸ÁîÖ¸¶¨ÁËÔÚÒ»¸ö´¦ÀíÆ÷ÅÅÁÐÖÐÊý¾Ý¶ÔÏóÏò³éÏó´¦ÀíÆ÷µÄÓ³Éä. ÀýÈç:

¡¡¡¡¡¡¡¡¡¡¡¡REAL¡¡SALAMI(10000)
  ¡¡!HPF$¡¡ DISTRIBUTE¡¡SALAMI(BLOCK)

Ö¸Ã÷Êý×éSALAMIÓ¦±»·ÖÅäµ½Ò»×é³éÏó´¦ÀíÆ÷ÉÏ, ·ÖÅäµÄ·½Ê½Êǽ«ÆäͳһÇгɾßÓÐÁ¬ÐøÔªËصĿé. Èç¹ûÓÐ50¸ö´¦ÀíÆ÷, ÔòÖ¸ÁʾÊý×éËù»®·Ö³ÉµÄ×é, ÿ×éÓ¦ÓÐ200¸öÔªËØ, ¼´SALAMI(1:200)Ó³Éäµ½µÚÒ»¸ö´¦ÀíÆ÷ÉÏ, SALAMI(201:400)Ó³Éäµ½µÚ¶þ¸ö´¦ÀíÆ÷ÉÏ, µÈµÈ. Èç¹û½öÓÐÒ»¸ö´¦ÀíÆ÷, ÔòÕû¸öÊý×é×÷Ϊµ¥Ò»µÄÒ»¸ö¾ßÓÐ10000¸öÔªËصĿ鱻ӳÉäµ½¸Ã´¦ÀíÆ÷ÉÏ.

¿éµÄ´óС¿ÉÒÔÏÔʽָ¶¨:

¡¡¡¡¡¡¡¡¡¡REAL¡¡WEISSWURST(10000)
¡¡!HPF$ ¡¡DISTRIBUTE¡¡WEISSWURST(BLOCK(256))

ËüÖ¸Ã÷Ç¡ºÃ¾ßÓÐ256¸öÔªËصÄ×éÓ¦±»Ó³Éäµ½Á¬ÐøµÄ³éÏó´¦ÀíÆ÷ÉÏ. (Èç¹ûÖ¸ÁîÂú×ãÌõ¼þ, Ôò±ØÐëÓÐÖÁÉÙ[10000/256]=40¸ö³éÏó´¦ÀíÆ÷. µÚËÄÊ®¸ö´¦ÀíÆ÷½«°üº¬Ò»¸ö½öÓÐ16¸öÔªËصIJ¿·Ö¿é, ¼´WEISSWURST(9985:10000).)

HPF»¹ÌṩÁËÒ»ÖÖÑ­»··ÖÅä¸ñʽ:

¡¡¡¡¡¡¡¡¡¡REAL¡¡DECK_OF_CARDS(52)
¡¡!HPF$¡¡ DISTRIBUTE¡¡DECK_OF_CARDS(CYCLIC)

Èç¹ûÓÐ4¸ö³éÏó´¦ÀíÆ÷, ÔòµÚÒ»¸ö´¦ÀíÆ÷½«°üº¬DECK_OF_CARDS(1:49:4), µÚ¶þ¸ö´¦ÀíÆ÷½«°üº¬DECK_OF_CARDS(2:50:4), µÚÈý¸ö´¦ÀíÆ÷½«°üº¬DECK_OF_CARDS(3:51:4), ͬʱµÚËĸö´¦ÀíÆ÷½«°üº¬DECK_OF_CARDS(4:52:4). Á¬ÐøµÄÊý×éÔªËØÒÔÑ­»·Íù¸´µÄ·½Ê½±»·ÖÅäµ½Á¬ÐøµÄ³éÏó´¦ÀíÆ÷ÖÐ.

¿É¶Ô¶àάÊý×éµÄÿһά·Ö±ðÖ¸¶¨·ÖÅä:

¡¡¡¡¡¡¡¡¡¡¡¡INTEGER¡¡CHESS_BOARD(8,8), GO_BOARD(19,19)
¡¡¡¡!HPF$¡¡ DISTRIBUTE¡¡CHESS_BOARD(BLOCK, BLOCK)
¡¡¡¡!HPF$¡¡ DISTRIBUTE¡¡GO_BOARD(CYCLIC, *)

CHESS_BOARDÊý×é±»»®·ÖΪÁ¬ÐøµÄ¾ØÐοé, ÕâЩ¿é½«±»·ÖÅäµ½Ò»¸ö¶þάµÄ³éÏó´¦ÀíÆ÷ÅÅÁÐÖÐ. GO_BOARDÊý×齫ÈÃËüµÄ¸÷ÐÐÔÚÒ»¸öһά³éÏó´¦ÀíÆ÷ÅÅÁÐÖÐÑ­»··ÖÅä. ("*"Ö¸Ã÷GO_BOARDÑØËüµÄµÚ¶þ¸öÖáÏß²»·ÖÅä; ÕâÑù½«°ÑÒ»¸öÕûÐÐ×÷Ϊһ¸ö¶ÔÏó·ÖÅä.ÓÐʱ°ÑÕâÖÖ·½Ê½½Ð×ö"on-processor"·ÖÅä)

DISTRIBUTEÖ¸ÁîÖ»ÄܳöÏÖÔÚ×÷ÓÃÓòµ¥ÔªµÄ˵Ã÷²¿·Ö²¢¿ÉÒÔ½ö°üº¬Ò»¸öspecification-expr×÷ΪBLOCK»òCYCLICÑ¡ÏîµÄ²ÎÊý.

DISTRIBUTEÖ¸ÁîµÄÐÎʽ»¯Óï·¨ÊÇ:

H205¡¡distribute-directive¡¡¡¡is¡¡¡¡DISTRIBUTE¡¡distributee¡¡dist-directive-stuff
H206¡¡dist-directive-stuff ¡¡ is¡¡¡¡dist-format-clause[dist-onto-clause]
H207¡¡dist-attribute-stuff¡¡¡¡is ¡¡ dist-directive-stuff
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡or¡¡¡¡dist-onto-clause
H208¡¡distributee¡¡¡¡¡¡¡¡¡¡¡¡ is¡¡¡¡object-name
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡or¡¡¡¡template-name
H209¡¡dist-format-clause ¡¡¡¡ is¡¡¡¡(dist-format-list)
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡or¡¡¡¡*(dist-format-list)
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ¡¡¡¡ or¡¡¡¡*
H210¡¡dist-format¡¡¡¡¡¡¡¡¡¡¡¡ is¡¡¡¡ BLOCK[(int-expr)]
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ or¡¡¡¡CYCLIC[(int-expr)]
¡¡¡¡¡¡¡¡ ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ or¡¡¡¡*
H211¡¡dist-onto-clause ¡¡ ¡¡¡¡is ¡¡ ONTO dist-target
H212¡¡dist-target¡¡¡¡¡¡¡¡¡¡¡¡ is ¡¡ processor-name
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡or¡¡¡¡* processor-name
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ¡¡ or¡¡¡¡*

Ϊ±£Ö¤ÍêÕûÐÔ, ÕâÀï¸ø³öÁËÍêÕûµÄÓï·¨. µ«ÆäÖеÄһЩÐÎʽ½«½öÔÚµÚËĽÚÌÖÂÛ. ÕâЩ"¹ý³Ì¼ä"ÐÎʽÊÇ:

Ô¼Êø: ±»µ±×÷·ÖÅä×Ó(distributee)¶øÌáµ½µÄobject-name±ØÐëÊÇÒ»¸ö¼òµ¥µÄÃû×Ö, ²»ÄÜÊÇÒ»¸ö×Ó¶ÔÏóָʾÆ÷»òÒ»¸öÔªËØÃû(component-name)

Ô¼Êø: ±»µ±×÷·ÖÅä×Ó(distributee)¶øÌáµ½µÄobject-name²»ÄÜ×÷Ϊ¶Ô×¼×Ó(alignee)³öÏÖ.

Ô¼Êø: ±»µ±×÷·ÖÅä×Ó(distributee)¶øÌáµ½µÄobject-name²»ÄÜÓÐPOINTERÊôÐÔ.

Ô¼Êø: Èç¹ûÖ¸¶¨ÁËÒ»¸ödist-format-list, ÔòËüµÄ³¤¶È±ØÐëÓëÿ¸ödistributeeµÄάÊýÏàµÈ.

Ô¼Êø: Èç¹ûÒ»¸ödist-format-listºÍÒ»¸öprocessors-nameͬʱ³öÏÖ, Ôòdist-format-listÖÐÄÇЩ²»ÊÇ"*"µÄÔªËظöÊý±ØÐëÓëËùÃüÃûµÄ´¦ÀíÆ÷ÅÅÁеÄάÊýÏàµÈ.

Ô¼Êø: Èç¹û³öÏÖÁËprocessors-nameµ«Ã»³öÏÖdist-format-list, Ôòÿ¸ödistributeeµÄάÊý±ØÐëÓëËùÃüÃûµÄ´¦ÀíÆ÷ÅÅÁеÄάÊýÏàµÈ.

Ô¼Êø: Èç¹ûÒ»¸öDISTRIBUTEÖ¸ÁîÖÐÎÞÂÛdist-format-clause»òdist-target¶¼ÊÇÒÔ"*"¿ªÊ¼µÄ, ÿ¸ödistributee±ØÐëÊÇÒ»¸öÑÆÔª

Ô¼Êø: ³öÏÖÔÚDISTRIBUTEÖ¸ÁîµÄdist-formatÖеÄÈκÎint-expr¶¼±ØÐëÊÇÒ»¸ö˵Ã÷±í´ïʽ(specification-expr)

¶ÔÓû§µÄ½¨Òé: ÉÏÃæµÄһЩԼÊøÔÚËùÈϿɵÄÀ©Õ¹Öб»·Å¿íÁË(¼ûµÚÆß½Ú): µ¼³öÀàÐÍ(derived type)ÔªËصÄÓ³Éä(·Å¿íÁËÔ¼Êø1), Ö¸ÕëµÄÓ³Éä(·Å¿íÁËÔ¼Êø3ºÍ7)ÒÔ¼°Êý¾Ý¶ÔÏóµÄÖØÓ³Éä(·Å¿íÁËÔ¼Êø8)

×¢ÒâDISTRIBUTEÖ¸ÁîµÄ¿ÉÄÜÐÎʽ:

¡¡!HPF$¡¡DISTRIBUTE¡¡dist-attribute-stuff¡¡: ¡¡distributee-list

Ëü×÷Ϊһ¸öºÏ³ÉÖ¸Áî(combined-directive)±»Óï·¨H201Ëù¸²¸Ç.

Àý×Ó:

¡¡¡¡!HPF$¡¡DISTRIBUTE¡¡D1(BLOCK)
¡¡¡¡!HPF$¡¡DISTRIBUTE¡¡(BLOCK, *, BLOCK)¡¡ONTO¡¡SQUARE : : D2,D3,D4

ÏÂÃæ¸ø³öÁËdist-formatÈ¡ÉáµÄÒâÒå.

¶¨ÒåÉÏÏÞ³ýº¯ÊýCD(J,K)=(J+K-1)/K(ʹÓÃFortranÕûÊý½ØβÔËËã)

¶¨ÒåÉÏÏÞÓàÊýº¯ÊýCR(J,K)=J-K*CD(J,K)

×÷Ϊdist-target³öÏֵĴ¦ÀíÆ÷ÅÅÁеĸ÷ά°´´Ó×óµ½ÓÒµÄ˳ÐòÓëdistributeeÖÐdist-format²»Îª"*"µÄÄÇЩάÏà¶ÔÓ¦. ÔÚÉÏÃæµÄÀý×ÓÖÐ, ´¦ÀíÆ÷ÅÅÁÐSQUARE±ØÐëÊǶþάµÄ; ËüµÄµÚһά¶ÔÓ¦ÓÚD2, D3ºÍD4µÄµÚһά¶øËüµÄµÚ¶þάÔò¶ÔÓ¦ÓÚD2, D3ºÍD4µÄµÚÈýά.

ÁîdÊÇdistributeeijһάµÄ´óСÇÒpÊÇ´¦ÀíÆ÷ÅÅÁÐÏàӦάµÄ´óС. Ϊ¼ò»¯Æð¼û, ¼Ù¶¨ËùÓÐάµÄϽ綼ÊÇ1.ÔòBLOCK(m)Òâζ×ÅÈôÒ»¸öͨÐÅ×ÓÄÇһάµÄË÷ÒýÖµÊÇj, µ±½«¸ÃλÖÃÓ³Éäµ½Ò»¸ö³éÏó´¦ÀíÆ÷ʱ, ´¦ÀíÆ÷ÅÅÁÐÏàӦάµÄË÷ÒýÖµÊÇCD(j,m) (×¢Òâm*p>=d±ØÐëΪÕæ), ͬʱÔÚËùÓ³Éäµ½µÄÄǸö³éÏó´¦ÀíÆ÷ÉϵÄλÖúÅÊÇm+CR(j,m). ³éÏó´¦ÀíÆ÷ÖиÃÖáÉÏdistributeeµÄµÚÒ»¸öλÖúÅÊÇ1+m*(k-1).

¿éµÄ´óСm±ØÐëÊÇÒ»¸öÕýÕûÊý.

BLOCKµÄÒâÒåµÈͬÓÚBLOCK(CD(d,p)).

CYCLIC(m)Òâζ×ÅÈôÒ»¸öͨÐÅ×ÓÄÇһάµÄË÷ÒýÖµÊÇj, µ±½«¸ÃλÖÃÓ³Éäµ½Ò»¸ö³éÏó´¦ÀíÆ÷ʱ, ´¦ÀíÆ÷ÅÅÁÐÏàӦάµÄË÷ÒýÖµÊÇ1+MODULO(CD(j,m)-1,p). ³éÏó´¦ÀíÆ÷ÖиÃÖáÉÏdistributeeµÄµÚÒ»¸öλÖúÅÊÇ1+m*(k-1).

¿éµÄ´óСm±ØÐëÊÇÒ»¸öÕýÕûÊý.

CYCLICµÄÒâÒåµÈͬÓÚCYCLIC(1).

µ±m*p>=dʱ, CYCLIC(m)ºÍBLOCK(m)±íʾͬÑùµÄ·ÖÅä, µ«ÊÇBLOCK(m)ÁíÍ⻹Ðû³Æ¸Ã·ÖÅ佫²»ÒÔÑ­»·(cyclic)µÄ·½Ê½¾í»Ø(wrap around). Èç¹ûm²»Êdz£Êý, Ôò±àÒëÆ÷¾Í²»ÄÜÔÚ±àÒëʱȷ¶¨ÊÇ·ñ¾í»Ø. ×¢Òâ: ³ý·Çp>=d, ·ñÔòCYCLICºÍBLOCK(ÎÞ²ÎÊý±í´ïʽ)²»±íʾͬÑùµÄ·ÖÅä. ÁíÍâ, ÎÒÃÇ»¹¿É¿´µ½Ò»ÖÖÍË»¯µÄÇéÐÎ, ÔÚ¸ÃÇéÐÎÖÐ, ¿éµÄ´óСΪ1, ÇÒ·ÖÅä²»¾í»Ø.

¼Ù¶¨ÎÒÃÇÓÐ16¸ö³éÏó´¦ÀíÆ÷, ÇÒÊý×éµÄ³¤¶ÈΪ100:

¡¡!HPF$¡¡PROCESSORS¡¡SEDECIM(16)¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ REAL¡¡CENTURY(100)

ÒÔBLOCK·½Ê½·ÖÅäÊý×é(ÔÚ´ËÇéÐÎÏÂ, BLOCKµÈ¼ÛÓÚBLOCK(7))

¡¡!HPF$¡¡DISTRIBUTE¡¡CENTURY(BLOCK)¡¡ONTO¡¡SEDECIM

Ëùµ¼ÖµÄÊý×éÔªËØÏò³éÏó´¦ÀíÆ÷µÄÓ³ÉäÈçÏÂËùʾ:

¡¡¡¡¡¡ ¡¡¡¡¡¡¡¡ 1¡¡ 2 ¡¡3 ¡¡4 ¡¡5 ¡¡6 ¡¡7 ¡¡8 ¡¡9¡¡10¡¡11¡¡12¡¡13¡¡14¡¡15 ¡¡16

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 ¡¡
2 9 16 23 30 37 44 51 58 65 72 79 86 93 100 ¡¡
3 10 17 24 31 38 45 52 59 66 73 80 87 94 ¡¡ ¡¡
4 11 18 25 32 39 46 53 60 67 74 81 88 95 ¡¡ ¡¡
5 12 19 26 33 40 47 54 61 68 75 82 89 96 ¡¡ ¡¡
6 13 20 27 34 41 48 55 62 69 76 83 90 97 ¡¡ ¡¡
7 14 21 28 35 42 49 56 63 70 77 84 91 98 ¡¡ ¡¡

ÒÔBLOCK(8)·½Ê½·ÖÅäÊý×é

¡¡!HPF$¡¡DISTRIBUTE¡¡CENTURY(BLOCK(8))¡¡ONTO¡¡SEDECIM

Ëùµ¼ÖµÄÊý×éÔªËØÏò³éÏó´¦ÀíÆ÷µÄÓ³ÉäÈçÏÂËùʾ:

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡1 ¡¡2 ¡¡3 ¡¡4 ¡¡5 ¡¡6 ¡¡7 ¡¡8 ¡¡9¡¡10¡¡11¡¡12¡¡13 ¡¡14¡¡15¡¡16

1 9 17 25 33 41 49 57 65 73 81 89 97 ¡¡ ¡¡ ¡¡
2 10 18 26 34 42 50 58 66 74 82 90 98 ¡¡ ¡¡ ¡¡
3 11 19 27 35 43 51 59 67 75 83 91 99 ¡¡ ¡¡ ¡¡
4 12 20 28 36 44 52 60 68 76 84 92 100 ¡¡ ¡¡ ¡¡
5 13 21 29 37 45 53 61 69 77 85 93 ¡¡ ¡¡ ¡¡ ¡¡
6 14 22 30 38 46 54 62 70 78 86 94 ¡¡ ¡¡ ¡¡ ¡¡
7 15 23 31 39 47 55 63 71 79 87 95 ¡¡ ¡¡ ¡¡ ¡¡
8 16 24 32 40 48 56 64 72 80 88 96 ¡¡ ¡¡ ¡¡ ¡¡

ÒÔBLOCK£¨6£©·ÖÅäÊý×é²»·ûºÏHPF¹æ·¶£¬ÒòΪ6*16¡´100

ÒÔCYCLIC·½Ê½·ÖÅäÊý×飨µÈ¼ÛÓÚCYCLIC£¨1£©£©£º

¡¡!HPF$¡¡DISTRIBUTE¡¡CENTURY(CYCLIC)¡¡ONTO¡¡SEDECIM

µ¼ÖµÄÊý×éÔªËØÏò³éÏó´¦ÀíÆ÷µÄÓ³ÉäÈçÏÂËùʾ:

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡1 ¡¡2 ¡¡3 ¡¡ 4 ¡¡5 ¡¡6 ¡¡7 ¡¡8 ¡¡9¡¡10 ¡¡11¡¡12¡¡13¡¡14¡¡15¡¡16

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 ¡¡ ¡¡ ¡¡ ¡¡ ¡¡ ¡¡ ¡¡ ¡¡ ¡¡ ¡¡ ¡¡ ¡¡

ÒÔCYCLIC(3)·½Ê½·ÖÅäÊý×飺

¡¡!HPF$¡¡DISTRIBUTE¡¡CENTURY(CYCLIC(3))¡¡ONTO¡¡SEDECIM

µ¼ÖµÄÊý×éÔªËØÏò³éÏó´¦ÀíÆ÷µÄÓ³ÉäÈçÏÂËùʾ:

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡1 ¡¡2 ¡¡ 3¡¡ 4 ¡¡5 ¡¡6 ¡¡7 ¡¡8 ¡¡9 ¡¡10¡¡11¡¡12¡¡13¡¡14¡¡15¡¡16

1 4 7 10 13 16 19 22 25 28 31 34 37 40 43 46
2 5 8 11 14 17 20 23 26 29 32 35 38 41 44 47
3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48
49 52 55 58 61 64 67 70 73 76 79 82 85 88 91 94
50 53 56 59 62 65 68 71 74 77 80 83 86 89 92 95
51 54 57 60 63 66 69 72 75 78 81 84 87 90 93 96
97 100 ¡¡ ¡¡ ¡¡ ¡¡ ¡¡ ¡¡ ¡¡ ¡¡ ¡¡ ¡¡ ¡¡ ¡¡ ¡¡ ¡¡
98 ¡¡ ¡¡ ¡¡ ¡¡ ¡¡ ¡¡ ¡¡ ¡¡ ¡¡ ¡¡ ¡¡ ¡¡ ¡¡ ¡¡ ¡¡
99 ¡¡ ¡¡ ¡¡ ¡¡ ¡¡ ¡¡ ¡¡ ¡¡ ¡¡ ¡¡ ¡¡ ¡¡ ¡¡ ¡¡ ¡¡

×¢Ò⣺ÔÊÐí¶ÔÒ»¸öÊý×é·ÖÅäºó£¬ÔÚijЩ´¦ÀíÆ÷ÉÏûÓÐÔªËØ¡£ÊÂʵÉÏ£¬¿É½«Ò»¸öÊý×éµÄËùÓÐÔªËØ·ÖÅäµ½Ò»¸ö´¦ÀíÆ÷ÉÏ¡£ÀýÈ磺

¡¡!HPF$¡¡DISTRIBUTE¡¡CENTURY(BLOCK(256))¡¡ONTO¡¡SEDECIM

µ¼Ö½öÓÐÒ»¸ö·Ç¿Õ¿é--½öÔÚ1ºÅ´¦ÀíÆ÷ÉÏÓÐ100¸öÔªËØ£¬¶ø´Ó2ºÅ´¦ÀíÆ÷Ò»Ö±µ½16ºÅ´¦ÀíÆ÷ûÓÐÈκÎÊý×éÔªËØ¡£

Èç¹ûij¸öÊý¾Ý¶ÔÏóͨ¹ý´æ´¢ÏàÁª£¨COMMON»òEQUIVALENCE£©Í¬distributee½¨Á¢¹ØÁª£¬ Ôò²»ÔÊÐíʹÓÃDISTRIBUTE¶ÔÆä½øÐÐÓ³É䣬ÀýÈç²»ÔÊÐí½«Ò»¸ö±êÁ¿Êý¾Ý¶ÔÏóµÄ´æ´¢µ¥Ôª·Ö¸îµ½³¬¹ýÒ»¸öµÄ³éÏó´¦ÀíÆ÷ÉÏ¡£¼û2.8½Ú¹ØÓÚ´æ´¢ÏàÁªµÄ½øÒ»²½ÌÖÂÛ¡£

DISTRIBUTEÖ¸ÁîµÄÓï¾äÐÎʽ¿ÉÈÏΪÊÇÅöÇÉÖ»ÓÐÒ»¸ödistributeeµÄÊôÐÔÐÎʽµÄËõд£»ÀýÈ磺

¡¡!HPF$¡¡DISTRIBUTE¡¡distributee(dist-format-list)¡¡ONTO¡¡dist-target

µÈ¼ÛÓÚ

¡¡!HPF$¡¡DISTRIBUTE¡¡(dist-format-list)¡¡ONTO¡¡dist-target¡¡::¡¡distributee

×¢Ò⣺Ϊ·ÀÖ¹ÓïÒ庬ºý£¬ dist-format×Ó¾ä±ØÐëÔÚÓï¾äÐÎʽÖгöÏÖ£¬Òò´ËÒ»°ãÀ´Ëµ£¬ Ö¸ÁîµÄÓï¾äÐÎʽ²»ÄÜÓÃÀ´Ö¸¶¨±êÁ¿µÄÓ³Éä¡£

Èç¹ûºöÂÔÁËÊôÐÔÐÎʽÖеÄdist-format×Ӿ䣬 ÔòÓïÑÔ´¦ÀíÆ÷¿ÉÒÔΪÿ¸öÄ£°å»òÊý×éÑ¡ÔñÈÎÒâµÄ·ÖÅä¸ñʽ¡£Òò´ËÖ¸Áî

¡¡!HPF$¡¡DISTRIBUTE¡¡ONTO¡¡P¡¡::D1,D2,D3

µÈ¼ÛÓÚ

¡¡!HPF$¡¡DISTRIBUTE¡¡ONTO¡¡P¡¡::D1

¡¡!HPF$¡¡DISTRIBUTE¡¡ONTO¡¡P¡¡::D2

¡¡!HPF$¡¡DISTRIBUTE¡¡ONTO¡¡P¡¡::D3

¶ÔÓÚËü£¬±àÒëÆ÷»òÐí»á¿¼ÂÇ´úÂëÀïD1£¬D2£¬D3µÄʹÓÃģʽ£¬¿ÉÄÜ»áÑ¡ÔñÌṩÈýÖÖ²»Í¬µÄ·ÖÅ䣬ÀýÈ磺

¡¡!HPF$¡¡DISTRIBUTE¡¡D1(BLOCK,BLOCK)¡¡ONTO¡¡P

¡¡!HPF$¡¡DISTRIBUTE¡¡D2(CYCLIC,BLOCK)¡¡ONTO¡¡P

¡¡!HPF$¡¡DISTRIBUTE¡¡D3(BLOCK(43),CYCLIC)¡¡ONTO¡¡P

ÁíÒ»·½Ã棬±àÒëÆ÷Ò²¿ÉÄÜΪÈý¸öÊý×éÑ¡ÔñÏàͬµÄ·ÖÅä¡£

ÎÞÂÛÊÇÔÚÓï¾äÐÎʽ»¹ÊÇÔÚÊôÐÔÐÎʽÖУ¬Èç¹û³öÏÖONTO×Ӿ䣬ÔòËüÖ¸Ã÷ÁË×÷Ϊ·ÖÅäÄ¿±êµÄ´¦ÀíÆ÷ÅÅÁС£Èç¹ûºöÂÔONTO×Ӿ䣬ÔòΪÿһ¸ödistributeeÈÎÒâÑ¡ÔñÒ»¸öÒÀÀµÓÚʵÏֵĴ¦ÀíÆ÷ÅÅÁС£Òò´Ë£¬ÀýÈ磺

¡¡¡¡¡¡¡¡ REAL,DIMENSION(1000)¡¡::¡¡ARTHUR,ARNOLD,LINUS,LUCY
¡¡!HPF$¡¡PROCESSORS¡¡EXCALIBUR(32)
¡¡!HPF$¡¡DISTRIBUTE¡¡(BLOCK)¡¡ONTO¡¡EXCALIBUR¡¡::¡¡ARTHUR,ARNOLD
¡¡!HPF$¡¡DISTRIBUTE¡¡(BLOCK)¡¡::¡¡LINUS,LUCY

ʹµÃÊý×éARTHURºÍARNOLD¾ßÓÐÏàͬµÄÓ³É䣬ÒòΪËüÃÇ´óСÏàµÈÇÒÒÔͬÑùµÄ·½Ê½£¨BLOCK£©±»·ÖÅ䵽ͬһ´¦ÀíÆ÷ÅÅÁУ¨EXCALIBUR£©ÖУ¬ÕâÑùÆäÏàÓ¦µÄÔªËؾͷÅÔÚÁËͬһ³éÏó´¦ÀíÆ÷ÖС£µ«ÊÇ£¬LUCYºÍLINUS²»Ò»¶¨¾ßÓÐÏàͬµÄÓ³É䣬ÕâÊÇÒòΪÒÀÀµÓÚ²»Í¬µÄʵÏÖ£¬ËüÃǺܿÉÄܱ»·ÖÅäµ½²»Í¬µÄ´¦ÀíÆ÷ÅÅÁÐÖУ»Òò´ËLUCYºÍLINUSµÄÏàÓ¦ÔªËØ¿ÉÄܲ»·ÅÔÚͬһ³éÏó´¦ÀíÆ÷ÖС££¨ALIGNÖ¸ÁîÌṩÁËÒ»ÖÖ·½Ê½À´±£Ö¤Á½¸öÊý×é¾ßÓÐͬһӳÉ䣬¶øÎÞÐëÖ¸¶¨ÏÔʽ´¦ÀíÆ÷ÅÅÁС££©

ÔÚ¸ø¶¨µÄ»·¾³ÖУ¬Ò»Ð©·ÖÅä¿ÉÄÜûÓÐÊʵ±µÄ´¦ÀíÆ÷ÅÅÁС£