ѸάÍø

²é¿´: 1301|»Ø¸´: 2
´òÓ¡ ÉÏÒ»Ö÷Ìâ ÏÂÒ»Ö÷Ìâ

±àÒëÆ÷¼¼ÊõµÄÑݽøÓë±ä¸ï

[¸´ÖÆÁ´½Ó]
Í·Ïñ±»ÆÁ±Î
Ìøתµ½Ö¸¶¨Â¥²ã
1#
·¢±íÓÚ 2023-3-29 13:13:52 | Ö»¿´¸Ã×÷Õß »ØÌû½±Àø |µ¹Ðòä¯ÀÀ |ÔĶÁģʽ À´×Ô£º ºþÄÏ À´×Ô ºþÄÏ

ÂíÉÏ×¢²á£¬»ñÈ¡ÔĶÁ¾«»ªÄÚÈݼ°ÏÂÔØȨÏÞ

ÄúÐèÒª µÇ¼ ²Å¿ÉÒÔÏÂÔØ»ò²é¿´£¬Ã»ÓÐÕʺţ¿×¢²á

x
Òµ½ç¹ÛµãרÀ¸ÊÕ¼¸ÃÄÚÈÝ
60 ƪÎÄÕÂ69 ¶©ÔÄ
[url=]¶©ÔÄרÀ¸[/url]




ÔÚ¹ýÈ¥µÄÊýÊ®ÄêÀĦ¶û¶¨ÂÉÒ»Ö±Ö§Åä×Å°ëµ¼ÌåÐÐÒµµÄ·¢Õ¹Â·Ïߣ¬Ëæמ§Ìå¹Ü³ß´çµÄ²»¶Ï±äСµ¥¸öоƬÉϼ¯³ÉµÄ¾§Ìå¹ÜÊýÁ¿Ô½À´Ô½¶à¡£

×îÐ嵀 NVIDIA A100 GPU µ¥¸öоƬ¼¯³ÉÁË 540 ÒÚ¸ö¾§Ìå¹Ü£¬¶øǶÈëʽϵͳ¼¶Ð¾Æ¬£¨System on Chip£¬SoC£©Öеľ§Ìå¹ÜÊýÁ¿£¬ÀýÈ绪Ϊ÷è÷ë 990 ¼¯³ÉÁË 103 ÒÚ¸ö¾§Ìå¹Ü¡£¾§Ìå¹ÜÊýÁ¿µÄÔö¼ÓÔÊÐíоƬÉè¼Æ³§ÉÌ¿ÉÒÔÔÚµ¥¸öоƬÉÏʵÏÖ¸ü¶àµÄ¹¦Äܺ͸ü¸ßµÄ¼ÆËãÄÜÁ¦¡£Ò²ÕýÊÇÈÕÒæ·á¸»µÄ¹¦ÄܺÍÈÕ½¥ÔöÇ¿µÄ´¦ÀíÄÜÁ¦£¬Ê¹µÃÈí¼þ¿ª·¢ÈËÔ±¿ÉÒÔ²»¶ÏµØ¿ª·¢ÐµÄÓ¦Ó㬴ӶøÇý¶¯×ÅÕû¸öÐÅÏ¢¼¼Êõ²úÒµ²»¶ÏÏòÇ°·¢Õ¹¡£

ÔÚÏÖ´ú¼ÆËã»úϵͳÖУ¬±àÒëÆ÷ÒѾ­³ÉΪһ¸ö±Ø²»¿ÉÉٵĻù´¡Èí¼þ¹¤¾ß¡£³ÌÐòԱͨ¹ý¸ß¼¶ÓïÑԶԵײãÓ²¼þ½øÐбà³Ì£¬¶ø±àÒëÆ÷Ôò¸ºÔ𽫸߼¶ÓïÑÔÃèÊöת»»Îªµ×²ãÓ²¼þ¿ÉÒÔÖ´ÐеĻúÆ÷Ö¸Áî¡£±àÒëÆ÷ÔÚ½«Ó¦ÓóÌÐò·­Òëµ½»úÆ÷Ö¸ÁîµÄ¹ý³ÌÖУ¬»¹ÐèÒª¶Ô³ÌÐò½øÐеȼ۱任£¬´Ó¶øÈóÌÐòÄܹ»¸ü¼Ó¸ßЧµØÔÚÓ²¼þÉÏÖ´ÐС£

ÔÚÌض¨Ó²¼þƽ̨ºÍ±à³ÌÓïÑÔµÄË«ÖØÔ¼ÊøÌõ¼þÏ£¬Ó¦ÓóÌÐòµÄÐÔÄÜÖ÷ÒªÒÀÀµÓÚ³ÌÐòÔ±±àд²¢ÐдúÂëµÄÄÜÁ¦ºÍ±àÒëÆ÷µÄÓÅ»¯ÄÜÁ¦¡£±àÒëÆ÷»¹ÐèÒª³ä·ÖÃÖºÏÉϲã±à³ÌÄ£ÐÍÓëµ×²ãÓ²¼þµÄ¾Þ´óºè¹µ£¬¾¡¿ÉÄܵؽµµÍ³ÌÐòÔ±µÄ±à³ÌÄѶȡ£Ò²ÕýÒòÈç´Ë£¬±àÒë¼¼ÊõµÄ·¢Õ¹Ê¼ÖÕ½ôËæ×ÅÓ²¼þ¼Ü¹¹µÄÑÝ»¯£¬²¢ÇÒ°çÑÝ×ÅÔ½À´Ô½ÖØÒªµÄ½ÇÉ«¡£

1

ÃæÏò¾­µäÌåϵ½á¹¹µÄÐÔÄÜÓÅ»¯

´Ó¾­µäÌåϵ½á¹¹µÄ½Ç¶È£¬ÌáÉýÓ²¼þÐÔÄÜÖ÷ÒªÓÐÈýÀà·½·¨£ºµÚÒ»Àà·½·¨Êǽ«¸ü¶àµÄ¾«Á¦ÓÃÓÚ·¢¾ò¸÷ÖÖ²¢ÐÐÐÔ£»µÚ¶þÀà·½·¨ÊÇÒýÈëеĴ洢²ã´ÎÀ´»º½â·Ã´æËٶȺʹ洢ÈÝÁ¿Ö®¼äµÄì¶Ü£»µÚÈýÀà·½·¨ÔòÊÇͨ¹ý¶¨ÖÆ»¯µÄ·½·¨À´ÌáÉýÓ²¼þ´¦ÀíÁìÓòÏà¹ØÓ¦ÓõÄÐÔÄÜ¡£

1.1 ²¢ÐÐÐÔ·¢¾ò

²¢ÐÐÐԵķ¢¾òÖ÷ÒªÓÐÈýÖÖ·½Ê½£¬¼´Ö¸Á²¢ÐС¢Êý¾Ý¼¶²¢ÐкÍÏ̼߳¶²¢ÐС£¸ù¾Ý Flynn ·ÖÀà·¨ £¬°´ÕÕÖ¸ÁîÁ÷ºÍÊý¾ÝÁ÷µÄ²»Í¬×éºÏ·½Ê½½«¼ÆËã»ú·ÖΪÒÔÏÂËÄÀࣺ

1. µ¥Ö¸ÁîÁ÷µ¥Êý¾ÝÁ÷£¨Single Instruction, Single Data, SISD£©£¬¶ÔÓ¦´®ÐмÆËã»úÌåϵ½á¹¹£¬½öÄÜÍÚ¾òÖ¸Á²¢ÐÐÐÔ¡£

2. µ¥Ö¸ÁîÁ÷¶àÊý¾ÝÁ÷£¨Single Instruction, Multiple Data, SIMD)£¬¿ÉÓÃÓÚÊý¾Ý²¢ÐмÆË㣬¿ÉÒÔÍÚ¾òÖ¸Á²¢ÐÐÐÔºÍÊý¾Ý¼¶²¢ÐÐÐÔ¡£

3. ¶àÖ¸ÁîÁ÷µ¥Êý¾ÝÁ÷£¨Multiple Instruction, Single Data, MISD£©£¬ÕâÀàÓ²¼þµÄÓ¦Ó÷¶Î§·Ç³£ÓÐÏÞ£¬¾ßÌåʵÀý°üÀ¨ÃÜÂëÆÆÒë»ò¶Ôµ¥Ò»ÐÅÏ¢Á÷½øÐжàƵÂÊÂ˲¨¡£

4. ¶àÖ¸ÁîÁ÷¶àÊý¾ÝÁ÷£¨Multiple Instruction, Multiple Data, MIMD£©£¬ÕâÊÇÓ¦ÓýÏΪ¹ã·ºµÄÒ»ÖÖ²¢ÐмÆËã»úÌåϵ½á¹¹£¬¿ÉÒÔͬʱÍÚ¾òÖ¸Á²¢ÐÐÐÔ¡¢Êý¾Ý¼¶²¢ÐÐÐÔºÍÏ̼߳¶²¢ÐÐÐÔ¡£

1.1.1 Ö¸Á²¢ÐÐ

Ò»¸ö´¦ÀíÆ÷ºËÐÄͨ³£ÊÇÖ¸Äܹ»¶ÀÁ¢µØ´ÓÖÁÉÙÒ»¸öÖ¸ÁîÁ÷»ñÈ¡ºÍÖ´ÐÐÖ¸ÁîµÄ´¦Àíµ¥Ôª£¬Í¨³£°üº¬È¡Ö¸µ¥Ôª¡¢ÒëÂëµ¥Ôª¡¢Ö´Ðе¥Ôª¡¢·Ã´æµ¥ÔªºÍ³ÌÐò¼ÆÊýÆ÷ºÍ¼Ä´æÆ÷ÎļþµÈÂß¼­µ¥Ôª¡£

Ö¸Á²¢ÐÐÊÇÖ¸ÔÚµ¥¸ö´¦ÀíÆ÷ºËÐÄÖУ¬Í¨¹ýͬʱִÐжàÌõÖ¸ÁîµÄ·½Ê½À´Ìá¸ß´¦ÀíËٶȡ£Í¨¹ýÇÉÃîµØÉè¼ÆÁ÷Ë®Ï߽ṹ£¬¿ÉÒÔ´ó·ù¶ÈµØÌáÉýµ¥¸ö´¦ÀíÆ÷ºËÐĵÄÖ¸Á²¢Ðжȡ£È»¶ø£¬ÊÜÏÞÓÚÓ²¼þ¸´ÔӶȣ¬´¦ÀíÆ÷ÖÐÕýÔÚÖ´ÐÐÖ¸Áî×ÜÊýÓëÁ÷Ë®ÏßµÄÉî¶ÈºÍ¸öÊý³ÉÕý±È¡£´¦ÀíÆ÷ÖÐÕýÔÚÔËÐеÄÖ¸Áî×ÜÊý¾ö¶¨ÁË´¦ÀíÆ÷µÄ¸´ÔӶȡ£

Ö¸Á²¢ÐÐÊÇ´«Í³ÏµÍ³½á¹¹ÁìÓòÖнÏΪ³ÉÊìµÄÒ»ÖÖ²¢Ðз½Ê½£¬´ú±íÐԵļ¼Êõ°üÀ¨Á÷Ë®Ïߣ¨Pipeline£©¡¢¶à·¢É䣨Multiple Issue£©¡¢Í¬Ê±¶àỊ̈߳¨Simultaneous Multithreading£©ºÍ³¬³¤Ö¸Áî×Ö£¨Very Long Instruction Word£©µÈ¡£

ÆäÖУ¬Á÷Ë®Ïß²¢ÐÐÊǽ«Ã¿¸ö¹¦Äܵ¥ÔªÍ¨¹ý·Öʱ¸´Óõķ½Ê½ÔÚ²»Í¬µÄÖ¸ÁîÖ®¼ä¹²Ïí£¬ÊÇÒ»ÖÖʱ¼äÉϵIJ¢ÐУ»¶ø¶à·¢ÉäÔòÊÇÔÚÿ¸öʱÖÓÖÜÆÚ·¢Éä¶àÌõÖ¸Áîµ½¶à¸öÁ÷Ë®ÏßÖв¢ÐÐÖ´ÐУ¬ÊÇÒ»ÖÖ¿Õ¼äÉϵIJ¢ÐУ»½«Ê±¼äºÍ¿Õ¼äά¶ÈµÄ²¢ÐÐ×éºÏÆðÀ´¾ÍÐγÉÁËͬʱ¶àÏ̼߳¼ÊõºÍ³¬³¤Ö¸Áî×Ö¼¼Êõ¡£

1.1.2 Êý¾Ý¼¶²¢ÐÐ

Êý¾Ý¼¶²¢ÐÐÊÇÒ»ÖÖ¿Õ¼äά¶ÈÉϵIJ¢Ðд¦Àíģʽ£¬µäÐ͵ÄʵÏÖ·½Ê½ÊÇÔÚÓ²¼þÖм¯³ÉÏòÁ¿ÔËË㲿¼þ£¬Óõ¥ÌõÏòÁ¿Ö¸Áîͬʱ´¦Àí¶à¸öÊý¾Ý£¬ÀýÈç Intel µÄ SSE/AVX£¬ARM µÄ NEON/SVE µÈ¡£Êý¾Ý¼¶²¢Ðв»½ö¿ÉÒÔ³ä·ÖÍÚ¾ò³ÌÐòÖÐDZÔڵIJ¢ÐÐÐÔ£¬»¹¿ÉÒÔ¾«¼òÖ¸ÁîÐòÁС£ÏòÁ¿»¯²»ÐèÒª¶ÔÓ²¼þ½á¹¹ÌرðÊÇÁ÷Ë®Ï߽ṹ×ö´óÁ¿µÄÐ޸ģ¬Í¨³£Ö»ÐèÒªÐÞ¸ÄÊý¾Ýͨ·µÄλ¿í¡£

¶ÔÓÚͼ 1.1 ËùʾµÄ´úÂ룬Èç¹ûÔËÐÐÔÚÆÕͨµÄ±êÁ¿´¦ÀíÆ÷ÉÏ£¬±àÒëÆ÷ÐèÒªÉú³ÉÒ»¸öÑ­»·£¬Í¨¹ý 16 ´Îµü´úÀ´Íê³ÉÕû¸ö¼ÆËãÈÎÎñ£¬Ò»´Îµü´úÍê³ÉÒ»¸öÔªËصÄ×ÔÔöÔËËã¡£Èç¹ûÔËÐÐÔÚÏòÁ¿¿í¶ÈΪ 4 µÄÏòÁ¿ÏòÁ¿Æ÷ÉÏ£¬±àÒëÆ÷Ö»ÐèÒªÉú³É 4 ÌõÏòÁ¿¼Ó·¨Ö¸Áî¼´¿ÉÍê³É¼ÆË㣬²»ÐèÒª²åÈëÈκηÖÖ§ÌøתָÁî¡£

1.1.3 Ï̼߳¶²¢ÐÐ

Ï̼߳¶²¢ÐмȿÉÒÔÔÚµ¥´¦ÀíÆ÷ºËÐÄÄÚʵÏÖ£¬Ò²¿ÉÒÔÔÚ¶à¸ö´¦ÀíÆ÷ºËÐÄÄÚʵÏÖ¡£ÔÚÖ§³ÖÓ²¼þ¶àÏ̼߳¼ÊõµÄµ¥´¦ÀíÆ÷ÖУ¬¿ÉÒÔͨ¹ýÓ²¼þ¶àÏ̻߳òÕßͬʱ¶àÏ̵߳ȼ¼ÊõÀ´Ìá¸ß×ÊÔ´ÀûÓÃÂʺͼÆËãЧÂÊ¡£

µ«ÊÇ£¬ÔÚÉè¼Æ¸´ÔӶȺ͹¦ºÄǽÎÊÌâµÄ¹²Í¬Ô¼ÊøÏ£¬ÌáÉýµ¥¸ö´¦ÀíÆ÷µÄÐÔÄÜÒѾ­·Ç³£À§ÄÑ¡£Ò»¸ö×ÔÈ»µÄÏë·¨¾ÍÊÇÔÚµ¥¸öоƬÉϼ¯³É¶à¸ö´¦ÀíÆ÷ºËÐÄ£¬Í¨¹ýÍÚ¾ò¶à¸ö´¦ÀíÆ÷ºËÐÄÖ®¼äµÄÏ̼߳¶²¢ÐÐÄÜÁ¦À´ÌáÉý×ÜÌåµÄ¼ÆËãÄÜÁ¦¡£

ÔÚÏ̼߳¶²¢ÐÐģʽÖУ¬²»Í¬Ö´Ðе¥ÔªµÄÖ¸ÁîÁ÷Ï໥¶ÀÁ¢£¬¿ÉÒÔÒÔͬ²½»òÕßÒì²½Ö´Ðеķ½Ê½´¦Àí¸÷×ÔµÄÊý¾Ý¡£

Ö÷ÒªµÄʵÏÖ·½Ê½ÓУº¶Ô³Æ¶à´¦ÀíÆ÷½á¹¹£¨Symmetric Multi-Processing, SMP£©¡¢·Ö²¼Ê½¹²Ïí´æ´¢½á¹¹£¨Distributed Shared Memory, DSM£©¡¢´ó¹æÄ£²¢Ðд¦ÀíÆ÷½á¹¹£¨Massively Paralllel Processing,MPP£©¡¢¼¯Èº£¨Cluster£©¡£ÓëÏ̼߳¶²¢ÐнôÃÜÏà¹ØµÄÊDZ» GPU ¼Ü¹¹ÆÕ±é²ÉÓõĵ¥Ö¸Áî¶àÏ̼߳¼Êõ£¬¼´¶à¸öÏß³ÌÒÔËø²½µÄÐÎʽִÐÐÏàͬµÄÖ¸Áµ«ÊÇÿ¸öÏ̴߳¦Àí²»Í¬µÄÊý¾Ý¡£

