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