±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚcsdn£¬±¾ÎÄÖ÷Òª½éÉÜÁË×÷Õß×Ô¼ºÊáÀíµÄ¹ØÓÚ²¢·¢¡¢²¢Ðбà³Ì¡¢·Ö²¼Ê½±à³ÌµÈÏà¹ØÖªÊ¶µã£¬Ï£Íû¶ÔÄúµÄѧϰÄÜÓÐËù°ïÖú¡£ |
|
¶ÔÓÚ²¢·¢±à³ÌµÄÖî¶à·½·¨±¾ÈËÒ»Ö±¸Ð¾õµ½»ìÂÒ£¬¸ÕºÃ×î½ü¿´ÁËһЩ×ÊÁÏ£¬¾õµÃÊÇʱºòϵͳµÄÊáÀíÒ»ÏÂÁË¡£ÒÔÏÂ×ÊÁϴ󲿷ÖÀ´×Ô¡¶C++²¢ÐÐÓë·Ö²¼Ê½±à³Ì¡·£¬Ó¢Îİæ½Ð¡¶Parallel
and Distributed Programming Using C++¡·¡£ÓÐÐËȤµÄͬѧ¿ÉÒÔÕÒÀ´¿´Ò»Ï¡£
1¡¢Ê²Ã´ÊDz¢·¢£¿
Èç¹ûÁ½¸öʼþÊÇÔÚͬһʱ¼ä¼ä¸ôÄÚ·¢ÉúµÄ£¬¾Í˵ÕâÁ½¸öʼþÊDz¢·¢µÄ£¬Á½¸ö»ò¶à¸öÈÎÎñÔÚͬһʱ¼ä¼ä¸ôÄÚÖ´ÐнÐ×ö²¢·¢Ö´ÐС£¶ÔÓڴ󲿷ÖͬѧÀ´Ëµ£¬×î´óµÄ»ìÏýÔÚÓÚ²¢·¢ºÍ²¢ÐеÄÇø±ð¡£²¢ÐÐÊÇÖ¸¶à¸öÈÎÎñÔÚÿʱÿ¿Ì¶¼Í¬Ê±½øÐУ¬¾ÍÏñµç·ÀïÃæµÄ²¢ÁªÒ»Ñù¡£²¢ÐÐÒª±È²¢·¢¸üÄѵã¬ÏÔÈ»¶ÔÓÚµ¥CPUÀ´Ëµ£¬³ýÁËÖ¸Áî¼¶±ðµÄ²¢ÐУ¬ÎÒÃDz¢²»ÄÜʵÐо«È·µÄ²¢ÐУ¬³ý·ÇÓµÓжà¸öCPU»òÕß¶à¸öºË¡£ÎÒÃÇµÄ¶à½ø³ÌºÍ¶àÏß³ÌÖ»ÄܳÆÎªÊDz¢·¢¡£
2¡¢ÎªÊ²Ã´Òª²¢·¢£¿
¼ÈÈ»²¢·¢²¢²»ÄÜʵÏÖÑϸñµÄ²¢ÐСª¡ªÊµ¼ÊÉϲ¢·¢Ö»ÊÇ¿´ÆðÀ´ÊÇÔÚͬһʱ¼ä¼ä¸ôÄÚͬʱִÐУ¬µ«ÔÚ΢¹ÛÒâÒå¿ÉÄÜÈ´»¹ÊÇ´®ÐУ¬¾ÍÏñµç·ÀïÃæµÄ´®Áª£¬ÄÇôÎÒÃÇΪʲô»¹Òª²¢·¢±à³ÌÄØ£¿×Ô¼ºÆ×Ô¼ºÃ´£¿¹þ¹þ£¬µ±È»²»ÊÇ£¬²¢·¢±à³ÌÓкܶàʵ¼ÊÒâÒåµÄ¡£
ÓÐʱ²¢·¢È·ÊµÄÜÔÚͬһʱ¼ä¼ä¸ôÄÚÍê³É¸ü¶àµÄÈÎÎñ£¬Ò²¾ÍÊÇÓÐÀûÓÚÔö¼ÓÈÎÎñµÄÍÌÍÂÁ¿¡£ÒòΪÔÚµ¥CPUµÄÇé¿öÏ£¬²¢²»ÊÇËùÓеÄÈÎÎñÔÚ½øÐеÄÿʱÿ¿Ì¶¼Ê¹ÓÃCPU£¬Ò²Ðí»¹ÒªÊ¹ÓÃIOµÈÉ豸¡£¶øÔÚ¶àCPU»òÕß¶ą̀¼ÆËã»ú×é³ÉµÄ¼¯ÈºµÄÇé¿öÏ£¬¾Í¸ü²»ÓÃ˵ÁË¡£
²¢·¢ÓÐÀûÓÚ¼ò»¯³ÌÐò½â¾ö·½°¸¡£ÓÐʱ°ÑÎÊÌâµÄ½â¾ö·½°¸¿´×÷Ò»×é²¢·¢Ö´ÐеÄÈÎÎñ¸üºÏÀí¡£ÕâÊÇÄ£ÄâÏÖʵ³¡¾°µÄ×ÔÈ»·½Ê½¡£
ÓÐʱ¶ÔÓÚЧÄܶøÑÔËÙ¶È´¦ÓÚ´ÎÒªµØÎ»£¬²ÉÓò¢·¢ÐÔÊÇΪÁËʹÈí¼þÔÚÏàͬµÄʱ¼ä¼ä¸ôÄÚ×ö¸ü¶àµÄ¹¤×÷¡£±ÈÈçÒ»¸öÍøÕ¾Ö§³Ö¶àÉÙ¸öÓû§Í¬Ê±·ÃÎÊ¡£
×îºó£¬²ÉÓò¢·¢ÐÔ¿ÉÒÔ¼ò»¯Èí¼þ£¬Í¨³£Ò»ÏµÁн϶̵IJ¢·¢Ö´ÐвÙ×÷±ÈÒ»¸ö½Ï³¤µÄ¸´ÔÓµÄ˳Ðò²Ù×÷¸üÈÝÒ×ʵÏÖ¡£²¢·¢Ê¹Èí¼þÔËÐÐËٶȸü¿ì£¬´¦Àí¸ü¶àµÄ¸ºÔØ»ò¼ò»¯³ÌÐòµÄÉè¼Æ·½°¸£¬ÆäÖ÷ҪĿ±êÊÇÈí¼þÓÅ»¯£¬¼´²ÉÓò¢·¢ÐÔʹÈí¼þÐÔÄܸü¼Ñ¡£
3¡¢ÔõôʵÏÖ²¢·¢£¿
²¢Ðкͷֲ¼Ê½±à³ÌÊÇ´ïµ½Èí¼þ²¢·¢µÄÁ½ÖÖ»ù±¾Í¾¾¶¡£ËüÃÇÊÇÁ½ÖÖ²»Í¬µÄ¡¢ÓÐʱÓÖÏ໥½»²æµÄ±à³Ì·¶Àý¡£²¢Ðбà³Ì¼¼Êõ½«³ÌÐò±ØÐë´¦ÀíµÄ×÷Òµ·ÖÅä¸øÒ»¸öÎïÀí»òÐéÄâ¼ÆËã»úÄÚµÄÁ½¸ö»òÕß¶à¸ö´¦ÀíÆ÷£»¶ø·Ö²¼Ê½±à³Ì¼¼ÊõÔòÒ»°ãÊǽ«×÷Òµ·ÖÅ䏸¼¯ÈºÄڵIJ»Í¬¼ÆËã»úµÄÒ»¸ö»òÕß¶à¸ö´¦ÀíÆ÷¡£´ÓÕâ¸ö½Ç¶È½²£¬·Ö²¼Ê½±à³ÌµÄ·¶Î§Òª±È²¢Ðбà³Ì·¶Î§¸ü´ó¡£
²¢ÐгÌÐò¿ÉÒԷֳɽø³Ì»òÕßÏß³ÌʵÏÖ¡£
·Ö²¼Ê½³ÌÐò½öÄֳܷɽø³ÌʵÏÖ¡£
ÔÚ¼¼ÊõÉÏ£¬²¢ÐгÌÐòÓÐʱºòÊÇ·Ö²¼Ê½µÄ£¬ÀýÈçPVM±à³Ì¡£
ÔÚ¼¼ÊõÉÏ£¬·Ö²¼Ê½±à³ÌÓÐʱÓÃÓÚʵÏÖ²¢ÐÐÐÔ£¬ÀýÈçMPI±à³Ì¡£
µ«²¢·ÇËùÓеķֲ¼Ê½³ÌÐò¶¼°üÀ¨²¢ÐÐÐÔ£¬·Ö²¼Ê½³ÌÐòµÄ¸÷²¿·Ö¿ÉÒÔÔÚ²»Í¬Ê±¼ä¼ä¸ôÄڵIJ»Í¬Ê±¿ÌÖ´ÐС£
ÔÚ´¿´âµÄ²¢ÐгÌÐòÖУ¬²¢·¢Ö´Ðв¿·Ö¶¼ÊÇͬһ¸ö³ÌÐòÖеIJ¿·Ö£»
ÔÚ·Ö²¼Ê½³ÌÐòÖУ¬²¢·¢Ö´ÐеIJ¿·Öͨ³£ÊµÏֳɷÖÀëµÄ³ÌÐò¡£
4¡¢²¢Ðбà³Ì
ÓÉÓÚ²¢Ðбà³ÌÒ»°ãÊÇÔÚͬһ̨»úÆ÷ÉÏ£¬Í¨³£ÊµÏÖ²¢Ðбà³ÌÐèÒª½èÖúרÃŵÄÓ²¼þ¡£Èç¹ûÊÇÖ»ÐèÒªCPUÔËËãµÄ£¬ÄÇôӲ¼þÉÏÖÁÉÙÊǶà¸öCPU²ÅÄÜʵÏÖÑϸñÒâÒåµÄ²¢ÐС£ÁíÍ⣬Ҳ¿ÉÒÔÊÇCPU£¬ÏÔ¿¨£¬Éù¿¨µÄ²¢ÐÐÔËËã¡£×î¼òµ¥µÄ²¢ÐÐÄ£ÐÍÊÇÔÚͬһ̨»úÆ÷ÖÐÓжà¸öCPU¹²Ïíͬһ¸ö´æ´¢Æ÷£¬Õâ¸öÄ£ÐÍÓµÓл¥³â¶Á»¥³âд¡¢»¥³â¶Á²¢·¢Ð´¡¢²¢·¢¶Á»¥³âд¡¢²¢·¢¶Á²¢·¢Ð´ËÄÖÖ»ù±¾¶ÁдËã·¨£¬ÕâÑù²ÅÄܱ£Ö¤²¢ÐÐÖ´ÐÐÈÎÎñ¶ø²»»á³ö´í¡£
5¡¢·Ö²¼Ê½±à³Ì
·Ö²¼Ê½±à³Ì¼¼ÊõÔÊÐíÈí¼þÀûÓÃÒòÌØÍø¡¢ÍÅÌå»òÆóÒµÄÚ²¿ÍøÂç¼°¹ã²¥ÍøÉϵÄ×ÊÔ´¡£ËùÓйØÓÚÒ»¸ö³ÌÐòͨ¹ýijÖÖÍøÂçÁ¬½ÓÓëÁíÒ»¸ö³ÌÐòµÄͨ»°¶¼ÊÇ·Ö²¼Ê½±à³Ì£¬´ÓÕâ¸öÒâÒåÉÏÀ´½²£¬ÎÒÃÇͨ³£±àдB/S¼Ü¹¹»òÕßC/S¼Ü¹¹µÄ³ÌÐò¶¼ÊÇ·Ö²¼Ê½±à³Ì¡£·Ö²¼Ê½±à³ÌÓÐÒÔϺô¦£º
·Ö²¼Ê½±à³Ì¼¼ÊõÌṩ¶ÔµØÀíÉÏ¿ÉÄÜÏà¸ôºÜÔ¶µÄ×ÊÔ´µÄ·ÃÎÊ¡£±ÈÈçWeb·þÎñ£»
·Ö²¼Ê½±à³Ì¼¼ÊõÌṩ¶Ô°º¹óµÄÓ²¼þºÍÈí¼þ×ÊÔ´µÄ¹²Ïí·ÃÎÊ£¬±ÈÈç¸ß¶ËȫϢÕÕÏà´òÓ¡»ú£»
·Ö²¼Ê½¼ÆËã¿ÉÓÃÓÚÈßÓàºÍʵЧµÄ´¦Àí£¬±ÈÈç·þÎñÆ÷µÄÈȱ¸·Ý¹¦ÄÜͨ¹ýÅäÖü¯ÈºÀ´ÊµÏÖ£»
·Ö²¼Ê½±à³Ì¼¼ÊõÔÊÐíÓû§¹²ÏíÅÓ´óµÄÊý¾Ý¿â£¬±ÈÈç·Ö²¼Ê½´æ´¢¡£
6¡¢²¢·¢±à³ÌÉè¼Æ¹ý³Ì
·Ö½â¡£·Ö½âÊǽ«ÎÊÌâºÍ½â¾ö·½°¸»®·Ö³É¶à¸ö²¿·ÖµÄ¹ý³Ì¡£
ͨÐÅ¡£Ò»µ©Èí¼þ½â¾ö·½°¸½«Èí¼þ·Ö½â³É´óÁ¿µÄ²¢·¢Ö´Ðв¿·Ö£¬ÕâЩ²¿·Öͨ³£ÐèÒª½øÐÐÒ»¶¨Á¿µÄͨÐÅ¡£Èç¹û¸÷²¿·ÖÖ®¼ä²»½øÐÐͨÐÅ£¬ÄÇôÕâЩ²¿·Ö¾Í²»ÄÜÕæÕý×é³ÉÒ»¸öµ¥¶ÀµÄÓ¦ÓóÌÐò¡£
ͬ²½¡£µ±Èí¼þµÄ¶à¸ö¹¹½¨´¦Àíͬһ¸öÎÊÌâʱ£¬ËûÃDZØÐë½øÐÐе÷£¬±ÈÈçÖ´ÐÐ˳ÐòµÄе÷£¬·ÃÎÊ×ÊÔ´µÄе÷µÈµÈ¡£
7¡¢C++¿ª·¢ÈçºÎʵÏÖÈí¼þ²¢·¢
ÔÚÓ¦ÓóÌÐò¿ª·¢ÖÐÓм¸ÖÖ²ã´ÎµÄ²¢·¢£¬µ«ÊÇÎÒÃÇC++³ÌÐò±à³ÌËùÉæ¼°µ½µÄ²¢·¢ÐԺͲÙ×÷ϵͳ»òÕßÓ²¼þµÄ²¢·¢ÐÔÊDz»Í¬µÄ£¬¾¡¹ÜÓ²¼þµÄ²¢·¢ºÍ²Ù×÷ϵͳ¼¶µÄ²¢·¢Ö§³ÖÓ¦ÓóÌÐòµÄ²¢·¢£¬µ«ÊÇÎÒÃǹØ×¢µÄÊÇÓ¦ÓóÌÐò¡£
ÔÚC++±à³ÌʵÏÖ²¢ÐÐÐÔʹÓÿ⡣ϵͳ¿âºÍÓû§¿â¶¼ÄÜÓÃÓÚÖ§³ÖC++ÖеIJ¢ÐÐÐÔ¡£
ϵͳ¿â
ϵͳ¿âÊÇÓɲÙ×÷ϵͳ»·¾³ÌṩµÄ¿â£¬Ðµĵ¥Ò»UNIX¹æ·¶ÖеÄÒ»²¿·ÖPOSIXÏß³ÌÊǶÔC++²¢·¢ÊµÏÖµÄÖ§³Ö¡£³ýÖ¸Á²¢ÐÐÍ⣬½«³ÌÐò·Ö³ÉÏ̻߳ò½ø³ÌÊÇ»ñµÃC++²¢ÐÐÐÔµÄΨһ·½·¨£¬Ð¹淶ÌṩÁË×öÕâÏ×÷µÄ¹¤¾ß£¬¿ª·¢Õß¿ÉÒÔʹÓãº
POSIXỊ̈߳¨Ò²³ÆPthread£©
POSIX²úÉúº¯Êý
exec()º¯Êý×å
ÔÚC++ÖпÉÒÔÓÃPOSIXÏß³Ì¿â½øÐжàÏ̱߳à³Ì£¬Èç¹û³ÌÐòÔÚÓжà¸ö´¦ÀíÆ÷µÄ¼ÆËã»úÖÐÔËÐУ¬ÄÇôÿ¸öÏ߳̿ÉÄÜ·Ö±ðÔÚÒ»¸ö´¦ÀíÆ÷ÉÏÔËÐУ¬Òò´Ë¿ÉÒÔ²¢·¢Ö´ÐС£Èç¹û½öÓÐÒ»¸ö´¦ÀíÆ÷¿ÉÓã¬ÄÇô¿ÉÒÔͨ¹ý½ø³ÌµÄÉÏÏÂÎÄÇл»´ïµ½²¢·¢²¢¸øÈËÒ»ÖÖ²¢Ðеĸоõ¡£POSIXÏ߳̿ÉÄÜÊÇÔÚC++³ÌÐòÖÐÒýÈë²¢ÐÐÐÔ×î¼òµ¥µÄ·½·¨¡£
Óû§¼¶¿â
ÕâЩÓû§¼¶¿âÊÇʵÏÖÁËÁíÒ»ÖÖ¹ú¼Ê±ê×¼µÄÓû§¼¶¿â£¬Ò²¿ÉÒÔÓÃÓÚÖ§³ÖC++µÄ²¢ÐÐÐÔ£¬Ö÷ÒªÓУº
MPI£¨Message Passing Interface£¬ÏûÏ¢´«µÝ½Ó¿Ú£©£ºÊÇÏûÏ¢´«µÝµÄ±ê×¼¹æ·¶¡£MPIÊÇΪ³¬´ó¹æÄ£²¢ÐмÆËã»úºÍ¹¤×÷Õ¾¼¯ÈºµÄ¸ßÐÔÄܶøÉè¼ÆµÄ¡£MPICHÊÇMPI±ê×¼µÄÒ»ÖÖʵÏÖ¡£MPICH¸øC++±à³ÌÕßÌṩÁËÒ»×éAPIºÍ¿â£¬ÕâЩAPIºÍ¿âÖ§³Ö²¢Ðбà³Ì¡£¾¡¹ÜC++ûÓй̶¨µÄ²¢ÐÐÐÔÔÓµ«ÊÇËüÄܹ»ÀûÓÃÖ§³Ö²¢ÐÐÐԵŦÄÜ¿âÈçMPICH£¬Õâ¾ÍÊÇC++µÄÓŵ㣬ËüÊÇΪÁé»îÐÔ¶øÉè¼ÆµÄ¡£
PVM£¨Parallel Virtual Machine£¬ÐéÄâ²¢ÐмÆËã»ú£©£º¼¯Èº±à³ÌµÄÒ»ÖÖ±ê×¼£¬ÊÇÒ»¸öÈí¼þ°ü£¬ËüÔÊÐíÒ»¸öÒì¹¹¼ÆËã»ú¼¯Í¨¹ýÍøÂçÁ¬½ÓÔÚÒ»Æð£¬Ê¹ÓÃÆðÀ´Èçͬһ¸öµ¥¶ÀµÄ´ó¹æÄ£²¢ÐмÆËã»ú¡£PVMϵͳµÄÈ«²¿Ä¿±êÊÇʹһ¸ö¼ÆËã»ú¼¯¿ÉÒÔе÷¹¤×÷ÓÃÓÚ²¢·¢»ò²¢ÐмÆËã¡£PVMÊÇ×îÒ×ÓÚʹÓá¢×îÁé»îµÄ¿ÉÓÃÓÚ»ù±¾²¢Ðбà³ÌÈÎÎñµÄƽ̨£¬ÕâЩ²¢Ðбà³ÌÈÎÎñÐè񻃾¼°µ½ÔËÐв»Í¬²Ù×÷ϵͳµÄ²»Í¬ÀàÐ͵ļÆËã»ú¡£
CORBA£¨Common Object Request Broker Architecture£¬¹«¹²¶ÔÏóÇëÇó´úÀíÌåϵ½á¹¹£©£ºÊÇ·Ö²¼Ê½¿çÆ½Ì¨ÃæÏò¶ÔÏó±à³ÌµÄ±ê×¼¡£MICOÊÇÆäÒ»¸ö¿ÉÃâ·ÑÀûÓá¢ÍêÈ«×ÔÊÊÓ¦µÄʵÏÖ£¬MICOÖ§³ÖC++¡£
ʹÓÃÒÔÉϵÄÓû§¼¶¿âÐèÒªÔ¤ÏÈÏÂÔØ»ñÈ¡£¬ËûÃǺÜÈÝÒ׵õ½¡£
8¡¢²¢Ðкͷֲ¼Ê½±à³ÌµÄ±à³Ì»·¾³
×îºóÎÒÃÇÐèÒª¹Ø×¢Ò»ÏÂ×îÆÕ±éµÄ²¢Ðкͷֲ¼Ê½±à³Ì»·¾³ÊÇ£º
¼¯Èº£ºÓÃÍøÂçÁ¬½Óµ½Ò»Æð£¬ÒÔÌṩµ¥Ò»Â߼ϵͳµÄ¼ÆËã»ú¼¯ºÏ¡£
MPP£º´ó¹æÄ£²¢Ðд¦ÀíÆ÷£¬ÊǾßÓÐÊý°Ù¸ö´¦ÀíÆ÷µÄÒ»¸öµ¥¶À¼ÆËã»ú¡£
SMP£º¶Ô³Æ¶à´¦Àíϵͳ£¬ÓµÓжà¸ö´¦ÀíÆ÷µÄÒ»¸öµ¥¶Àϵͳ¡£
¿É¼û£¬Æ½Ê±µ¥»úµ¥CPUµ¥ºËµÄÇé¿öÏÂÎÒÃDZàдµÄ²¢·¢³ÌÐò²»Ò»¶¨Äܹ»ÕæÕýµÄ²¢ÐУ¬²¢·¢±à³ÌÖ÷Òª»¹ÊÇÓ¦ÓÃÔÚÒ»¶¨Ó²¼þ×ÊÔ´±à³Ì»·¾³»ù´¡ÉÏ¡£ |