1.1.2 ´æ´¢²ã´Î½á¹¹

Ëæ×ÅÌåϵ½á¹¹¼¼ÊõµÄ·ÉËÙ·¢Õ¹£¬´¦ÀíÆ÷Ö´ÐÐÖ¸ÁîµÄËÙ¶ÈÔ¶Ô¶³¬¹ýÁËÖ÷´æµÄ·ÃÎÊËٶȡ£ÕâÖÖÈÕÒæÀ­´óµÄËٶȲîÒì¶Ô¼ÆËã»úÌåϵ½á¹¹µÄ·¢Õ¹²úÉúÁ˾޴óµÄÓ°Ïì¡£

ΪÁËÃÖºÏÕâÖÖ¾Þ´óµÄºè¹µ£¬´¦ÀíÆ÷ÖбØÐëÒªÉèÖÃÓɲ»Í¬ÈÝÁ¿ºÍ²»Í¬·ÃÎÊËٶȵĴ洢Æ÷¹¹³ÉµÄ´æ´¢²ã´Î¡£´æ´¢²ã´Î¿ÉÒÔÌá¸ß³ÌÐòÐÔÄܵÄÔ­ÒòÊDZ£Ö¤ÁË CPU ´ó²¿·ÖÊý¾ÝµÄ·ÃÎÊʱÑÓ¶¼±È½ÏµÍ¡£Ëæ×Å´¦ÀíÆ÷¼ÆËãËٶȺͷôæËٶȵIJî¾àÔ½À´Ô½´ó£¬´æ´¢²ã´Î½á¹¹µÄÉè¼ÆÏÔµÃÔ½À´Ô½ÖØÒª¡£

ÔÚµäÐ͵ÄÏÖ´ú´¦ÀíÆ÷ÖУ¬Ã¿¸ö CPU ºËÓÐ˽ÓÐµÄ L1 Cache£¬Ò»×é CPU ºËÓÐÒ»¸ö¹²ÏíµÄ L2 Cache£¬¶ø L3 Cache ͨ³£»á±»ËùÓеĴ¦ÀíÆ÷ºË¹²Ïí¡£¸ßËÙ»º´æµÄ·ÃÎÊËÙ¶ÈÍùÍùÓëÈÝÁ¿³É·´±È¡£ÈÝÁ¿Ô½´ó£¬·ÃÎÊËÙ¶ÈÔ½µÍ¡£ÓÉÓÚ³ÌÐòÖеÄʱ¼ä¾Ö²¿ÐԺͿռä¾Ö²¿ÐÔ£¬¸ßËÙ»º´æ¿ÉÒÔ×÷Ϊһ¸öÓÐЧµÄÓ²¼þ½á¹¹½«×îÓÐÓõÄÊý¾Ý±£³ÖÔÚÀë´¦ÀíÆ÷½Ï½üµÄλÖá£

Ϊ´Ë£¬¸ßËÙ»º´æÐèÒª¾¡¿ÉÄܶàµØ±£Áô×î½üʹÓõÄÊý¾Ý£¬ÔÚÈÝÁ¿ÓÐÏÞµÄÇ°ÌáϾ¡¿ÉÄܵØÌæ»»³ö×î½üºÜÉÙʹÓõÄÊý¾Ý¡£ÏÖ´úÌåϵ½á¹¹ÖеĸßËÙ»º´æͨ³£ÊÇÓÉÓ²¼þ×Ô¶¯¹ÜÀíµÄ£¬µ«ÊÇΪÁ˼«ÖÂÓÅ»¯ÐÔÄÜ£¬³ÌÐòÔ±ºÍ±àÒëÆ÷ÈÔÐèÒªÖªµÀ´æ´¢²ã´ÎµÄÏà¹ØÐÅÏ¢¡£³ýÁËÓ²¼þ×Ô¶¯¹ÜÀíµÄ¸ßËÙ»º´æÒÔÍ⣬ÏÖ´úÌåϵ½á¹¹ÍùÍù»¹ÓÐÈí¼þ×ÔÖ÷¹ÜÀíµÄ±ãÇ©´æ´¢Æ÷£¨Scratchpad Memory£©¡£

1.1.3 ÁìÓò¶¨ÖƼܹ¹

ÁìÓò¶¨ÖƼܹ¹£¨Domain-Specifific Architecture£©×¨ÓÃÐÔÇ¿£¬·´¶ø¿ÉÒÔʹµÃÂß¼­Éè¼Æ¸ü¼ÓÇ÷ÓÚ¼òµ¥£¬ÔÚÉè¼Æ˼·ÉÏÒ²¸ü¼Ó¿ª·Å£¬²»ÓÃÊܵ½´«Í³Ö¸ÁºÍÉú̬ÒòËصÄÖÆÔ¼£¬ÒѾ­ÔÚ´óÊý¾Ý´¦Àí¡¢Êý×ÖÐźŴ¦Àí¡¢ÃÜÂëѧ¡¢¸ßÐÔÄܼÆË㡢ͼÐÎѧ¡¢Í¼Ïñ´¦ÀíºÍÈ˹¤ÖÇÄܵÈÁìÓò»ñµÃÁ˹㷺µÄÓ¦Óá£

ÁìÓò¶¨ÖÆ´¦ÀíÆ÷Ò»°ã»á¸ù¾ÝÓ¦ÓõľßÌåÌص㣬¶¨ÖÆÔËËãµ¥Ôª£¬¼ò»¯¿ØÖÆÂß¼­£¬Éè¼ÆÓëÁìÓò¼ÆËãÌØÕ÷ÏàÊÊÓ¦µÄ´æ´¢½á¹¹ºÍÊý¾Ýͨ·£¬ËäÈ»ÎþÉüÁËͨÓÃÐÔºÍÁé»îÐÔ£¬È´»ñµÃÁ˽ϸߵÄÐÔÄܺÍÄÜЧ±È¡£

ÌرðÊÇÔÚµÚÈý´ÎÈ˹¤ÖÇÄÜÀ˳±ÖУ¬Ó¿ÏÖ³ö´óÁ¿µÄÃæÏòÈ˹¤ÖÇÄÜÓ¦ÓõÄÁìÓòרÓô¦ÀíÆ÷£¬ÕâЩÈ˹¤ÖÇÄÜ´¦ÀíÆ÷ÔÚ¹¦ºÄ¡¢ÐÔÄܺͼ¯³É¶ÈµÈ·½Ãæ½Ï´«Í³µÄ CPU¡¢GPU ºÍ FPGA ¶¼ÓкܴóµÄÓÅÊÆ¡£

ÁìÓò¶¨ÖƼܹ¹ÌåÏÖ³öÁìÓòµÄרעÐÔ¡£ÒÔÒý±¬µÚÈý´ÎÈ˹¤ÖÇÄÜÀ˳±µÄÉî¶ÈѧϰË㷨ΪÀý£¬ÆäÖ÷ÒªÌصãÊǼÆËãÁ¿ºÍÊäÈë¡¢Êä³ö£¨Input and Output, IO£©Êý¾ÝÁ¿¶¼±È½Ï´ó£¬¶øÇÒ²¢ÐжȽϸߡ£ÕâÒªÇóÃæÏòÈ˹¤ÖÇÄÜÓ¦ÓõÄÁìÓò¶¨ÖÆ´¦ÀíÆ÷£¨¼ò³ÆÈ˹¤ÖÇÄÜ´¦ÀíÆ÷£©ÔÚ´æ´¢½á¹¹¡¢´ø¿íºÍËãÁ¦ÅäÖÃÒÔ¼°»¥Á¬½á¹¹ÉÏ×ö´óÁ¿µÄ¶¨ÖÆ»¯Éè¼Æ¡£

ΪÁËÂú×㺣Á¿Êý¾ÝÔÚ¼ÆËãµ¥ÔªºÍ´æ´¢µ¥ÔªÖ®¼äµÄ¸ßËÙ´«ÊäÐèÇó£¬È˹¤ÖÇÄÜ´¦ÀíÆ÷²»½öÒª¾ß±¸Óë¼ÆËãģʽƥÅäµÄ´æ´¢½á¹¹£¬»¹ÒªÔÚ¼ÆËãµ¥ÔªºÍ´æ´¢µ¥ÔªÖ®¼ä¾ßÓиßËÙµÄͨÐÅÁ´Â·¡£

ΪÁËÂú×ãÉî¶ÈѧϰµÄËãÁ¦ÐèÇóºÍ¼ÆËãģʽÐèÇó£¬È˹¤ÖÇÄÜ´¦ÀíÆ÷²»½öÒª¼¯³É´ó¹æÄ£µÄ²¢ÐмÆËãµ¥Ôª£¬»¹ÒªÄܹ»¸ßЧµØ´¦ÀíÉî¶ÈѧϰËã·¨Öг£¼ûµÄ¾í»ý¡¢È«Á¬½ÓºÍ³Ø»¯µÈ²Ù×÷¡£ÎªÁËÊÊÓ¦Éî¶ÈѧϰËã·¨µÄµäÐͼÆËãģʽ£¬È˹¤ÖÇÄÜ´¦ÀíÆ÷ÔڽṹÉè¼Æʱ»¹Òª¿¼Âǽ«²»Í¬µÄ¼ÆËãµ¥ÔªºÍ´æ´¢Ä£¿éÓлúµØ½áºÏÔÚÒ»Æ𣬾¡Á¿½µµÍÏà¹Ø²Ù×÷Ö®¼äµÄÊý¾Ý¹²Ïí¿ªÏú¡£

¿ÉÒÔ˵£¬Éî¶ÈѧϰËã·¨¼ÈÊǼÆËãÃܼ¯µÄ£¬ÓÖÊǷôæÃܼ¯µÄ¡£ÆäÖмÆËãÃܼ¯µÄ´ú±íÊǾí»ýÔËË㣬¶ø·Ã´æÃܼ¯µÄ´ú±íÔòÊÇÈ«Á¬½ÓÔËËã¡£¾í»ýÉñ¾­ÍøÂ磨Convolutional Neural Network, CNN£©µÄÖ÷Òª¼ÆËãÁ¿Ò²¶¼À´×Ô¾í»ý²ã¡£

ÒÔ GoogleNetΪÀý£¬¾í»ý¼ÆËãÁ¿»áÕ¼µ½×ܼÆËãÁ¿µÄ 90% ×óÓÒ¡£Òò´Ë£¬¼ÓËÙ¾í»ýÔËËãÊÇÌáÉýÉî¶ÈѧϰӦÓÃÐÔÄܵĺËÐÄÈÎÎñ¡£¾í»ý²ãµÄÊäÈëÊÇÉñ¾­ÔªºÍȨֵ£¬¾­¹ýͼ 1.2 ËùʾµÄ N ÖØÑ­»·´¦Àíºó£¬µÃµ½Êä³öÉñ¾­Ôª¡£

Ò»¸ö¾í»ý²ã°üº¬ CO ¸ö C I ¡Á KH ¡Á KW µÄ¾í»ýºË£¬¹²¼Æ CO ¡Á C I ¡Á KH ¡Á KW ¸öȨֵ£¬Ã¿¸ö¾í»ýºË¶ÔÓ¦Êä³öÉñ¾­ÔªµÄÒ»¸öͨµÀ¡£Ã¿¸öÊä³öÉñ¾­ÔªÉæ¼° C I ¡Á KH ¡Á KW ´Î³ËÀÛ¼ÓÔËË㣬ÿ¸ö¾í»ý²ã×ܵijËÀÛ¼ÓÔËËã´ÎÊýΪ HO ¡Á WO ¡Á CO ¡Á C I ¡Á KH ¡Á KW¡£

¾í»ýÔËËãÊÇÒ»ÖÖµäÐ굀 Stencil ÔËË㣬Stencil ÔËËãµÄÌصãÊÇÊäÈëÊä³öÊý¾Ý×éÖ¯³ÉÒ»¸ö¶àάÍø¸ñ£¬Ò»¸öÊä³öÊý¾ÝµãµÄÖµÖ»ÓëÁÙ½üµãµÄÊäÈëµãÓйأ¬ËäȻÿ¸öÊä³öµã¶¼¿ÉÒÔ¶ÀÁ¢¼ÆË㣬µ«ÊÇÔËËãÃܶȽϵͣ¬ÒÀÀµ¹Øϵ¸´ÔÓ¡£Stencil ¼ÆËãģʽÔÚÁ÷ÌåÁ¦Ñ§¡¢Ôª°û×Ô¶¯»ú¡¢ÌìÆøÔ¤±¨¡¢Á£×ÓÄ£Äâ·ÂÕæ¡¢µç´ÅѧµÈÁìÓòµÄÊýÖµ¼ÆËãÖж¼Óй㷺µÄÓ¦Óá£ÎªÁËÔÚÁìÓòרÓô¦Àí¼Ü¹¹ÉÏÓÅ»¯ÕâÀà³ÌÐòµÄÐÔÄÜ£¬ÐèÒªºÏÀíµØ×éÖ¯¼ÆËã´ÎÐòºÍÊý¾Ý²¼¾Ö£¬³ä·Ö·¢¾òÊý¾Ý¾Ö²¿ÐԺͼÆËã²¢ÐÐÐÔ¡£

×÷Ϊ·Ã´æÃܼ¯Ð͵Ĵú±íÔËË㣬ȫÁ¬½ÓÔËËã±¾ÖÊÉÏÊǾØÕóÏòÁ¿ÔËË㣬¿ÉÒÔÓÃͼ 1.3 ËùʾµÄÁ½²ãǶÌ×Ñ­»·À´±íʾ¡£È«Á¬½ÓÔËËãµÄÌصãÊÇ£¬R ºÍ C ±È½Ï´ó£¬Òò¶øȨֵµÄ IO Êý¾ÝÁ¿±È½Ï´ó£»¶þάȨֵÖеÄÿ¸öÔªËض¼Ö»²ÎÓëÒ»´Î³ËÀÛ¼ÓÔËË㣬Ȩֵ¾Ö²¿ÐԱȽϲÕû¸öËã·¨µÄ¼ÆËãÃܶȽϵ͡£

2

±àÒëÆ÷ÃæÁÙµÄÌôÕ½

Ç°Ãæ´Ó¾­µäÌåϵ½á¹¹µÄ½Ç¶È½éÉÜÌáÉýÓ²¼þÐÔÄܵÄÈýÀàÖ÷Òª·½·¨£¬¼´·¢¾ò²¢ÐÐÐÔ¡¢ÓÅ»¯´æ´¢²ã´ÎºÍÁìÓò¶¨ÖƼܹ¹¡£µ«ÊÇ£¬Ìåϵ½á¹¹Éè¼Æ½ö½öÊÇÈ·¶¨ÁËÈí¼þµÄÖ´ÐÐƽ̨£¬¶øÔÚÈ·¶¨µÄÖ´ÐÐƽ̨ÉÏÈçºÎÓÅ»¯³ÌÐò£¬ÔòÊdzÌÐòÔ±ºÍ±àÒëÆ÷µÄÖ°Ôð¡£

ΪÁ˳ä·ÖÀûÓÃÓ²¼þµÄ´¦ÀíÄÜÁ¦£¬Èí¼þ¿ª·¢ÈËÔ±ºÍ±àÒëÆ÷¶¼ÐèÒª³ä·ÖÁ˽âµ×²ãÌåϵ½á¹¹µÄÌص㡣¶ÔÓÚ³ÌÐòÔ±À´Ëµ£¬±àдÕýÈ·¶øÇÒ¸ßЧµÄ´®ÐгÌÐòÊǷdz£À§Äѵģ¬±àдÕýÈ·¶øÇÒ¸ßЧµÄ²¢ÐгÌÐòÔò¸ü¼ÓÀ§ÄÑ£¬ÆäÄѶȻáËæ×Ų¢ÐÐÁ£¶ÈµÄ½µµÍ¶øÔö³¤¡£ÎªÁ˽â·Å³ÌÐòÔ±£¬±àÒëÆ÷ÐèÒªµ£ÆðÐÔÄÜÓÅ»¯µÄÖص£¡£

³ÌÐòÓÅ»¯µÄÄ¿µÄÊǾ¡¿ÉÄܵط¢¾ò³ÌÐòµÄ²¢ÐÐÐÔºÍÓ²¼þµÄ¼ÆËãÄÜÁ¦£¬Ê¹µÃ´úÂëÔÚ¾ßÌåÓ²¼þÉϵÄÖ´ÐÐËٶȴﵽ×î¸ß¡£ÓÅ»¯ÊDZàÒëÆ÷ΪÁ˸ĽøÓ¦ÓóÌÐòµÄijÏî¼¼ÊõÖ¸±ê£¬ÔÚ²»¸Ä±ä³ÌÐòÓïÒåµÄÇ°ÌáÏ£¬ÐÞ¸ÄÆäÄÚ²¿Êý¾Ý½á¹¹»òËùÉú³É´úÂëµÄ¹ý³Ì¡£

ÓÅ»¯¿ÉÒÔÊǼܹ¹Î޹صģ¬Ò²¿ÉÒÔÊǼܹ¹Ïà¹ØµÄ¡£ÎªÁ˰ѳÌÐòԱʹÓø߼¶ÓïÑÔ±àдµÄÓë¼Ü¹¹Î޹صijÌÐòת»»Îª¿ÉÒÔÔÚ¾ßÌåÓ²¼þÉϸßЧִÐеĻúÆ÷Ö¸Á±àÒëÆ÷ÐèÒªÔÚ³ÌÐò·ÖÎö¡¢´úÂëÓÅ»¯ºÍ´úÂëÉú³ÉÕâÈý¸öºËÐIJ½Öè³ÖÐøÒýÈë¸÷ÖÖеļ¼ÊõºÍ·½·¨¡£³£¹æµÄ±êÁ¿ÓÅ»¯¼¼Êõ°üÀ¨Ñ­»·²»±äÁ¿ÍâÌá¡¢³£Á¿´«²¥¡¢¹«¹²±í´ïʽɾ³ý¡¢ÔËËãÇ¿¶ÈÏ÷Èõ¡¢Ñ­»·Õ¹¿ª¡¢Èí¼þÁ÷Ë®¡¢Ö¸Áîµ÷¶ÈµÈ¡£

²¢ÐÐÐÔ¡¢¾Ö²¿ÐÔºÍÁìÓòÏà¹ØÉè¼Æ¶Ô±àÒëÆ÷´øÀ´Á˾޴óµÄÌôÕ½¡£¶øÕâÈý¸öÎÊÌⶼÓëÑ­»·ÓÐ׎ôÃܵÄÁªÏµ£¬ÒòΪ´ó¶àÊýµÄ¼ÆËã»ú³ÌÐò¼¸ºõ½«ËùÓÐÔËÐÐʱ¼ä¶¼»¨·ÑÔÚÑ­»·ÄÚ£¬Òò´ËΪѭ»·ÓÅ»¯¸¶³öµÄŬÁ¦ÍùÍùÄܵõ½×î¸ßµÄ»Ø±¨¡£µ«ÊÇ£¬¶ÔÓ¦ÓóÌÐòµÄÓÅ»¯ÍùÍùÐèÒª³ÌÐòÔ±ºÍ±àÒëÆ÷µÄ¹²Í¬Å¬Á¦¡£ÀýÈ磬³ÌÐòÔ±ÐèÒª¶ÔÑ­»·Ç¶Ì׽ṹ½øÐвð·ÖºÍÖØдµÈ²Ù×÷£¬À´°ïÖú±àÒëÆ÷¸üºÃµØʶ±ðºÍÓÅ»¯Ñ­»·¡£

1.2 ²¢ÐÐÐÔ·¢¾ò

²¢ÐÐÐԵķ¢¾ò¿ÉÒÔͨ¹ýÈí¼þ¾²Ì¬Íê³É£¬Ò²¿ÉÒÔͨ¹ýÓ²¼þ¶¯Ì¬µØ½øÐС£ÍêÈ«ÒÀÀµÓ²¼þ¹ÜÀíÆä²¢ÐÐÐԵĻúÆ÷³ÆΪ³¬±êÁ¿´¦ÀíÆ÷£¬¶øÍêÈ«ÒÀÀµ±àÒëÆ÷À´¹ÜÀíÆä²¢·¢ÐԵĻúÆ÷³ÆΪ³¬³¤Ö¸Áî×Ö¡£

ÔÚһЩ³É±¾»òÕß¹¦ºÄÃô¸ÐµÄǶÈëʽӦÓó¡¾°£¨ÀýÈ磬ÎïÁªÍø£©ÖУ¬Í¨³£ÒÀÀµ±àÒëÆ÷À´·¢¾ò²¢ÐÐÐÔ£¬¶øÔÚ×ÀÃæ¼ÆËã¡¢·þÎñÆ÷ºÍÔƼÆË㳡¾°ÖУ¬ËäȻӲ¼þʵÏÖÁËÇ¿´óµÄµ÷¶È»úÖÆ£¬Ò²ÐèÒªÔÚ±àÒëÆ÷µÄÅäºÏϲÅÄܳä·Ö·¢»ÓÓ²¼þµÄÖ¸Á²¢ÐÐÐÔÄÜÁ¦¡£

±àÒëÆ÷¿ª·¢Ö¸Á²¢ÐÐÐԵĻù±¾Ë¼Â·ÊǽáºÏÓ²¼þµÄ½á¹¹Ìص㣬ͨ¹ýÖ¸Áîµ÷¶ÈµÄ·½·¨À´Ìá¸ßÓ²¼þ×ÊÔ´µÄÀûÓÃÂÊ£¬³£ÓõÄÌá¸ßÖ¸Á²¢ÐÐÐԵķ½·¨Èç±í 1.1 Ëùʾ¡£

Á÷Ë®ÏߵĽṹ³åÍ»¡¢Êý¾ÝÒÀÀµºÍ¿ØÖÆÒÀÀµ»áÔÚ´¦ÀíÆ÷Á÷Ë®ÏßÖÐÒýÈë¿ÕÅÝ¡£ÎªÁ˱ÜÃâÒòÁ÷Ë®Ïß¿ÕÅݵ¼ÖµÄÐÔÄÜËðʧ£¬Í¨³£ÐèÒª±àÒëÆ÷¶ÔÖ¸ÁîÐòÁнøÐо²Ì¬µ÷¶È¡£

ÀýÈ磬¾²Ì¬·ÖÎöÔ¤²â¿ÉÒÔ½áºÏÓ²¼þµÄÍƲâÖ´Ðй¦ÄܼõÉÙÒò¿ØÖÆÁ÷ÒýÈëµÄÁ÷Ë®Ïß¿ÕÅÝ£¬ÑÓ³Ù²Ûµ÷¶ÈÔòÊÇÓÃһЩÓë¿ØÖÆÁ÷Î޹صÄÖ¸ÁîÀ´Ìî³ä·ÖÖ§ÌøתָÁîµÄÑÓ³Ù²Û£¬³£¹æµÄ¾²Ì¬Ö¸Áîµ÷¶ÈÔòÊǽ«Ò»Ð©Ã»ÓÐÊý¾ÝÒÀÀµµÄÖ¸Áî°²ÅÅÔÚÒ»Æð£¬ÒÔ±ÜÃâÒòÊý¾ÝÒÀÀµÒýÈëµÄÁ÷Ë®Ïß¿ÕÅÝ¡£

±àÒëÆ÷Ö§³ÖÖ¸Á²¢ÐеĻù±¾·½·¨ÊÇÔÚ»ù±¾¿éÄÚʵÏÖ¼òµ¥µÄÖ¸Áîµ÷¶È¡£È»¶ø£¬ÔÚÒ»¸ö»ù±¾¿é¼¶±ð¿ª·¢²¢ÐÐÐÔµÄÊÕÒæ²¢²»´ó¡£ÎªÁ˽øÒ»²½·¢¾ò²¢ÐÐÐÔ£¬±ØÐë×ÅÁ¦ÓÚ¿ª·¢Ñ­»·¼¶²¢ÐС£Ñ­»·¼¶ÓÅ»¯¼¼Êõ³¢ÊÔ´Ó¶à¸öÑ­»·µü´úÖÐÑ°ÕÒ²¢ÐÐÐÔ£¬Í¨¹ýÖظ´Ö´Ðжà¸öÑ­»·ÌåÖеĴúÂëÀ´Ìá¸ß³ÌÐòµÄ²¢ÐÐÐÔ¡£Ñ­»·¼¶²¢ÐÐÓÅ»¯¿ÉÒÔÏÔÖøÌáÉý³ÌÐòµÄÕûÌåÐÔÄÜ£¬ÒòΪ³ÌÐòÖÐÔËÐÐʱ¼ä½Ï³¤µÄ´úÂëƬ¶Îͨ³£ÊǾßÓкܶà´Îµü´úµÄÑ­»·¡£

Ñ­»·ÓÅ»¯Ê×ҪĿ±êÊdzä·Ö·¢»ÓÓ²¼þÌṩµÄ¼ÆËãÄÜÁ¦£¬ÒÔ¼õÉÙÑÓ³Ù£¨¾¡¿ÉÄÜ¿ìµØÍê³É¼ÆËãÈÎÎñ£©»òÕßÌá¸ßÍÌÍÂÂÊ£¨ÔÚÏàͬµÄʱ¼äÄÚÍê³É¸ü¶àµÄÈÎÎñ£©¡£Ñ­»·ÓÅ»¯µÄ»ù´¡·½·¨°üÀ¨Ñ­»·Õ¹¿ª¡¢ÈíÁ÷Ë®¡¢²¢Ðл¯ºÍÏòÁ¿»¯¡£

ÆäÖУ¬Ñ­»·Õ¹¿ªÊÇͨ¹ý¸´ÖÆÑ­»·Ö¸ÁîµÄ·½Ê½À´±ÜÃâÑ­»·µÄ¿ØÖÆ¿ªÏú£»ÈíÁ÷Ë®Ö÷ÒªÊǶÔԭʼѭ»·½øÐÐÖØÐÂ×éºÏ£¬½«ÎÞÒÀÀµµÄ·Ã´æºÍ¼ÆËãÖ¸Áî×éºÏÔÚÒ»´ÎÑ­»·µü´úÖУ»ÏòÁ¿»¯ºÍ×Ô¶¯²¢Ðл¯µÄÄ¿µÄÊÇÒª¶Ô´¦Àí´óÁ¿Êý¾Ý»òÕß¿É»®·ÖºóÄܲ¢ÐÐÖ´ÐеijÌÐò¸ÄÉÆÐÔÄÜ¡£

Ñ­»·ÏòÁ¿»¯ÊDZàÒëÆ÷½«Ñ­»·ÖеıêÁ¿ÔËËãת»»ÎªÏòÁ¿ÔËËãµÄ¹ý³Ì£¬×îÖÕÉú³ÉµÄÏòÁ¿ÔËËãÖ¸Áî»áÔÚͬһ¸öÓ²¼þµ¥ÔªÉÏÖ´ÐС£

²¢Ðл¯ÔòÊÇ°ÑÑ­»·²ð·Ö³É¶à¸ö¿ÉÒÔ²¢ÐÐÖ´ÐеÄ×ÓÈÎÎñ£¬ÔÚ²»Í¬µÄÓ²¼þµ¥ÔªÉϲ¢ÐÐÖ´ÐÐÿ¸ö×ÓÈÎÎñ¡£Ñ­»·²¢Ðл¯ÐèÒª½«Ñ­»·½øÐл®·Ö£¬²¢Èöà¸ö´¦ÀíÆ÷·Ö±ðÖ´ÐÐÆäÖеÄÒ»²¿·Ö¡£µ«ÊÇΪÁ˱£Ö¤ÐÔÄÜ£¬»¹±ØÐë°Ñ´¦ÀíÆ÷Ö®¼äµÄͨÐÅÁ¿¼õÉÙµ½×îС¡£Í¨ÐÅÁ¿Êµ¼ÊÉÏÓëÊý¾Ý¾Ö²¿ÐÔ½ôÃÜÏà¹Ø£¬¶ÔÓÚ´¦ÀíÆ÷¾­³£·ÃÎʵÄÊý¾Ý£¬ÔÚÈÎÎñ»òÊý¾Ý»®·ÖʱӦµ±ÈÃËüÀë´¦ÀíÆ÷¸ü½ü£¬·ñÔò»áÒýÈë´óÁ¿µÄͨÐźÍͬ²½²Ù×÷¡£

È»¶ø£¬Ñ­»·ÏòÁ¿»¯ºÍÑ­»·²¢Ðл¯Í¨³£ÊÇÁ½¸ö»¥Ïà³åÍ»µÄÓÅ»¯Ä¿±ê£¬ÒòΪѭ»·²¢Ðл¯Í¨³£ÊÇÔÚÍâ²ãÑ­»·½øÐУ¬¶øÑ­»·ÏòÁ¿»¯Ôò±ØÐëÔÚÄÚ²ãÑ­»·½øÐС£×Ô¶¯²¢Ðл¯ºÍ×Ô¶¯ÏòÁ¿»¯ÊÇÏÖ´ú±àÒëÆ÷ÃæÁÙµÄÖ÷ÒªÀ§ÄÑ£¬Ô­ÒòÊDZàÒëÆ÷ºÜÄÑÓÐЧµØÊÕ¼¯ºÍ·ÖÎöÏòÁ¿»¯»òÕß²¢ÐÐËùÐèÒªµÄÊý¾ÝÏà¹ØÐԺͿØÖÆÏà¹ØÐÔµÈÐÅÏ¢¡£

ÓÉÓÚ±àÒëÆ÷ÔÚ×Ô¶¯ÏòÁ¿»¯ºÍ×Ô¶¯²¢Ðл¯·½ÃæÓöµ½ÁËÀ§ÄÑ£¬Èí¼þ¿ª·¢ÈËÔ±²»µÃ²»×Ô¼º·¢¾òÓ¦ÓõIJ¢ÐÐÐÔ£¬²¢ÇÒ´¦Àí¹²Ïí×ÊÔ´µÄ·ÃÎʳåÍ»£¬Õâ¾ÍÒªÇó±àÒëÆ÷ºÍ±àÒëÓïÑÔÄܹ©ÌṩһÖÖÒ×ÓÚÃèÊö²¢ÐÐÐԵıà³ÌÄ£ÐÍ¡£

1.2 ¾Ö²¿ÐÔ·¢¾ò

´æ´¢Æ÷µÄÈÝÁ¿Ô½´ó£¬·ÃÎÊËÙ¶ÈÔ½Âý¡£ÐҺ㬳ÌÐò·ÃÎʵÄÊý¾Ýͨ³£¾ßÓпռä¾Ö²¿ÐÔºÍʱ¼ä¾Ö²¿ÐÔ¡£Ê±¼ä¾Ö²¿ÐÔͨ³£ÊÇָij¸öÊý¾Ý±»·ÃÎʺ󣬳£³£»áÔڽϽüµÄʱ¼äÔٴα»·ÃÎÊ£»¿Õ¼ä¾Ö²¿ÐÔÔòÊÇָij¸öÊý¾Ý±»·ÃÎÊÒԺ󣬳£³£»áÔڽϽüµÄʱ¼äÔÙ·ÃÎÊÓëÆäÏàÁÚµÄÊý¾Ý¡£¿ÉÒÔÔÚÄÚ´æÖ®ÉÏÉèÖöà¸ö´æ´¢²ã¼¶À´ÀûÓÃÊý¾ÝµÄ¾Ö²¿ÐԸĽø³ÌÐòÐÔÄÜ¡£ÐÔÄܵ÷ÓÅÒ»¸ö·Ç³£ÖØÒªµÄÇ°Ìá¾ÍÊÇÀí½â¼ÆËã»úϵͳµÄ´æ´¢²ã´Î£¬²¢ÇÒ½áºÏÓ²¼þµÄ´æ´¢²ã´ÎºÍ¼ÆËãÌØÕ÷£¬½øÐÐÌض¨µÄ·Ã´æÓÅ»¯´Ó¶øƽºâ·Ã´æºÍ¼ÆËã¡£

ͼ 1.2ËùʾµÄ¾í»ý¹ý³Ì¿ÉÒÔͨ¹ýÑ­»·±ä»»×ª»»³É²»Í¬µÄʵÏÖ·½Ê½ºÍÊý¾Ý¡¢Ê±¼äºÍ¿Õ¼ä¾Ö²¿ÐÔÌØÕ÷£¬¶ø²»Í¬µÄʵÏÖÔÚ²»Í¬µÄÓ²¼þÉÏÐÔÄܲîÒìÒ²·Ç³£´ó¡£ÎÒÃÇÒÔͼ 1.3ËùʾµÄ¾ØÕó¡ªÏòÁ¿³Ë·¨ÔËËãb =

ΪÀý£¬µ± M ≪ N£¨M ԶԶСÓÚ N£©Ê±£¬Ã¿¼ÆËãÒ»¸öÖµ b[col]£¬»áµ¼ÖÂÁÐÏòÁ¿ x ºÍ¾ØÕó A ±»²»¶ÏµØ»»ÈëºÍ»»³ö£¬ÑÏÖØÓ°ÏìÐÔÄÜ¡£

¾­¹ý·ÖÎö¿ÉÒÔ·¢ÏÖ£¬ÔÚÕû¸ö¼ÆËã¹ý³ÌÖУ¬¾ØÕó A ÖеÄÿ¸öÔªËØÖ»»á±»Ê¹ÓÃÒ»´Î¡£Òò´Ë£¬×îÀíÏëµÄÇé¿öÏ£¬A µÄÊý¾ÝÔªËØÖ»ÐèÒª±»¼ÓÔص½ Cache Ò»´Î£¬¶øÁÐÏòÁ¿ x Ôò»á±»·´¸´Ê¹Óà M ´Î¡£Cache ÓÅ»¯µÄ×îÖÕÄ¿±ê¾ÍÊÇÈ·±£¾ØÕó A µÄÊý¾ÝÔªËØÖ»±»¼ÓÔص½ Cache Ò»´Î£¬x µÄÔªËØÖ»±»¼ÓÔØÒ»´Î¡£Òò´Ë£¬¿ÉÒÔ½«Í¼ 1.3ËùʾµÄÔ´´úÂëת»»ÎªÍ¼ 1.4 ËùʾµÄÐÎʽ¡£

·Ã´æ¾Ö²¿ÐÔÓÅ»¯±È½Ï³ÉÊìµÄÊÖ¶ÎÊÇÑ­»··Ö¿é£¨loop tiling£©ºÍÑ­»·Èںϣ¨loop fusion£©¡£Ñ­»··Ö¿éµÄ»ù±¾Ë¼ÏëÊÇͨ¹ý½«´ó¿éµÄÑ­»·µü´ú²ð½â³ÉÈô¸É¸ö½ÏСµÄÑ­»·µü´ú¿é£¬¼õÉÙÒ»¸öÄÚ´æµ¥ÔªµÄÊý¾ÝÖØÓÃÖÜÆÚ£¬ÕâÖÖÖØÓÃÖÜÆڼȿÉÒÔÊÇʱ¼äÉϵÄÒ²¿ÉÒÔÊÇ¿Õ¼äÉϵġ£Ñ­»·ÈÚºÏÔòÊǽ«¶à¸ö¾ßÓС°Éú²ú-Ïû·Ñ¡±¹ØϵµÄÑ­»·ºÏ²¢ÔÚÒ»Æ𣬴ӶøËõ¶ÌÁËÿ¸öÖмäÊý¾ÝµÄÖØÓÃÖÜÆÚ£¬±ÜÃâÖмä½á¹û±»»»³ö¸ßËÙ»º´æ¡£

Ñ­»··Ö¿éºÍÑ­»·Èں϶¼¿ÉÒÔÈ·±£Ä³¸öÄÚ´æµØÖ·µ¥Ôª±»¼ÓÔص½ Cache ÒԺ󣬸ÃÄÚ´æµØÖ·µ¥Ôª»á¾¡Á¿±£ÁôÔÚ Cache ÖУ¬ÕâÑù¾Í¿ÉÒÔ´ïµ½¼õÉÙƬÍâ·Ã´æ¿ªÏúµÄÄ¿µÄ¡£È»¶ø£¬Ñ­»··Ö¿éºÍÑ­»·ÈÚºÏÒ²ÊÇÁ½¸öÏ໥³åÍ»µÄÓÅ»¯Ä¿±ê£¬ÒòΪѭ»·ÈںϻᵼÖÂÑ­»··Ö¿éµÄÔ¼ÊøÔö¼Ó£¬Áé»îÐÔ±ä²î¡£

1.3 ƽ̨ͨÓÃÐÔ

±à³ÌÄ£ÐÍÊÇÌåϵ½á¹¹ºÍ³ÌÐòÖ®¼äµÄ½Ó¿ÚºÍÇÅÁº¡£±à³ÌÄ£Ð͵ÄÉè¼ÆÐèÒª¿¼ÂǾßÌåµÄÓ²¼þ»úÆ÷Ä£ÐÍ£¬Ôڿɱà³ÌÐԺͳÌÐòÐÔÄÜÖ®¼äÕÒµ½Æ½ºâµã¡£±à³ÌÄ£ÐÍʹµÃÌåϵ½á¹¹ÓëÓ²¼þÎ޹أ¬Ó¦ÓÃÒ²¶ÀÁ¢ÓÚÌåϵ½á¹¹¡£ÈçºÎÏò³ÌÐòԱչʾÁìÓòÏà¹ØµÄÓ²¼þÌØÐÔ£¬ÈçºÎ±©Â¶²¢ÐÐÐԺ;ֲ¿ÐÔ£¬ÈçºÎʵÏÖ¿çƽ̨µÄ¼æÈÝÐÔ£¬ÈçºÎ¼ò»¯ÁìÓòÏà¹ØµÄ±à³Ì£¬ÊDZà³ÌÄ£ÐÍÐèÒªÖصã½â¾öµÄÎÊÌâ¡£

´«Í³ÏµÍ³½á¹¹µÄ²¢ÐÐÐÔͨ³£°üÀ¨³¬½ÚµãÖ®¼äµÄ²¢ÐÐÐÔ¡¢³¬½ÚµãÄÚ¶à¸ö´¦ÀíÆ÷Ö®¼äµÄ²¢ÐÐÐÔ¡¢´¦ÀíÆ÷ÄÚ¶à¸ö´¦ÀíÆ÷ºËÐÄÖ®¼äµÄ²¢ÐÐÐÔ¡¢´¦ÀíÆ÷ºËÄÚ¶à¸ö²¢Ðй¦Äܵ¥ÔªÖ®¼äµÄ²¢Ðл¯¡£³¬½Úµã¡¢¶àºË´¦ÀíÆ÷¡¢´¦ÀíÆ÷ºË¡¢¹¦Äܵ¥Ôª¹¹³ÉÏÖÔÚ¼ÆËãϵͳµÄ²ã´Î»¯×éÖ¯½á¹¹¡£

ÔÚ²»Í¬µÄ²ã´Î£¬ÍùÍù¶ÔÓ¦²»Í¬µÄ¿ª·¢²¢ÐÐÐԵķ½·¨ºÍ±à³ÌÄ£ÐÍ¡£ÀýÈ磬ÔÚ¶à¸ö³¬½ÚµãÖ®¼ä¿ÉÒÔÀûÓÃÏûÏ¢´«µÝµÄ²¢Ðбà³ÌÄ£ÐÍ£¨ÀýÈç Message Passing Interface, MPI£©À´·¢¾ò³¬½ÚµãÖ®¼äµÄ²¢ÐÐÐÔ£¬ÔÚ³¬½ÚµãÄڵĶà¸ö´¦ÀíÆ÷Ö®¼äÍùÍùͨ³£¹²ÏíÄÚ´æµÄ¶à½ø³Ì±à³Ì·½Ê½·¢¾ò²¢ÐÐÐÔ£¬ÔÚµ¥¸ö´¦ÀíÆ÷ºËÄÚÔòÊÇͨ¹ý¹²ÏíÄÚ´æ±à³ÌÄ£ÐÍ£¨ÀýÈçOpenMP£©ÊµÏÖ¶àÏß³ÌÖ®¼äµÄ²¢ÐÐÐÔ£¬ÔÚµ¥¸ö´¦ÀíÆ÷ºËÐÄÄÚÔò¿ÉÒÔÀûÓà SIMD/SIMT ±à³ÌÄ£ÐÍÀ´·¢¾ò¶à¸ö²¢Ðй¦Äܵ¥ÔªÖ®¼äµÄ²¢ÐÐÐÔ¡£

ÁìÓòÏà¹ØÉè¼Æͨ³£ÊÇÔÚ´«Í³Ìåϵ½á¹¹µÄ»ù´¡ÉÏ£¬Ôö¼ÓÁìÓòÏà¹ØµÄÓ²¼þÌØÐÔ£¬ÔÚ¸´ÓÃÏÖÓÐÈíÓ²¼þÉú̬µÄ»ù´¡ÉÏʵÏÖ¶ÔÌض¨Ó¦ÓõĸßЧ´¦Àí¡£¶ø±àÒëÆ÷ÔòÐèÒªÓëÓ²¼þÃÜÇÐÅäºÏ£¬Ïò³ÌÐòÔ±±©Â¶Ò×ÓÚʹÓõıà³ÌÄ£ÐÍ¡£

ÔÚ±à³ÌÄ£ÐÍÉè¼Æʱ£¬ÐèҪƽºâͨÓÃÐÔºÍÁìÓòרÓÃÐÔÖ®¼äµÄ¹Øϵ£¬Í¨ÓÃÐÔ¿ÉÒÔ·½±ã³ÌÐòµÄ¹¦ÄܺÍÐÔÄܵÄ×ÔÓÉǨÒÆ£¬¶øרÓÃÐÔÔò¿ÉÒÔÈ·±£Ìض¨Ó¦ÓÃÔÚÌض¨Ó²¼þÉϵÄÐÔÄÜ¡£Í¨³£Çé¿öÏ£¬±à³ÌÄ£Ð͵ijéÏó²ã´ÎÔ½¸ß£¬Æ½Ì¨µÄͨÓÃÐÔÒ²¾ÍÔ½ºÃ£¬µ«ÊǶÔÌض¨ÁìÓòµÄÐÔÄÜͨ³£²»Ò×±£Ö¤¡£

²»Í¬µÄ±à³ÌÄ£ÐͶÔÓ¦²»Í¬µÄ²¢Ðл¯»úÖÆ¡£²¢Ðбà³ÌÄ£ÐÍÌṩµÄ²¢Ðл¯»úÖÆ¿ÉÒÔ·ÖΪÁ½ÀࣺÒþʽ²¢ÐкÍÏÔʽ²¢ÐС£ÏÔʽ²¢ÐÐÊÇÖ¸ÓɳÌÐòÔ±ÀûÓÃÓïÑÔÌØÐÔ¡¢±àÒëÆ÷ÃüÁî»òÕ߿⺯Êý¶Ô²¢ÐÐÐÔ½øÐÐÏÔʽÃèÊö£¬¶øÒþʽ²¢ÐÐÔòÊÇͨ¹ý±àÒëÆ÷ºÍÔËÐÐʱϵͳʵÏÖ×Ô¶¯²¢Ðл¯¡£µ«ÊÇ£¬ÊÜÏÞÓÚ±àÒëÆ÷µÄ²¢ÐÐÓÅ»¯ÄÜÁ¦£¬×Ô¶¯²¢Ðл¯ºÜÄÑ´ïµ½½Ï¸ßµÄÐÔÄÜ¡£

ΪÁËÀûÓÃÏÔʽ²¢Ðбà³ÌÄ£ÐÍ¿ª·¢²¢ÐÐÓ²¼þµÄ¼ÆËãÄÜÁ¦£¬±ØÐë²ÉÓÃÏòÁ¿»¯ºÍ²¢Ðл¯µÄ˼ά·½Ê½À´±àдÈí¼þ´úÂë¡£´®ÐгÌÐòÒ²ÐèÒªÖØбàдÒÔÊÊÅä²¢ÐÐÓ²¼þ¡£ÏÔʽ²¢Ðбà³ÌÄ£Ð͵ıà³ÌÄѶȸü´ó£¬¶øÇÒƽ̨ÊÊÓ¦ÐԽϲ×Ô¶¯²¢Ðл¯ÊǶÔÉϲãÓ¦ÓÃ×îÓѺõķ½Ê½£¬Ëü¿ÉÒÔ³ä·Ö¸´ÓÃÏÖÓеÄÈí¼þÉú̬¡£È»¶ø£¬×Ô¶¯²¢Ðл¯ÊDZàÒëÆ÷µ±Ç°ÃæÁÙµÄÖ÷ÒªÀ§ÄÑ¡£

3

Ñ­»·ÓÅ»¯µÄÊýѧ³éÏó

¿Æѧ¼ÆËãºÍÉî¶ÈѧϰÁìÓòÖдó¶àÊýµÄÓ¦ÓóÌÐòµÄºËÐIJ¿·Ö¶¼ÊÇ N (N ¡Ý 1) ÖØǶÌ×Ñ­»·£¬Ñ­»·ÌåÄÚ»ù±¾¶¼»áÉæ¼°¶ÔÊý×éµÄ¹æÔò·ÃÎÊ£¬¶Ô±êÁ¿µÄ·ÃÎÊÒ²¿ÉÒÔ¿´³ÉÊǶԳ¤¶ÈΪ 1 µÄÊý×éµÄ·ÃÎÊ¡£

Ñ­»·×÷Ϊ³ÌÐòÖкÄʱ×î¶àµÄ³ÌÐò¶Î£¬Ê¼ÖÕÊDZàÒëÓÅ»¯µÄºËÐÄÑо¿¶ÔÏó¡£ÔÚ¹ýÈ¥ÊýÊ®ÄêµÄÑо¿ºÍʵ¼ù¹ý³ÌÖУ¬Ñ§Êõ½ç¶ÔÑ­»·ÓÅ»¯µÄÑо¿È¡µÃÁ˾޴óµÄ³É¹¦£¬²¢Öð½¥ÐγÉÁËÒÀÀµÅжϡ¢Ñ­»·±ä»»¡¢ÈÎÎñ»®·Ö¡¢ÈÎÎñÓ³Éä¡¢²¢ÐÐÐԺ;ֲ¿ÐÔÓÅ»¯ºÍ´úÂëÉú³ÉµÈ¼¸¸ö»ù´¡µÄÑо¿·½Ïò¡£

ÕâЩÑо¿·½ÏòÖ®¼ä´æÔÚ׎ôÃܵÄÁªÏµ¡£ÀýÈ磬ÒÀÀµÅжÏÊÇÑ­»·±ä»»µÄ»ù´¡£¬Ö»ÓÐÎÞÒÀÀµµÄÑ­»·µü´úÖ®¼ä¿ÉÒԸıäÖ´ÐÐ˳Ðò£»Ñ­»·±ä»»µÄÄ¿µÄÊÇÔÚ²»ÆÆ»µ²¢ÐÐÐԺ;ֲ¿ÐԵĻù´¡ÉÏʵÏÖÈÎÎñ»®·ÖºÍÈÎÎñÓ³É䣻ѭ»·±ä»»¾ö¶¨ÁËÈÎÎñ»®·ÖºÍÈÎÎñÓ³ÉäµÄÁ£¶ÈÒÔ¼°³ÌÐòÐÔÄÜ£»ÈÎÎñ»®·ÖºÍÈÎÎñÓ³ÉäÓֻᷴ¹ýÀ´Ó°Ïì³ÌÐòµÄ²¢ÐÐÐԺ;ֲ¿ÐÔ£¬½ø¶øÏÞÖÆÁËÑ­»·±ä»»µÄ˳ÐòºÍÖÖÀࣻ´úÂëÉú³ÉÊÇÑ­»·ÓÅ»¯µÄ×îºóÒ»¸ö²½Ö裬¿ÉÒÔʵÏÖÔ´µ½Ô´·­Ò룬Ҳ¿ÉÉú³ÉµÍ¼¶ÓïÑԵĵȼ۱íʾ¡£

ÔÚÑо¿ÖÐÈËÃÇ·¢ÏÖ£¬N (N ¡Ý 1) ÖØÑ­»·Ç¶Ì×µÄÉϽçºÍϽç±í´ïʽͨ³£ÊÇ·ÂÉä±í´ïʽ£¨´Ó N άʵÊýÓò

µ½ M άʵÊýÓò RM µÄÓ³Éä x ¡ú Ax + b ³ÆΪ·ÂÉä±ä»»£¬Èç¹û A ÊÇÒ»¸ö M ¡Á N µÄ¾ØÕó£¬x ÊÇÒ»¸ö N άÏòÁ¿£¬b ÊÇÒ»¸ö M άÏòÁ¿¡£·ÂÉä±ä»»¿ÉÒÔ¿´³ÉÊÇÔÚÏßÐԱ任 Ax µÄ»ù´¡ÉÏÔö¼ÓÁËÒ»¸ö³£ÊýÏî b¡££©£¬¶øÇÒÔÚÑ­»·ÌåÄڵĶàάÊý×éϱêҲͨ³£ÊÇÑ­»·±äÁ¿µÄ·ÂÉä±í´ïʽ¡£

ÔÚÑ­»·Ô¼ÊøÒÔ¼°Êý×éϱê¾ùΪ·ÂÉä±í´ïʽµÄÇ°ÌáÏ£¬ÒÀÀµÅжÏÍË»¯ÎªÏßÐÔ±í´ïʽ֮¼äµÄÅеÈÎÊÌ⣬×îÖÕ¿ÉÒÔÓÃÏßÐԹ滮ÀíÂÛ½â¾ö£»¶øÑ­»·±ä»»ÒÔ¼°»ùÓÚÑ­»·±ä»»½øÐеÄÈÎÎñ»®·Ö¡¢ÈÎÎñÓ³Éä¡¢²¢ÐÐÐԺ;ֲ¿ÐÔÓÅ»¯£¬Ò²¿ÉÒÔÓ÷ÂÉä±í´ïʽ½øÐÐÃèÊö¡£

Ò²¾ÍÊÇ˵£¬ÔÚ¼ÙÉèÑ­»·Ô¼ÊøÒÔ¼°Êý×éϱê¾ùΪ·ÂÉä±í´ïʽµÄÇ°ÌáÏ£¬ÒÀÀµÅжϡ¢Ñ­»·±ä»»¡¢ÈÎÎñ»®·Ö¡¢ÈÎÎñÓ³Éä¡¢²¢ÐÐÐԺ;ֲ¿ÐÔÓÅ»¯ÕâЩÑо¿·½Ïò¿ÉÒÔͳһʹÓ÷ÂÉä¹ØϵÀ´ÃèÊö£¬ÐγÉÁËÒ»¸öÍ걸ºÍ×ÔÇ¡µÄÀíÂÛÌåϵ£¬Ò²¾ÍÊǶàÃæÌåÀíÂÛ¡£

¶àÃæÌåÀíÂÛÊÇÒ»ÖÖÔÚÏßÐÔ´úÊý¡¢ÏßÐԹ滮¡¢¼¯ºÏÂÛ¡¢ÊýÀíÂß¼­ºÍ×îÓÅ»¯ÀíÂ۵Ļù´¡ÉÏÖð²½Ðγɺͷ¢Õ¹ÆðÀ´µÄ³éÏóÊýѧģÐÍ£¬ËüÓõü´ú¿Õ¼ä¡¢Óï¾äʵÀý¡¢·ÃÎʹØϵ¡¢ÒÀÀµ¹ØϵºÍµ÷¶ÈÀ´ÃèÊöÒ»¸ö³ÌÐò£¬²¢»ùÓÚµ÷¶È±ä»»ÊµÏÖһϵÁв¢ÐÐÐԺ;ֲ¿ÐÔÏà¹ØµÄÓÅ»¯¡£

¶àÃæÌåÀíÂÛÒѾ­ÔÚѧÊõ½çºÍ¹¤Òµ½ç³ÉÊìµÄ±àÒëÆ÷ϵͳÖеõ½»ñµÃÁ˾޴óµÄ³É¹¦£¬GCC µÄ Graphite ¿ò¼Ü¡¢ºÍ LLVM µÄ Polly ¿ò¼Ü¶¼ÊÇ»ùÓÚ¶àÃæÌåÀíÂÛʵÏֵģ¬²»½öÈç´Ë£¬Open64ºÍ IBM XLµÈ±àÒëÆ÷Ò²ÌṩÁË»ùÓÚ¶àÃæÌåÀíÂÛµÄÑ­»·ÓÅ»¯¹¦ÄÜ¡£

¶àÃæÌåÀíÂÛ¶ÔÓÚÕâÀàÑ­»·Ô¼ÊøºÍÊý×éϱê¾ùΪ·ÂÉä±í´ïʽµÄÑ­»·ÓÅ»¯ÎÊÌâ×öÁËÈçϳéÏó£º

(1) µü´ú¿Õ¼ä³éÏ󣺽«Ò»¸ö N ÖØǶÌ×Ñ­»·³éÏóΪһ¸ö N άµü´ú¿Õ¼ä£¬Ã¿²ãÑ­»·µÄÑ­»·ÉϽçºÍÑ­»·Ï½çµÄÏßÐÔÔ¼Êø¹¹³ÉÕû¸öµü´ú¿Õ¼äµÄÔ¼Êø¼¯ºÏ¡£Õâ¸ö N άµü´ú¿Õ¼ä¶ÔÓ¦ N ÖØÑ­»·Öи÷¸öÑ­»·Ë÷Òý±äÁ¿µÄÈ¡Öµ¼¯ºÏ£¬Ö»ÓÐÂú×ãÔ¼ÊøµÄ N άÏòÁ¿²ÅÊÇÒ»¸öºÏ·¨µÄµü´úÏòÁ¿¡£

(2) Óï¾äʵÀý³éÏ󣺽« N ÖØǶÌ×Ñ­»·ÖеÄÿ¸ö¾²Ì¬Óï¾ä¼°Æä¶ÔÓ¦µÄÑ­»·µü´úÏòÁ¿µÄ×éºÏ³éÏó³ÉÒ»¸ö¶¯Ì¬Óï¾äʵÀý¡£¾²Ì¬Óï¾ä S µÄÒ»¸ö¶¯Ì¬·ÃÎÊʵÀý¿ÉÒÔд³É S(i)£¬ÆäÖÐ i ±íʾһ¸ö N ÖØǶÌ×Ñ­»·µÄµü´úÏòÁ¿¡£

(3) Êý¾Ý¿Õ¼ä³éÏ󣺽«Ò»¸ö M άÊý×é³éÏóΪһ¸ö M άµÄÊý¾Ý¿Õ¼ä£¬Êý¾Ý¿Õ¼äµÄά¶È¿ÉÒÔÓëµü´ú¿Õ¼ä²»Í¬¡£µü´ú¿Õ¼äÖеÄÈÎÒâÒ»¸öµü´úÏòÁ¿¿ÉÒÔͨ¹ýÊý¾Ý·ÃÎʹØϵӳÉäµ½Êý¾Ý¿Õ¼äÖеÄijһ¸ö¾ßÌåµÄλÖá£

(4) ´¦ÀíÆ÷¿Õ¼ä³éÏ󣺽«Ò»¸öϵͳÖеĿÉÒÔ²¢Ðй¤×÷µÄ¼ÆËãµ¥Ôª³éÏóΪ K άµÄ´¦ÀíÆ÷¿Õ¼ä£¬´¦ÀíÆ÷¿Õ¼äÖеÄÿ¸ö´¦ÀíÆ÷¶¼ÓÐΨһµÄÕûÊý±êʶ¡£

(5) ÒÀÀµ¹Øϵ³éÏ󣺶ÔÊý¾Ý¿Õ¼äµÄ·ÃÎʹØϵ¿ÉÒÔϸ·ÖΪ¶Á·ÃÎʺÍд·ÃÎÊ£¬¶¯Ì¬Óï¾äʵÀýÖ®¼äµÄÒÀÀµ¹Øϵ¾ÍÊdzÌÐòÖжÔÊý¾Ý¿Õ¼äµÄ¶Áд˳ÐòÔ¼Êø¡£

(6) µ÷¶È³éÏ󣺽«ÈÎÒâÒ»¸ö¶¯Ì¬Óï¾äʵÀýÓ³Éäµ½Ò»¸ö¶àάµÄÖ´ÐÐʱ¼ä£¬Ï൱ÓÚ¸øÿ¸ö¶¯Ì¬Óï¾äʵÀýÖ¸¶¨ÁËÒ»¸öÖ´ÐÐ˳Ðò£¬Õâ¸öÖ´ÐÐ˳ÐòÊÇÓɶàάʱ¼äµÄ×Öµä˳ÐòÃèÊöµÄ¡£

»ù±¾ÉÏÊö³éÏóÄ£Ð͵ıàÒëÓÅ»¯·½·¨Ò²³ÆΪ¶àÃæÌåÓÅ»¯£¨polyhedral optimization£©¡£¶àÃæÌåÄ£ÐÍ°ÑÑ­»·ÓÅ»¯ÎÊÌâת»»³É¶àά¿Õ¼äºÍÕâЩ¿Õ¼äÖ®¼äµÄ·ÂÉäÓ³É䣬ʹµÃÎÒÃÇ¿ÉÒÔʹÓñê×¼µÄÊýѧ¼¼Êõ (ÌرðÊÇÏßÐԹ滮£©À´½â¾öÑ­»·²¢ÐÐÐԺ;ֲ¿ÐÔÓÅ»¯ÎÊÌâ¡£

Ê×ÏÈ¿¼ÂÇÑ­»·µü´ú¿Õ¼ä¡£ÓÉÓÚ N ÖØÑ­»·µÄµü´ú¿Õ¼äÊÇÒ»¸öÂú×ãÑ­»·Ô¼ÊøµÄ N ά×ӿռ䣬Òò´Ë¹¹ÔìÑ­»·µü´ú¿Õ¼äµÄºËÐÄÊÇÈ·¶¨Ã¿Ò»ÖØÑ­»·µÄÉϽçºÍϽ硣¶øÔÚÕâ¸ö¹ý³ÌÖÐͨ³£ÐèÒª¶ÔÑ­»·×öһЩµÈ¼Û±ä»»£¬Í¬Ê±¶ÔһЩÎÞ·¨ÔÚ±àÒëʱȷ¶¨µÄÇé¿ö±£ÊØ´¦Àí¡£¾­¹ýµÈ¼Û±ä»»µÄÑ­»·Ö»ÓÐÒ»¸öÑ­»·Ë÷Òý±äÁ¿£¬¶øÇÒÑ­»·Ë÷Òý±äÁ¿µÄ²½Îª 1¡£¶ÔÓÚϽçΪ l¡¢²½³¤Îª d£¨d > 1£©µÄÑ­»·Ë÷Òý±äÁ¿ i£¬¿ÉÒÔÒýÈëÒ»¸öеÄÑ­»·Ë÷Òý±äÁ¿ i¡ä£¬½«Ñ­»·ÖÐ¶Ô i µÄÒýÓôúÊýÌ滻Ϊ d ¡Ái¡ä +l£¬´Ó¶øʵÏÖÑ­»·Ë÷Òý±äÁ¿µÄ´úÊýÌæ»»¡£

¶ÔÓÚÑ­»·ÉϽçÎÞ·¨ÔÚ±àÒëʱȷ¶¨µÄÇé¿ö£¬¿ÉÒÔ±£ÊصØÈÏΪѭ»·ÉϽçΪ +¡Þ£¬Í¬Àí£¬¶ÔÓÚÑ­»·Ï½çÎÞ·¨ÔÚ±àÒëʱȷ¶¨µÄÇé¿ö£¬¿ÉÒÔ±£ÊصØÈÏΪѭ»·Ï½çΪ −¡Þ¡£

µ«ÊÇ£¬ÐèҪעÒâµÄÊÇ£¬µ±Ñ­»·ÉϽç»òϽçÊÇ»ùÓÚij¸öÈ«¾Ö²»±äµÄ·ûºÅµÄ±í´ïʽʱ£¬ÊDz»ÐèÒª×ö±£ÊØ´¦ÀíµÄ¡£µü´ú¿Õ¼äÊÇÒ»¸öÕûÊý¼¯£¬ÕûÊý¼¯ÃèÊöµÄµü´úÓò²¢²»Òþº¬Óï¾äµÄʵ¼ÊÖ´ÐÐ˳Ðò£¬ÒòΪʵ¼ÊµÄÖ´ÐÐ˳ÐòÓɵ÷¶ÈÀ´±íʾ¡£

¶ÔÓÚ¾­¹ýÇ°ÊöµÈ¼Û±ä»»ºóµÄ N ÖØÑ­»·£¬ÓÉÑ­»·µü´ú±äÁ¿ºÍÑ­»·ÉÏϽ繹³ÉµÄÏßÐÔ²»µÈʽ×飬¹¹³ÉÕû¸ö N άµü´ú¿Õ¼äµÄÔ¼Êø¼¯ºÏ¡£ÔÚ¶àÃæÌåÓÅ»¯ÖУ¬ÎªÁË·½±ãÀûÓÃÕûÊýÏßÐԹ滮µÄÊýѧģÐÍʵÏÖÏàÓ¦µÄÓÅ»¯£¬Í¨³£½«Ô¼Êøд³ÉÒÔϲ»µÈʽÐÎʽ£º

ÆäÖУ¬

±íʾ N άÕûÊý¿Õ¼ä£¬B ÊÇÒ»¸ö N ¡Á N µÄÕûÊý¾ØÕó£¬d ÊÇÒ»¸ö³¤¶ÈΪ N µÄÕûÊýÏòÁ¿£¬0 ΪN άÁãÏòÁ¿¡£

¸ù¾ÝÏßÐÔ´úÊýµÄ»ù´¡ÖªÊ¶¿ÉÖª£¬N ά·ÂÉä¿Õ¼äÖеÄÒ»¸ö³¬Æ½ÃæÊÇÒ»¸ö N −1 άµÄ·ÂÉä×ӿռ䣬¿ÉÒÔÓ÷ÂÉä·½³Ì×é Mx + c = 0 À´±íʾ¡£N ά¿Õ¼äµÄÒ»¸ö³¬Æ½Ã潫 N ά·ÂÉä¿Õ¼ä»®·ÖΪÁ½²¿·Ö£¬Ã¿Ò»²¿·Ö³ÆÓë¸Ã³¬Æ½ÃæÒ»Æ𶼱»³ÆΪһ¸ö°ë¿Õ¼ä£¬°ë¿Õ¼ä¿ÉÒÔÓà Mx + c ¡Ý 0 À´±íʾ¡£Óɶà¸ö°ë¿Õ¼äµÄ½»¼¯¹¹³ÉµÄ×Ó¿Õ¼ä³ÆΪ¶àÃæÌå¡£

(1¨C1)¶¨ÒåÁË N ά¿Õ¼äÖеÄÒ»¸ö͹¶àÃæÌ壨convex polyhedron£©¡£Âú×ãÉÏÊöÔ¼ÊøµÄÈÎÒâÁ½µãµÄÁ¬ÏßÒ»¶¨Î»ÓÚÒ»¸ö¶àÃæÌåÄÚ²¿¡£Í¹¶àÃæÌåÖÐÈÎÒâÒ»¸öÕûÊýµã¶¼ÊÇÒ»¸öºÏ·¨µÄÑ­»·µü´úÏòÁ¿¡£Í¹¶àÃæÌåÔÚÈÎÒâά¶ÈµÄͶӰ×îÖÕ¶ÔÓ¦¸Ãά¶ÈµÄÑ­»·ÉϽçºÍϽ硣

ÔÚ¶àÃæÌåÄ£ÐÍÖУ¬(1¨C1)ËùʾµÄ¾ØÕó±íʾ»¹¿ÉÒÔÓÃÕûÊý¶àÃæÌåºÍ Presburger ±íʾ¡£ÎÒÃǽ«ÔÚµÚ2Õ¸ø³öÕûÊý¼¯ºÍ Presburger ±íʾµÄ׼ȷ¶¨Ò塣ͼ1.3ÖеĶþÖØÑ­»·¶ÔÓ¦µÄµü´ú¿Õ¼ä¿ÉÒÔÓÃPresburger ±íʾ£º

À´ÃèÊö¡£

²ÉÓà Presburger ±íʾÓÐÀûÓÚʵÏÖ×Ô¶¯ÍƵ¼£¬»¹¿ÉÒÔÔÚÃèÊöÏßÐÔÔ¼ÊøʱʹÓÃÕûÊýÈ¡Óà (rem)¡¢ÏòÏÂÈ¡Õû³ý·¨£¨flfloordiv£©¡¢ÏòÉÏÈ¡Õû³ý·¨£¨ceildiv£©¡¢ÕûÊýÈ¡×î´óÖµ (max)¡¢ÕûÊýÈ¡×îСֵ (min) µÈÌØÊâÔËËã·û¡£ÔÚ·ÂÉäÔ¼ÊøµÄ»ù´¡ÉÏÔö¼Ó rem¡¢flfloordiv¡¢ceildiv¡¢max ºÍ min µÈÌØÊâÔËËã·ûºóµÃµ½µÄ±í´ïʽ³ÆΪ½üËÆ·ÂÉä±í´ïʽ¡£¶àÃæÌåÄ£ÐÍÒªÇóÑ­»·Ë÷Òý±äÁ¿µÄÉϽçºÍϽç±í´ïʽ±ØÐëÊÇÓÉ·ûºÅ³£Á¿»òÕßÍâ²ãÑ­»·Ë÷Òý±äÁ¿¹¹³ÉµÄ½üËÆ·ÂÉä±í´ïʽ¡£

½ÓÏÂÀ´½éÉÜÊý¾Ý¿Õ¼ä¶ÔÓ¦µÄ·ÃÎʺ¯Êý¡£¶àÃæÌåÄ£ÐÍÒªÇó¶ÔÊý¾Ý¿Õ¼äµÄ·ÃÎʺ¯Êý±ØÐëÊÇÓÉ·ûºÅ³£Á¿»òÍâ²ãÑ­»·Ë÷Òý±äÁ¿¹¹³ÉµÄ½üËÆ·ÂÉä±í´ïʽ¡£ÔÚ¶àÃæÌåÄ£ÐÍÖУ¬¶¯Ì¬Óï¾äʵÀý S(i) ÖжÔÊý×é A µÄ¶Á·ÃÎʺÍд·ÃÎÊ¿ÉÒÔ·Ö±ðÓÃ

ºÍ À´±íʾ£¬ÆäÖÐ i ±íʾ¶àÃæÌåÖеÄÒ»¸öµü´úÏòÁ¿¡£¶ÔÓÚÒ»¸öÓï¾äÖÐÓжà´Î¶Ô A µÄ·ÃÎʵÄÇé¿ö£¬¿ÉÒÔ²ð³É¶à¸ö»ù±¾·ÃÎʲÙ×÷¡£Í¼ 1.3 ÖеÄÓï¾ä S2 ¶Ô Out Êý×éµÄ·ÃÎʺ¯ÊýΪ

ÔÚ¼Ù¶¨ËùÓеÄÑ­»·µü´ú¶¼×ñѭͬÑùµÄ·ÂÉä±í´ïʽԼÊøµÄÇ°ÌáÏ£¬¿ÉÒÔ½« N άµü´úÏòÁ¿¶Ô M άÊý¾Ý¿Õ¼äµÄµÄ·ÂÉä·ÃÎʺ¯Êý±íʾΪ¾ØÕóÐÎʽ

ÔÚ(1¨C4)ÖУ¬i ÊÇÂú×ãµü´ú¿Õ¼äÔ¼ÊøµÄ N άѭ»·µü´úÏòÁ¿£»F ÊÇ M ¡Á N άÕûÊý¾ØÕó£¬ÓÃÓÚ±íʾ·ÂÉä·ÃÎʺ¯ÊýÖÐÿ¸öÑ­»·Ë÷Òý±äÁ¿µÄϵÊý£»f Ϊ M άÕûÊýÏòÁ¿£¬ÓÃÓÚ±íʾ M άÊý¾Ý¿Õ¼äµÄË÷Òý±í´ïʽÖеij£Á¿²¿·Ö¡£

·ÃÎÊÊý¾Ý¿Õ¼äµÄÿһ¸ö²Ù×÷¶¼¶ÔӦΨһµÄ F ºÍ f£¬²»Í¬µÄÊý¾Ý·ÃÎʲÙ×÷µÄ F ºÍ f ¿ÉÒÔ²»Í¬¡£·ÂÉä·ÃÎʺ¯ÊýÌṩÁË´Óµü´ú¿Õ¼äµ½Êý¾Ý¿Õ¼äµÄÒ»¸öÓ³Éä¹Øϵ£¬»ùÓÚ·ÂÉä·ÃÎʺ¯Êý¿ÉÒÔÈ·¶¨Ä³Ð©µü´úÊÇ·ñ»á·ÃÎÊͬһ¸öÊý¾Ý¡¢»òÕßÏàÁÚµÄÊý¾Ý¡¢»òÕßÊý¾ÝµÄ¾Ö²¿ÐÔÌØÕ÷µÈ¡£¶ÔÓÚ¸ü¼ÓÒ»°ãµÄÇé¿ö£¬¼´²»Í¬µÄÑ­»·µü´ú×ñÑ­²»Í¬µÄ·ÃÎʹæÔòµÄʱºò£¬¿ÉÒÔʹÓöà¸ö·ÂÉä·ÃÎʹØϵµÄ²¢¼¯À´ÃèÊöÍêÕûµÄ·ÃÎʺ¯Êý¡£

½ÓÏÂÀ´¿¼Âǵ÷¶È³éÏó¡£(1¨C1)ËùʾµÄµü´ú¿Õ¼ä²¢Ã»Óй涨ÿ¸öµü´úÏòÁ¿Ö®¼äµÄ±éÀú˳Ðò£¬Êµ¼ÊµÄ±éÀú˳Ðò£¨¼´¶¯Ì¬Óï¾äʵÀýµÄÖ´ÐÐ˳Ðò£©ÊÇÓɵ÷¶È³éÏóÀ´ÃèÊö¡£Ã¿Ò»ÖÖ¿ÉÐеÄÖ´ÐÐ˳Ðò¶¼¿ÉÒÔ³ÆΪһÖÖµ÷¶È£¬¶ø³õʼµ÷¶È¼´ÊÇԭʼ³ÌÐò¶ÔÓ¦µÄ´®ÐÐÖ´ÐÐ˳Ðò£¬¾ÍÊÇ°´ÕÕ´ÓÍâµ½Äڵķ½Ê½ÅÅÁÐÑ­»·Ï±ê±äÁ¿È¡ÖµµÄ˳Ðò¡£

ÔÚÈ·¶¨ÁËÒ»¸öºÏ·¨µÄµ÷¶ÈÖ®ºó£¬¾ÍÏ൱ÓÚÈ·¶¨ÁËÑ­»·µü´úµÄÖ´ÐÐ˳Ðò£¬¼´°´ÕÕµü´úÏòÁ¿µÄ×Öµä˳ÐòÖ´ÐÐÿһ¸öÑ­»·µü´ú¡£Ò»¸öÏòÁ¿

°´ÕմʵäÅÅÐòСÓÚÁíÒ»¸öÏòÁ¿ £¬¼ÇΪ i < i¡ä£¬µ±ÇÒ½öµ±´æÔÚÒ»¸ö m < min(n, n¡ä) ʹµÃ £¬²¢ÇÒ ¡£

¶ÔÑ­»·²¢ÐÐÐԺ;ֲ¿ÐÔµÄÓÅ»¯ÊÇͨ¹ý¶Ôµ÷¶È½øÐÐһϵÁеı任À´ÊµÏֵġ£ÈÎÒâ²»ÆÆ»µÔ­ÓгÌÐòÓïÒåÖеÄÊý¾ÝÒÀÀµµÄµ÷¶È±ä»»¶¼ÊǺϷ¨µÄ£¬µ«ÊDz»Í¬µÄÖ´ÐÐ˳ÐòµÄÐÔÄÜÊDz»Í¬µÄ£¬ÌرðÊÇ¿¼Âǵ½ÏÖ´úÌåϵ½á¹¹Öи´ÔӵĴ洢²ã´Î¹ØϵµÄÇ°ÌáÏ¡£ÈçºÎ´ÓËùÓпÉÐеÄÖ´ÐÐ˳ÐòÖÐÑ¡ÔñÒ»¸ö×îÓŵÄ˳Ðò£¬ÊÇÑ­»·ÓÅ»¯Ëã·¨ÐèÒª¿¼ÂǺͽâ¾öµÄÎÊÌâ¡£

ΪÁ˼ò»¯´¦Àí£¬³õʼ½×¶Î¿ÉÒÔºöÂÔ´¦ÀíÆ÷¿Õ¼ä£¬¼´¼ÙÉè´¦ÀíÆ÷¿Õ¼äµÄά¶ÈÓëµü´ú¿Õ¼äÏàͬ£¬¶øÇÒ´¦ÀíÆ÷¿Õ¼äµÄÿ¸öά¶È¶¼ÓÐÎÞÏÞ¶à¸ö´¦ÀíÆ÷¡£²»´æÔÚÒÀÀµ¹ØϵµÄÑ­»·µü´ú¿ÉÒÔÔÚÐéÄâ´¦ÀíÆ÷¿Õ¼äÖÐʵÏÖÍêÈ«²¢ÐС£ÕâÑù¿ÉÒÔʵÏÖÑ­»·»®·ÖºÍÑ­»·µ÷¶ÈÖ®¼äµÄ½âñî¡£ÔÚÍê³ÉÒÀÀµ·ÖÎöºÍÑ­»·µ÷¶ÈÖ®ºó£¬ÔÙͨ¹ýÒ»¸ö¼òµ¥µÄ´¦ÀíÆ÷·ÖÅäËã·¨½«ÐéÄâ´¦ÀíÆ÷Ó³Éäµ½ÎïÀí´¦ÀíÆ÷£¬Í¬Ê±¸³ÓèÔ­À´ÔÚÐéÄâ´¦ÀíÆ÷¿Õ¼äÖÐÍêÈ«²¢ÐеĵÄÑ­»·µü´úÒ»¸öÈ·¶¨µÄÖ´ÐÐ˳Ðò¼´¿É¡£

»ùÓÚÉÏÊö³éÏóÊýѧģÐÍ£¬¿ÉÒÔ½«Ñ­»·±ä»»ÎÊÌâת»»ÎªÒ»¸ö×îÓÅ»¯ÎÊÌâ¡£¼´Ñ¡ÔñÒ»¸öºÏÊʵÄÓ³Éä¹Øϵ£¬°ÑÒ»¸öµü´ú¿Õ¼äÖеÄÿ¸öÓï¾äÓ³Éäµ½Ìض¨µÄÖ´ÐÐʱ¼ä»òÕß´¦Àíµ¥ÔªÉÏ£¬Ê¹Õû¸ö³ÌÐòÔÚά³Öԭʼѭ»·´®ÐÐÓïÒåµÄÇ°ÌáϾ¡¿ÉÄܸßЧµØÖ´ÐС£ÎªÁËʵÏÖ×îÓŵÄÈÎÎñÓ³É䣬¶àÃæÌåÀíÄ±ØÐë½â¾öÒÀÀµ·ÖÎö¡¢²¢ÐÐÐÔÓÅ»¯¡¢¾Ö²¿ÐÔÓÅ»¯¡¢ÈÎÎñÓ³ÉäµÈһϵÁеĻù´¡ÎÊÌâ¡£

1.3.1 ÒÀÀµ·ÖÎö

ԭʼ´®ÐгÌÐòµÄÖ´ÐÐÓïÒ嶨ÒåÁ˲»Í¬Ñ­»·µü´úÖ®¼äµÄÒÀÀµ¹Øϵ£¬ÔÚÑ­»·ÓÅ»¯ÖбØÐë±£³ÖµÄÒÀÀµ¹Øϵ°üÀ¨¶ÁºóдÒÀÀµ¡¢Ð´ºóдÒÀÀµºÍдºó¶ÁÒÀÀµ¡£¶ÔÓÚ²»´æÔÚÕâÈýÀàÒÀÀµ¹ØϵµÄÑ­»·µü´ú£¬¿ÉÒÔÒÔÈÎÒâµÄ˳ÐòÖ´ÐУ»¶ø´æÔÚÉÏÊöÈýÖÖÒÀÀµ¹ØϵµÄÑ­»·µü´ú¼È²»Äܲ¢ÐÐÒ²²»ÄܸıäÖ´ÐÐ˳Ðò¡£

È·¶¨Á½¸öµØÖ··ÃÎÊÊÇ·ñ´æÔÚÒÀÀµÊôÓÚ±ðÃû·ÖÎöµÄ·¶³ï¡£×¼È·ÓÐЧµÄÏà¹ØÐÔ²âÊÔ¶Ô²¢ÐбàÒëÆ÷µÄÐÔÄÜÄÜ·ñºÜºÃµØ·¢»ÓÊ®·ÖÖØÒª£¬¼ÆËã»ú³ÌÐòÖÐËùÓÐÊý¾ÝÏà¹ØÐÔµÄÕâÒ»¹ý³Ì¾Í³ÆΪÒÀÀµ·ÖÎö¡£ÔÚ¹ýÈ¥ÊýÊ®ÄêÖУ¬¶ÔÊý¾ÝÒÀÀµºÍ¿ØÖÆÒÀÀµ¹ØϵÒѾ­½øÐÐÁËÉîÈëµÄÑо¿¡£

Ïà¹ØÐÔ²âÊÔÊÇÓÃÀ´È·¶¨Ñ­»·Ç¶Ì×ÖжÔͬһ¸öÊý×éµÄÁ½¸ö»ò¶à¸öϱêÒýÓÃÖ®¼äÊÇ·ñ´æÔÚÏà¹ØÐÔµÄÒ»ÖÖ·½·¨¡£ÎªÁ˱ãÓÚ½âÊÍ£¬³ýÑ­»·±¾ÉíÒÔÍ⣬ÎÒÃǽ«ÈκοØÖÆÁ÷¶¼ºöÂÔµô¡£¼Ù¶¨ÏëÒª²âÊÔÏÂÊöÓà n¸öÕûÊý

±íʾµÄ N ²ãÑ­»·Ç¶Ì×ÖдÓÓï¾äS1µ½S2 ÊDz»ÊÇ´æÔÚÏà¹ØÐÔ¡£

¶ÔÓÚÈÎÒâÐÎʽµÄ·ÃÎʺ¯Êý£¬×¼È·ÅжÏÁ½¸öÑ­»·µü´úÊÇ·ñ·ÃÎÊÏàͬµÄµØÖ·ÊǷdz£À§Äѵġ£ºÃÔÚ¿Æѧ¼ÆËãºÍÉî¶ÈѧϰÁìÓòµÄ´ó¶àÊýÓ¦ÓóÌÐò¶ÔÊý×éµÄ·ÃÎʶ¼ÊÇÓйæÂɵģ¬Êý×éϱêÒ»°ã¿ÉÒÔ±íʾΪ·ÂÉ亯Êý¡£ÔÚÏÞ¶¨·ÃÎʺ¯ÊýΪ·ÂÉ亯ÊýµÄÇ°ÌáÏ£¬¾Í¿ÉÒÔÀûÓÃÕûÊýÏßÐԹ滮£¨ÌرðÊÇÕûÊý¹æ»®£©µÄÏà¹Ø·½·¨À´È·¶¨Á½¸öµü´úÊÇ·ñ´æÔÚÒÀÀµ¹Øϵ¡£

Éè ¦Á ºÍ ¦Â ÊÇÔÚ n ²ãÑ­»·ÉϽçºÍϽ緶ΧÄÚµÄ n άË÷ÒýÏòÁ¿£¬µ±ÇÒ½öµ±´æÔÚ ¦Á ºÍ ¦Â£¬²¢ÇÒ ¦Á °´ÕÕ×Öµä˳ÐòСÓÚ»òµÈÓÚ ¦Â ÒÔ¼°Âú×ã

ʱ£¬S1ºÍS2´æÔÚÒÀÀµ¡£

ÔÚ¶àÃæÌåµÄÀíÂÛ¿ò¼ÜÖУ¬Êý¾ÝÒÀÀµÅжÏÎÊÌâ¿ÉÒÔת»»ÎªÒ»¸öÕûÊýÏßÐԹ滮ÎÊÌ⣬¼´ÔÚÂú×ãÔ¼ÊøÌõ¼þ(1¨C1)µÄÇé¿öÏ£¬ÉÏÃæµÄÊÇ·ñÓÐÕûÊý½âµÄÎÊÌâ¡£

¶ÔÓÚÈÎÒâÁ½¸öÑ­»·µü´ú£¬Ö»ÒªÔÚÂú×ãµü´ú¿Õ¼äÔ¼ÊøµÄÇ°ÌáÏ£¬²»´æÔÚ¶Áºóд¡¢Ð´ºó¶ÁºÍдºóдÒÀÀµ£¬¾Í¿ÉÒÔÒÔÈÎÒâµÄ˳ÐòÖ´ÐС£¶øÇÒ±àÒëÆ÷»¹¿ÉÒÔͨ¹ý¶ÔÑ­»·µü´ú½øÐÐÖØÅÅÐòÀ´´ó·ùÌá¸ßÊý¾Ý¾Ö²¿ÐÔ£¬Ò²¿ÉÒÔ½«ÎÞÒÀÀµµÄÓï¾äÓ³Éäµ½²»Í¬µÄ´¦Àíµ¥Ôª²¢ÐÐÖ´ÐС£»òÕßͨ¹ýºÏÀí°²ÅŲ»Í¬Ñ­»·µü´úµÄÖ´ÐÐ˳Ðò£¬À´ÊµÏÖ²¢ÐÐÐÔºÍÊý¾Ý¾Ö²¿ÐÔµÄÕÛÖУ¬´Ó¶øÔÚÌض¨µÄ´¦ÀíÆ÷ÉϸßЧµÄÖ´ÐгÌÐò£¨ÔÚ±àÒëÁìÓò£¬Í¨³£½«Ã»ÓÐÒÀÀµµÄǶÌ×Ñ­»·³ÆΪ doall Ñ­»·£¬¶ø½«ÓÐÒÀÀµµÄÑ­»·³ÆΪ doacross Ñ­»·¡£ £©¡£

(1¨C4)±íʾһ¸ö N άµü´ú¿Õ¼äÖеÄË÷ÒýÏòÁ¿ i ÓëÒ»¸ö M άÊý¾Ý¿Õ¼äÖÐÊý¾ÝλÖÃÖ®¼äµÄÓ³Éä¹Øϵ¡£¶ÔÓÚÈÎÒâÁ½¸ö·ÂÉä·ÃÎʹØϵ

£¬¶øÇÒÔÚÒÑÖªÖÁÉÙÓÐÒ»¸öÊÇд²Ù×÷ʱ£¬ÔÚ·ÖÎöÕâÁ½¸ö·ÂÉä·ÃÎÊÊÇ·ñ´æÔÚÊý¾Ý¸´ÓúÍÊý¾ÝÒÀÀµÊ±£¬ÐèÒªÇø·ÖÒÔϼ¸ÖÖÇé¿ö£º

(1)

£ºÍ¬Ò»¸öµü´úÏòÁ¿¶ÔӦͬһ¸ö·Ã´æ²Ù×÷ʱһ¶¨´æÔÚÒÀÀµ¡£

(2)

£ºÒ»ÂÖÑ­»·µü´úÖв»Í¬µÄ·Ã´æ²Ù×÷Ö®¼ä´æÔÚÒÀÀµµÄ±ØÒªÌõ¼þÊÇ£º

(3)

£ºÍ¬Ò»ÂÖÑ­»·µü´úÖв»Í¬µÄ·Ã´æ²Ù×÷Ö®¼ä£¬ÔÚÕâÖÖÇé¿öÏÂÒ»¶¨²»´æÔÚÒÀÀµ¡£

(4)

£ºÈç¹ûÑ­»·µü´úÏòÁ¿ ´æÔÚÊý¾ÝÒÀÀµ£¬ÄÇôһ¶¨ÓÐ ¡£Òò´Ë£¬¿ÉÒԵóö²»Í¬µü´úÏòÁ¿ºÍͬһ¸ö·ÃÎʲÙ×÷Ö®¼ä´æÔÚÊý¾ÝÒÀÀµµÄ±ØÒªÌõ¼þÊÇ£º

ÐèҪעÒâµÄÊÇ£¬(1¨C6)ÖÐµÄ N άÏòÁ¿

ºÍ ¶¼±ØÐëÊÇÂú×ãµü´ú¿Õ¼äÔ¼ÊøµÄÑ­»·±äÁ¿¡£¸ù¾ÝÏßÐÔ´úÊýµÄ»ù±¾ÀíÂÛ¿ÉÖª£¬¶ÔÓÚ M ¡Á N άµÄϵÊý¾ØÕó F£¬Èç¹û F µÄÖÈΪ N£¬ÄÇô˵Ã÷ M ¡Ý N¶øÇÒÖ»ÓÐ N άÁãÏòÁ¿ x Âú×ã F x = 0¡£Òò´ËÒ»¶¨²»´æÔÚÊý¾Ý¸´Óã¬Ò²¾ÍÊÇ˵µü´ú¿Õ¼äÖÐËùÓÐÑ­»·µü´úÏòÁ¿¶¼·ÃÎʲ»Í¬µÄÊý¾ÝλÖá£

(5)

£º²»Í¬µü´úÏòÁ¿ºÍ²»Í¬µÄ·ÃÎʲÙ×÷Ö®¼ä´æÔÚÒÀÀµµÄ±ØÒªÌõ¼þÊÇ£º

(6)

£º£¬²»Í¬µü´úÏòÁ¿ºÍ²»Í¬µÄ·ÃÎʲÙ×÷Ö®¼ä´æÔÚÒÀÀµµÄ±ØÒªÌõ¼þÊÇ£º

(7)

£¬²»Í¬µü´úÏòÁ¿ºÍ²»Í¬µÄ·ÃÎʲÙ×÷Ö®¼ä´æÔÚÒÀÀµµÄ±ØÒªÌõ¼þÊÇ£º

ËùÓжÁ²Ù×÷Ö®¼ä¶¼ÊÇûÓÐÒÀÀµµÄ£¬ÓÉÓÚÖ»ÓÐÉæ¼°µ½Ð´²Ù×÷µÄ·ÃÎÊÖ®¼ä²ÅÓпÉÄÜ´æÔÚÒÀÀµ¹Øϵ¡£Á½¸ö²Ù×÷Ö®¼ä´æÔÚÊý¾ÝÒÀÀµµÄ³äÒªÌõ¼þÊÇÁ½¸ö²Ù×÷·ÃÎÊͬһ¸ö´æ´¢Î»ÖöøÇÒÖÁÉÙÓÐÒ»¸öÊÇд²Ù×÷¡£Òò´Ë£¬ÎªÁËÈ·±£Êý¾ÝÒÀÀµ²»±»ÆÆ»µ£¬¶ÔÊý¾ÝµÄËùÓÐд²Ù×÷¶¼±ØÐëά»¤Ô­Ê¼µÄ˳Ðò£¬µ«ÊǶÔͬһ¸öλÖõÄÁ½´Îд²Ù×÷Ö®¼äµÄ¶Á²Ù×÷ÊÇ¿ÉÒÔÒÔÈÎÒâ˳ÐòÖ´Ðеġ£

ÐèҪעÒâµÄÊÇ£¬Ö»Óе±(1¨C5)¡¢(1¨C6)¡¢(1¨C7)¡¢(1¨C8)ºÍ(1¨C9)ÔÚÂú×ãµü´ú¿Õ¼äÔ¼ÊøµÄÇ°ÌáÏÂÓÐÕûÊý½âʱ£¬Á½¸ö²Ù×÷²Å´æÔÚÊý¾ÝÒÀÀµ¡£ÔÚÂú×ãµü´ú¿Õ¼äÔ¼ÊøµÄÇ°ÌáÏ£¬Ñ°ÕÒÉÏÊö¼¸¸öµÈʽÕûÊý½âµÄÎÊÌâÊÇÒ»¸öµäÐ͵ÄÕûÊý¹æ»®ÎÊÌâ¡£¶øÕûÊý¹æ»®ÎÊÌâÊÇÒ»¸öÒÑÖªµÄ·Ç¶àÏîʽ NP£¨non-polynomial£©ÍêÈ«ÎÊÌâ¡£ÓÉÓÚ¾«È·µÄÒÀÀµ·ÖÎö´ú¼Û·Ç³£´ó£¬Òò¶ø±àÒëÆ÷Ö»ºÃȥѰÇóһЩÄܹ»ÓÐЧʵÏֵı£ÊØ·ÖÎö°ì·¨¡£

´«Í³±àÒëÆ÷ͨ³£ÒÀ¿¿Á½ÖÖÒÀÀµ²âÊÔ·½·¨À´¼ì²éÊý×éÒýÓÃÖ®¼äµÄÏà¹ØÐÔ£¬¼´ Banerjee²âÊÔ£¨Banerjee ²âÊÔÊÇÒÔ Utpal Banerjee ²©Ê¿µÄÃû×ÖÃüÃûµÄ¡£Utpal Banerjee ÓÚ 1979 Äê»ñµÃÒÁÀûŵÒÁ´óѧÏãéÄ·ÖУ²©Ê¿Ñ§Î»£¬ÔøÈÎÖ°ÓÚÓ¢Ìضû¹«Ë¾£¬ÊÇ ACM ºÍ IEEE »áÊ¿ºÍ¼ÓÖÝ´óѧŷÎÄ·ÖУµÄ¿Í×ù½ÌÊÚ¡£ËûΪ³ÌÐò²¢Ðл¯ÁìÓò×ö³öÁ˾޴óµÄ¹±Ï×£¬³ýÁËÌá³ö Banerjee ²âÊÔÒÔÍ⣬»¹Ìá³öÁË»ùÓÚçÛÄ£±ä»»µÄ³ÌÐò×Ô¶¯²¢Ðл¯ÀíÂÛ¡££©ºÍ GCD ²âÊÔ¡£

1.3.2 Ñ­»·±ä»»

Ñ­»·±ä»»ÊǶàÃæÌåÓÅ»¯µÄºËÐÄ£¬Ò²ÊÇʵÏÖ²¢ÐÐÐԺ;ֲ¿ÐÔ·¢¾òµÄºËÐÄÊֶΡ£Èç¹ûÒ»¸ö N ²ãÑ­»·Ç¶Ì׽ṹÓÐ K(K ¡Ü N) ¸ö¿ÉÒÔ²¢Ðл¯µÄÑ­»·£¬¼´Õâ K ¸öÑ­»·µÄËùÓеü´úÖ®¼ä¶¼Ã»ÓÐÒÀÀµ¹Øϵ£¬¾Í˵Õâ¸öÑ­»·µÄ²¢ÐжÈΪ K¡£

¶ÔÓÚ²¢ÐжÈΪ K µÄ N ²ãǶÌ×Ñ­»·£¬¿ÉÒÔÔÚÒ»¸ö¼ÆËãµ¥ÔªÉÏÒÔÈÎÒâµÄ˳Ðò±éÀúÕâ¸ö K άµÄ×Óµü´ú¿Õ¼ä£¬ÔÚ K ά×Óµü´ú¿Õ¼äÖеÄÿһ¸öÑ­»·µü´ú£¬¶¼ÐèÒªÖ´ÐÐÁíÍâµÄ N − K ²ãÑ­»·£»Ò²¿ÉÒÔ½« K ά×Óµü´ú¿Õ¼äÓ³Éäµ½Ò»¸ö´¦ÀíÆ÷ÕóÁÐÉϲ¢Ðд¦Àí£¬¶øÇÒÔÚ´¦ÀíÆ÷Ö®¼ä²»ÐèҪͬ²½¡£

ÔÚ¹ýÈ¥ÊýÊ®ÄêÖУ¬»ùÓÚ·ÂÉä±ä»»µÄÑ­»·ÓÅ»¯ÒѾ­µÃµ½ÁËÉîÈëµÄÑо¿¡£Í¨¹ý½«·ÂÉä±ä»»·Ö½âΪһϵÁлù±¾µÄ±ä»»£¬¿ÉÒÔÏà¶ÔÈÝÒ×µØÀí½â·ÂÉä±ä»»¶ÔÔ´³ÌÐòµÄÐ޸ġ£¹¹³ÉÕû¸ö·ÂÉä±ä»»µÄÿһÖÖ»ù±¾±ä»»£¬¶¼¶ÔÓ¦Ô´´úÂë²ã´ÎÉϵÄÒ»¸ö¼òµ¥µÄ¸Ä±ä¡£³£¼ûµÄ¼¸ÖÖ»ù´¡·ÂÉä±ä»»ÈçÏ£º

(1) Ñ­»·½»»» (loop permutation): ½»»»ÄÚ²ãÑ­»·ºÍÍâ²ãÑ­»·µÄ´ÎÐò¡£

(2) Ñ­»··´×ª (loop reversal): °´ÕÕÏà·´µÄ˳ÐòÖ´ÐÐÒ»¸öÑ­»·ÖеÄËùÓеü´ú¡£

(3) Ñ­»·Çãб (loop skewing): ¶Ôԭʼѭ»·µÄµü´ú¿Õ¼ä½øÐÐ×ø±ê±ä»»¡£

(4) Ñ­»·ÑÓÕ¹ (loop scaling): ½«Ñ­»·Ë÷Òý±äÁ¿ºÍÑ­»·²½³¤×öµÈ±ÈÀýËõ·Å¡£

(5) Ñ­»·ºÏ²¢ (loop fusion): °ÑÔ­³ÌÐòÖеĶà¸öÑ­»·Ï±êÓ³É䵽ͬһ¸öÑ­»·Ï±êÉÏ¡£

(6) Ñ­»··Ö²¼ (loop fifission): Ëü°Ñ²»Í¬Óï¾äµÄͬһ¸öÑ­»·Ï±êÓ³Éäµ½²»Í¬µÄÑ­»·Ï±ꡣ

(7) Ñ­»·Æ«ÒÆ (loop shifting): °ÑÒ»¸ö¶¯Ì¬Óï¾äʵÀýÆ«Òƹ̶¨¶à¸öÑ­»·µü´ú¡£

ÔÚÉÏÊöÆßÖֱ任ÖУ¬Ç°ÈýÖÖ¶¼ÊÇçÛÄ£±ä»»¡£Ò»¸öçÛÄ£±ä»»¿ÉÒÔÓÃÒ»¸öçÛģϵÊý¾ØÕóÀ´±íʾ¡£çÛÄ£¾ØÕóÊÇÒ»¸ö·½Õó£¬ÆäÐÐÁÐʽΪ ¡À1¡£ÓÃÓÚÑ­»·±ä»»µÄçÛÄ£¾ØÕó»¹ÓÐÒ»¸ö¶îÍâµÄÌØÐÔ¾ÍÊÇËüµÄËùÓÐÔªËؾùΪÕûÊý¡£çÛÄ£¾ØÕóµÄÁíÒ»¸öÖØÒªÐÔÖÊÊÇ£¬çÛÄ£¾ØÕóµÄ³Ë»ýºÍÄæ¾ØÕóÈÔÈ»ÊÇçÛÄ£¾ØÕó¡£çÛģת»»µÄÖØÒªÐÔÔÚÓÚËü°ÑÒ»¸ö N άµü´ú¿Õ¼äÓ³Éäµ½ÁíÒ»¸ö N άµÄ¶àÃæÌ壬²¢ÇÒÁ½¸ö¿Õ¼äµÄµü´úÖ®¼ä¾ßÓÐÒ»Ò»¶ÔÓ¦¹Øϵ¡£

ÒÔçÛÄ£±ä»»Îª»ù´¡ÊµÊ©Ñ­»·µÄ¹¤×÷ÔÚ 21 ÊÀ¼Í³õ¾ÍÓбȽϳÉÊìµÄÑо¿£¬Õâ¸öÀíÂÛ°ÑÑ­»·µÄ»¥»»¡¢·´×ªºÍÇãб¶¼Ê¹Óñ任¾ØÕóÀ´±íʾ£¬ÆäÄ¿µÄÊÇʹѭ»·Ç¶Ì×Öв¢Ðл¯µÄ³Ì¶È»òÕßÊý¾Ý¾Ö²¿ÐԵij̶ȴﵽ×î¸ß£¬ÕâЩ±ä»»¶Ô²¢ÐлúÆ÷ÉϵĴ洢²ã´Î½á¹¹Ò²ÄÜÓÐЧµÄÖ§³Ö¡£

çÛÄ£±ä»»¿ÉÒÔÃèÊöÈκλùÓÚÑ­»·½»»»¡¢Ñ­»·ÇãбºÍÑ­»··´×ª¹¹³ÉµÄ¸´ÔÓת»»¡£×îÖյı任¾ØÕó¿ÉÒÔ½«¸÷ÖÖ»ù±¾µÄÑ­»·±ä»»¾ØÕóÏà³Ë¼´¿É¡£¶ø»ùÓÚçÛÄ£±ä»»¾ØÕóµÄÑ­»·ÓÅ»¯£¬±¾ÖÊÉÏÊÇÔÚ¸ø¶¨Ò»×éµ÷¶ÈÔ¼ÊøµÄÌõ¼þÏ£¬Çó³ö×î´óµÄÄ¿±êº¯Êý¡£

¿ÉÒÔÓÃÒ»¸ö N ¡Á N µÄ·½ÕóÀ´±íʾ½«Ò»¸öԭʼ N ²ãÑ­»·

ת»»Îª µÄÑ­»·½»»»£¬·½ÕóµÄÿ¸öÐÐÏòÁ¿´ú±íÒ»¸öÑ­»·£¬¶ÔÓÚµÚ i ²ãÑ­»·À´Ëµ£¬Ö»ÓÐµÚ i ¸öÔªËØΪ 1£¬ÆäÓàÔªËؾùΪ 0¡£

Òò´Ë£¬Ô­Ê¼Ñ­»·¶ÔÓ¦ N ¡Á N µÄµ¥Î»¾ØÕ󣬶ø±ä»»ºóµÄÑ­»·¶ÔÓ¦±ä»»¾ØÕó¡£Ò»¸öºÏ·¨µÄÑ­»·½»»»±ØÐëά³Öԭʼѭ»·µÄÒÀÀµ¹Øϵ¡£ÒªÊµÏÖµÚ i ²ãÑ­»·ºÍµÚ j ²ãÑ­»·µÄÑ­»·½»»»£¬Ö»ÐèÒª½»»»Ô­Ê¼¾ØÕóµÄµÚ i ÐÐºÍµÚ j Ðм´¿É¡£Í¼ 1.6 ËùʾΪ N = 2 ʱµÄÑ­»·½»»»Ê¾Àý£¬ÔÚÕâ¸öÑ­»·ÖУ¬Ã¿¸öÑ­»·µü´úÖ®¼ä¶¼²»´æÔÚÒÀÀµ¹Øϵ£¬ËùÓÐÑ­»·µü´ú¶¼¿ÉÒÔ²¢ÐÐÖ´ÐС£

¶ÔÓÚͼ 1.6 ËùʾµÄÑ­»·½»»»Ê¾Àý£¬Ñ­»·µü´úÖ®¼ä²¢²»´æÔÚÒÀÀµ¹Øϵ£¬Í¼ÖмýÍ·½öÓÃÓÚ±íʾ²»Í¬µü´úÖ®¼äµÄÖ´ÐÐ˳Ðò¡£Í¼ÖÐÿ¸ö×ø±êÖá±íʾһ²ãÑ­»·£¬Ã¿¸öÔ²µã¶¼´ú±íÒ»´ÎÑ­»·µü´ú£¬¶ÔÓ¦µÄ¸÷²ãÑ­»·µÄÑ­»·±äÁ¿µÄ×ø±ê¹¹³ÉµÄµü´úÏòÁ¿¡£

ÓëÑ­»·½»»»ÀàËÆ£¬¿ÉÒÔÓÃÒ»¸ö N¡ÁN µÄ·½ÕóÀ´±íʾѭ»··´×ª¡£½«Ò»¸öԭʼ N ²ãÑ­»·

µÄµÚ i ²ãÑ­»·×öÑ­»··´×ª£¬Ö»ÐèÒª½«Ô­Ê¼Ñ­»·¶ÔÓ¦µÄ N ¡Á N µ¥Î»¾ØÕóµÄµÚ i ÐеĶԽÇÔªËØÈ¡Ïà·´Êý¼´¿É¡£Í¬Ñù£¬Ò»¸öºÏ·¨µÄÑ­»··´×ª±ØÐëά³Öԭʼѭ»·µÄÒÀÀµÓйØϵ¡£ÔÚÍê³ÉÑ­»··´×ªÖ®ºó£¬¶¯Ì¬Óï¾äʵÀýÖжÔÑ­»·±äÁ¿µÄÒýÓÃÒ²ÐèҪͬ²½¸üС£Í¼ 1.7 ËùʾΪ N = 2 ʱµÄÑ­»··´×ªÊ¾Àý¡£

¶ÔÓÚµÚ j ²ãÑ­»·Ïà¶ÔÓÚµÚ i (j > i) ²ãÑ­»·µÄÑ­»·Çãб±ä»»£¬Êµ¼ÊÉÏÊÇÔÚ¶Ôµü´ú¿Õ¼ä½øÐÐ×ø±ê±ä»»¡£ÎªÁ˵õ½»ù´¡Ñ­»·Çãб±ä»»µÄ±ä»»¾ØÕó£¬Ö»ÐèÒª½« N ¡Á N µÄµ¥Î»¾ØÕóµÄµÚ j ÐÐµÄµÚ i ÁÐÖóÉ1 ¼´¿É£¬×îÖյõ½µÄ±ä»»¾ØÕóʵ¼ÊÉÏÊÇÒ»¸öÏÂÈý½Ç¾ØÕ󡣶ÔÓÚÇãбÒò×ÓΪ f µÄͨÓÃÑ­»·Ñ­»·Çãб±ä»»£¬Ö»ÐèÒª½« N ¡Á N µÄµ¥Î»¾ØÕóµÄµÚ j ÐÐµÄµÚ i ÁÐÖÃ³É f ¼´¿É¡£Í¨ÓõÄÑ­»·Çãб±ä»»Ò²¿ÉÒÔ¿´³ÉÊÇÑ­»·ÑÓÕ¹±ä»»ºÍ»ù´¡Ñ­»·Çãб±ä»»µÄ×éºÏ¡£Í¼ 1.8 ËùʾΪ N = 2 ʱµÄÑ­»·ÇãбʾÀý¡£

çÛÄ£±ä»»Ö»ÄÜÓÃÓÚÍêÃÀǶÌ×Ñ­»·£¬¶øÇÒÖ»ÄܶÔÑ­»·Ç¶Ì×ÖеÄËùÓÐÓï¾äºÍËùÓÐÑ­»·µü´ú×öͬÑùµÄ±ä»»£¬Òò´ËÎÞ·¨ÊµÏÖÖîÈçÑ­»·ÑÓÕ¹¡¢Ñ­»·ºÏ²¢¡¢Ñ­»··Ö²¼ÒÔ¼°Ñ­»·Æ«ÒƵÈÖØÒªµÄ»ù´¡·ÂÉä±ä»»£¬Ò²ÎÞ·¨ÊµÏÖÖîÈçÑ­»··Ö¿é¡¢Ñ­»··Ö¶Î (loop strip-minging) ºÍÑ­»·Õ¹¿ªÑ¹½ôµÈ½üËÆ·ÂÉä±ä»»¡£ÕâÖÖ¾ÖÏÞÐÔÖ÷ÒªÔ´×ÔÆä»ùÓÚ¾ØÕóµÄ±ä»»±íʾ¡£

ÓëÖ®Ïà±È£¬»ùÓÚ¶àÃæÌåÄ£Ð͵ÄÑ­»·±ä»»¸ü¼ÓÒ»°ã»¯¡£Ëü»ùÓÚ¸ü¼ÓÒ»°ã»¯µÄ¹ØϵÔËË㣨¾ØÕóÔËËãÖ»ÊǸ÷ÖÖ¹ØϵÔËËãÖеÄÒ»ÖÖ£©£¬¿ÉÒÔ±íʾ¸÷ÖÖ¸÷ÑùµÄ±ä»»ÐÎʽ£¬Ê¹ÓÃÔ¼ÊøÒ²¸üÉÙ¡£Ëü²»½ö¿ÉÒÔÓÃÓÚÃèÊöÈÎÒâµÄÑ­»·Ç¶Ì×£¬¶øÇÒÿ¸öÓï¾ä¶¼¿ÉÒÔÓÐ×Ô¼º¶ÀÁ¢µÄÓ³Éä¹Øϵ£¬Òò¶ø¿ÉÒÔ×÷µÄת»»¸ü¼Ó·á¸»¡£

±í1.2¸ø³öÁËÉÏÊöÆßÖÖ»ù´¡·ÂÉä±ä»»¶ÔÓ¦µÄ¶àÃæÌåµ÷¶È±íʾ¡£ÆäÖУ¬Ñ­»··Ö²¼ºÍÑ­»·ºÏ²¢±ä»»Öеij£Êý0 ºÍ 1 ÊÇΪÁËά³Öԭʼѭ»·µÄÓïÒå˳Ðò¶øÒýÈëµÄ³£Á¿Î¬¶È¡£ÎÒÃǽ«ÔÚµÚ4Ïêϸ½éÉܶàÃæÌåÄ£ÐÍÖÐÈçºÎʵÏÖÕâЩ»ù´¡Ñ­»·±ä»»¡£

1.3.3 ²¢ÐÐÐÔÓÅ»¯

¶àÃæÌåÖеĵ÷¶ÈÊǽüËÆ·ÂÉäµ÷¶È£¬ËüÊÇÓÉÑ­»·µü´úÏòÁ¿ÓëÈ«¾Ö·ûºÅµÄ½üËÆ·ÂÉä±í´ïʽ¹¹³ÉµÄÓ³Éä¹Øϵ¡£¶øµ÷¶ÈÉú³ÉµÄ¹ý³Ì¾ÍÊÇÈÎÎñÓ³Éä¡¢ÈÎÎñ»®·Ö¡¢Êý¾Ý¾Ö²¿ÐÔºÍÈÎÎñ²¢ÐÐÐÔÓÅ»¯µÄʱ»ú¡£µ÷¶ÈµÄÉú³É£¬±¾ÖÊÉÏ¿ÉÒÔ¿´³ÉÊǶÔԭʼµü´ú¿Õ¼äºÍÊý¾Ý¿Õ¼ä½øÐÐ×ø±ê±ä»»¡£

²¢ÐÐÐÔÁ£¶ÈÓë¾ßÌåµÄÓ¦ÓóÌÐòºÍÓ²¼þ½ôÃÜÏà¹Ø¡£Ò»°ãÇé¿öÏ£¬ÔÚ³¬±êÁ¿Ó²¼þÉÏ¿ÉÒÔ¿ª·¢Ö¸Á²¢ÐÐÐÔ£¬ÔÚÏòÁ¿´¦ÀíÆ÷ÉÏ¿ÉÒÔ¿ª·¢Ö¸Á²¢ÐÐÐÔºÍÊý¼¶²¢ÐÐÐÔ£¬¶øÔÚ¶àºË´¦ÀíÆ÷ÉÏÔò¿ÉÒÔͬʱ¿ª·¢Ö¸Á²¢ÐÐÐÔ¡¢Êý¾Ý¼¶²¢ÐÐÐÔºÍÏ̼߳¶²¢ÐÐÐÔ¡£ÊµÏÖÑ­»·²¢Ðл¯µÄÄ¿µÄÊÇʹ¿ÉÒÔ²¢Ðл¯µÄÑ­»·µü´úÊýÁ¿´ïµ½×î´ó»¯¡£¶ÔÓÚÏ൱ÐÔ¿ÉÒÔÓÃÏà¹Ø¾àÀëÀ´±íʾµÄÉî¶ÈΪ N µÄÑ­»·À´Ëµ£¬²»ÂÛÊÇϸÁ£¶È»ò´ÖÁ£¶È¼ÆË㣬¿ÉÒÔ¿ª·¢µÄ²¢ÐжÈÖÁÉÙΪ N − 1¡£

ΪÁËÓÅ»¯Ñ­»·µÄ²¢ÐÐÐÔ£¬¶àÃæÌåÄ£ÐÍ¿ÉÒÔ°ÑÎÞÒÀÀµµÄÑ­»·½»»»µ½ÄÚ²ãÑ­»·ÒÔ±ãÓÚʵÏÖÑ­»·ÏòÁ¿»¯ºÍÑ­»·²¢Ðл¯ÊÇÁ½¸ö»¥Ïà³åÍ»µÄÓÅ»¯Ä¿±ê¡£½«±ãÓÚʵÏÖÏòÁ¿»¯µÄÑ­»·½»»»µ½ÄÚ²ãÑ­»·£¬¿ÉÒÔ±£Ö¤³ÌÐòÖжÔÊý×éÔªËصÄÁ¬Ðø·ÃÎÊÄܹ»ÃüÖиßËÙ»º´æ£»¶ø½«±ãÓÚʵÏÖ²¢Ðл¯µÄÑ­»·½»»»µ½Íâ²ãÑ­»·£¬¿ÉÒÔ½µµÍÓ³Éäµ½²»Í¬´¦ÀíÆ÷ÉϵIJ¢ÐÐÈÎÎñÖ®¼äµÄͬ²½ºÍͨÐÅ¿ªÏú¡£

È·¶¨·ÂÉäµ÷¶È£¬Ê¹µÃÊý¾Ý¾Ö²¿ÐÔ¡¢²¢ÐжȵÈÖ¸±êÖеÄÒ»¸ö»ò¶à¸ö´ïµ½×îÓÅ, ÕâÒ²ÊǶàÃæÌåÄ£ÐÍÐèÒªÖصã½â¾öµÄÎÊÌâ¡£ÎÒÃǽ«ÔÚµÚ5Õ½éÉÜÑ­»·²¢Ðл¯µÄÖ÷Òª·½·¨¡£

1.3.4 ÈÎÎñÓ³Éä

ÈÎÎñÓ³Éä·´Ó³ÁËÑ­»·ºÍ´¦ÀíÆ÷¿Õ¼äÖ®¼äµÄÓ³Éä¹Øϵ£¬ÔÚ¶àÃæÌåµÄÊÀ½çÖÐÒ²¿ÉÒÔʹÓÃÓ³Éä¹ØϵÀ´±íʾ¡£¼ÆËã»®·Ö

ÊÇÒ»¸ö½«Óï¾ä S µÄ¶¯Ì¬ÊµÀýÓ³Éäµ½Ò»¸öÕûÊýÏòÁ¿µÄ·ÂÉ亯Êý£¬Õâ¸öÕûÊýÏòÁ¿±íʾÐéÄâ´¦ÀíÆ÷±àºÅ¡£ ±ØÐëÂú×ãÑ­»·Ô¼ÊøºÍÊý¾ÝÒÀÀµ¹Øϵ¡£ÀàËƵأ¬Êý¾ÝÓ³Éä ½«Ã¿¸öÊý×éÔªËØÓ³Éäµ½Ò»¸öÐéÄâ´¦ÀíÆ÷±àºÅ¡£¶ø¼ÆËã ºÍ µÄ¹ý³Ìʵ¼ÊÉÏÊÇÒ»¸öÓÅ»¯ÎÊÌâ¡£ÀàËƵأ¬»¹¿ÉÒÔ¶¨ÒåÒ»¸ö·ÂÉäʱ¼ä±ä»» ±íʾÓï¾ä S µ½Ö´ÐÐʱ¼äµÄÓ³Éä¡£

ÏßÐԹ滮·½·¨Ö÷ÒªÓÃÓÚÇó½âÏßÐÔº¯ÊýÔÚÏßÐÔµÈʽ»ò²»µÈʽԼÊøÏÂ×î´óÖµ»ò×îСֵ¡£¾ßÌ嵽ѭ»·ÓÅ»¯ÎÊÌ⣬Õû¸öËã·¨µÄÊä³öÊÇһϵÁзÂÉ亯Êý£¬ÕâЩ·ÂÉ亯Êý¶¨ÒåÁËÿ¸ö´¦ÀíÆ÷ÔÚÄĸöʱ¿ÌÖ´ÐÐÄĸöÑ­»·µü´ú¡£Ëã·¨ÀûÓ÷ÂÉ亯ÊýÀ´ÃèÊöԭʼµü´ú¿Õ¼äÖеÄÑ­»·µü´úʵÀýÓë´¦ÀíÆ÷µü´ú¿Õ¼äÖ®¼äµÄÓ³Éä¹Øϵ£¬»¹ÀûÓ÷ÂÉ亯ÊýÀ´ÃèÊöԭʼµü´ú¿Õ¼äÖв»Í¬µü´úµÄÖ´ÐÐ˳Ðò¡£

ÈÎÎñÓ³É仹ÐèÒª¿¼ÂÇÊý¾Ý¾Ö²¿ÐÔºÍͬ²½¿ªÏú£¬ÎÒÃǽ«ÔÚµÚ5Õ½éÉÜ»ùÓÚ¶àÃæÌåÄ£Ð͵ÄÈÎÎñÓ³Éä·½·¨¡£

1.3.5 ¾Ö²¿ÐÔÓÅ»¯

¿ÉÒÔ½áºÏ(1¨C1)ºÍ(1¨C4)½øÐзôæÒÀÀµ·ÖÎöºÍÊý¾Ý¾Ö²¿ÐÔÓÅ»¯¡£Êý¾ÝÒÀÀµºÍÊý¾Ý¾Ö²¿ÐÔ¾ßÓнôÃܵĹØÁª£¬µ«ÓÖ²»ÍêÈ«Ïàͬ¡£¿¼ÂÇÁ½¸ö¶ÁȡͬһλÖõÄÑ­»·µü´ú£¬¶þÕß´æÔÚÊý¾Ý¾Ö²¿ÐÔ£¬µ«ÊDz¢²»´æÔÚÊý¾ÝÒÀÀµ¡£

µü´ú¿Õ¼äÏ൱ÓÚ·ÂÉä·ÃÎʺ¯ÊýµÄ¶¨ÒåÓò£¬¶ÔÒÀÀµµÄ·ÖÎöÏ൱ÓÚÊÇÔÚ¶¨ÒåÓòÖÐÕÒ³öËùÓеķÃÎÊͬһ¸öλÖõÄÑ­»·µü´ú¡£Èç¹ûÁ½¸ö·ÃÎÊͬһλÖõÄÑ­»·µü´ú£¬ÆäÖÐÖÁÉÙÓÐÒ»¸öÊÇд²Ù×÷£¬ÄÇôÕâÁ½¸öÑ­»·µü´úÖ®¼ä¾ÍÊÇÓÐÊý¾ÝÒÀÀµµÄ¡£×îÖÕ¿ÉÒÔʵÏÖ¶ÔÓÚûÓÐÒÀÀµµÄÑ­»·µü´úºÍÊý¾Ý·ÃÎʵ÷Õû·ÃÎÊ˳Ðò£¬¶ÔÓÚ´æÔÚÊý¾Ý¾Ö²¿ÐÔµÄÇé¿öµ÷Õû·ÃÎÊ˳Ðò´Ó¶ø´ïµ½ÀûÓÃÊý¾Ý¾Ö²¿ÐÔµÄÄ¿µÄ¡£

Ñ­»··Ö¿é¿ÉÒÔ½µµÍͬ²½¿ªÏú²¢¸Ä½øÑ­»·µÄÊý¾Ý¾Ö²¿ÐÔ, Ëü½«Ò»¸öÉî¶ÈΪ N µÄÑ­»·Ç¶Ì×Ó³Éäµ½Éî¶ÈΪ 2N µÄÑ­»·Ç¶Ì×£¬ÆäÖÐ N ¸öÄÚ²ãÑ­»·Ö»ÓÐÉÙÁ¿µÄ¹Ì¶¨µü´ú¡£Ñ­»··Ö¶ÎºÍÑ­»··Ö¿éÀàËÆ£¬ËüÖ»°ÑÒ»¸öÑ­»·Ç¶Ì׽ṹÖеÄÒ»²¿·ÖÑ­»··Ö½â¿ª£¬Ã¿¸öÑ­»··Ö½â³ÉÁ½¸öÑ­»·£¬Õâô×öµÄºÃ´¦ÊÇÒ»¸ö¶àάÊý×é±»·Ö¶Î·ÃÎÊ£¬´Ó¶ø»ñµÃ½ÏºÃµÄ»º´æÀûÓÃÂÊ¡£

1.3.6 ´úÂëÉú³É

ͨ¹ý¶Ô¶àÃæÌå½øÐб任¿ÉÒÔʵÏÖ²¢ÐÐÐԺ;ֲ¿ÐÔµÄÍÚ¾ò£¬¶øÔÚÈ·¶¨Á˵÷¶È²ßÂÔÖ®ºó£¬¾Í¿ÉÒÔ°´ÕÕµ÷¶ÈÈ·¶¨µÄ˳ÐòÉú³É´úÂëÁË¡£´úÂëÉú³Éͨ³£Éæ¼°´ÓÒ»ÖÖÃèÊöµ½ÁíÒ»ÖÖ³Æ֮ΪÖмäÐÎʽÃèÊöµÄת»»¡£

ת»»µÄÁíÒ»ÖÖÇé¿öÊÇÔ´µ½Ô´±ä»»£¨ÓÐʱ³ÆΪԤ±àÒëÆ÷£©£¬ÊµÏÖ³ÌÐò´ÓÒ»Öָ߼¶ÓïÑÔת»»ÎªÁíÒ»Öָ߼¶ÓïÑÔµÄת»»£¬ÔÚÕâÖ®ºóÔÙÀûÓÃÄ¿±ê»úÆ÷µÄµÚ¶þÓïÑÔ±àÒëÆ÷½øÐбàÒë¡£

¸ù¾Ý±ä»»ºóµÄµü´ú¿Õ¼äºÍµ÷¶ÈÉú³É´úÂ룬ֻÐèÒªÔÚÈ·¶¨ÁËÑ­»·µÄǶÌײã´Î¹Øϵºó£¬´Ó×îÄÚ²ãÑ­»·¿ªÊ¼£¬²»¶ÏÀûÓà Fourier-Motzkin ÏûÈ¥·¨µÃµ½Ã¿¸öÑ­»·Î¬¶ÈµÄÉϽçºÍϽ硣Fourier-Motzkin ÏûÈ¥·¨ÊÇÒ»ÖÖÇó½âÏßÐԹ滮ÎÊÌâµÄ³£Ó÷½·¨£¬Ã¿ÔËÓÃÒ»´Î Fourier-Motzkin ÏûÈ¥·¨£¬¶àÃæÌå¾Í»á¼õÉÙÒ»¸öά¶È¡£¶øÑ­»·Ìå´úÂë¶ø¿ÉÒÔÀûÓ÷ÂÉ亯Êý±ä»»¾ØÕóÈ·¶¨Ï±ê±í´ïʽ¡£

ÎÒÃÇ»¹Òª³£³£¶Ô¿ØÖÆÁ÷ÃüÁîÁ¬½ÓµÄ»ù±¾³ÌÐò¿é½øÐÐÓÅ»¯ÒÔ»ñµÃ½Ï¸ßµÄ²¢ÐÐÐÔ¡£²»Í¬ÀàÐͼÆËãÓ²¼þµÄ²¢ÐдúÂëÉú³ÉÒ²ÊǺܲ»Ò»ÑùµÄ¡£

×÷Õß¼ò½é

ÕԽݣ¬2009ÄêÓÚÇ廪´óѧ»ñµÃ¹¤Ñ§Ñ§Ê¿Ñ§Î»£¬2018ÄêÓÚ·¨¹ú°ÍÀè¸ßµÈʦ·¶Ñ§Ð£»ñµÃ¹¤Ñ§²©Ê¿Ñ§Î»£¬ÏÖ¾ÍÖ°ÓÚÊýѧ¹¤³ÌÓëÏȽø¼ÆËã¹ú¼ÒÖصãʵÑéÊÒ¡£ÕԽݲ©Ê¿³¤ÆÚ´ÓʱàÒëÆ÷¸ß¼¶ÓÅ»¯ºÍ´úÂëÉú³É·½ÃæµÄÑо¿£¬Ä¿Ç°Ö÷Òª´ÓÊÂÉî¶Èѧϰ±àÒëÆ÷µÄÑо¿¡£

ÀÁÁ£¬2009ÄêÓÚÇ廪´óѧ»ñ¹¤Ñ§Ñ§Ê¿Ñ§Î»£¬2014Ä기¼ÓÄôóÂ󼪶û´óѧ½»Á÷·ÃÎÊ£¬2015ÄêÓÚ¹ú·À¿Æѧ¼¼Êõ´óѧ»ñ¹¤Ñ§²©Ê¿Ñ§Î»¡£ÀÁÁ²©Ê¿³¤ÆÚ´ÓÊÂÌåϵ½á¹¹ÐÔÄÜ·ÖÎöÓÅ»¯·½ÃæµÄÑо¿£¬Ä¿Ç°Ö÷Òª´ÓÊÂÉî¶ÈѧϰרÓüÓËÙоƬµÄÑÐÖƺÍÏà¹ØϵͳÈí¼þºÍ±à³ÌÓïÑԵĿª·¢¡£

£¨»¶Ó­ÁôÑÔ£¬ÎÒÃǽ«ÎªµãÔÞ×î¶àµÄÇ°5λ¶ÁÕßÔùËÍ¡¶¶àÃæÌå±àÒëÀíÂÛÓëÉî¶Èѧϰʵ¼ù¡·Í¼ÊéÒ»±¾£©

ÆäËûÈ˶¼ÔÚ¿´

»¶Ó­Star¡¢ÊÔÓÃOneFlow×îа汾£ºGitHub - Oneflow-Inc/oneflow: OneFlow is a deep learning framework designed to be user-friendly, scalable and efficient.OneFlow is a deep learning framework designed to be user-friendly, scalable and efficient. - GitHub - Oneflow-Inc/oneflow: OneFlow is a deep learning framework designed to be user-friendly, scalable and efficient.

https://github.com/Oneflow-Inc/oneflow/


Disable checkingPremium suggestions





2#
·¢±íÓÚ 2023-3-31 08:51:03 | Ö»¿´¸Ã×÷Õß À´×Ô£º ¹ã¶«¹ãÖÝ À´×Ô ¹ã¶«¹ãÖÝ
Á˽âÁ˽⡣

3#
·¢±íÓÚ 2023-4-1 05:48:41 | Ö»¿´¸Ã×÷Õß À´×Ô£º ¹ã¶«Ö麣 À´×Ô ¹ã¶«Ö麣
ѧϰ²Î¿¼£¬Ð»Ð»

ÄúÐèÒªµÇ¼ºó²Å¿ÉÒÔ»ØÌû µÇ¼ | ×¢²á

±¾°æ»ý·Ö¹æÔò

¿ìËٻظ´ ·µ»Ø¶¥²¿ ·µ»ØÁбí
¸½½ü
µêÆÌ
΢ÐÅɨÂë²é¿´¸½½üµêÆÌ
άÐÞ
±¨¼Û
ɨÂë²é¿´ÊÖ»ú°æ±¨¼Û
ÐźÅÔª
¼þ²éѯ
µãλͼ AIάÐÞ
ÖúÊÖ



оƬËÑË÷

¿ìËٻظ´