bc´û¹Ù·½ÍøÕ¾Èë¿Ú

BC´û¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾
Ïû·ÑÈÕ±¨Íø > ÒªÎÅ

×ÔÓÉ»ã±àX¶î¶¨³¡¾°ÓÅ»¯Ö¸ÄÏ

ÏòÈÕ¿ûÊÓÆµÂÞÖ¾Ïé×ܽáoneÒ»¸ö¹Ù·½°æÏÂÔØ-ÏòÈÕ¿ûÊÓÆµÂÞÖ¾Ïé×ܽáone

ʱ¼ä: 2025-10-23 22:37:55 À´Ô´:ÖÓ¾°½Ü

µ±µØÊ±¼ä2025-10-23

´Óµ×²ãÔ­Àíµ½ÊµÕ½¼¼ÇÉ£¬ÎÒÃǽ«ÎªÄú·ºÆðÒ»Ì×È«Ãæ¡¢ÊµÓõÄÓÅ»¯½â¾ö·½°¸£¬×ÊÖúÄúÔÚ¼¤Áҵļ¼Êõ¾ºÕùÖÐÍÑÓ±¶ø³ö£¬¼ÝÔ¦¼ÆËãµÄδÀ´¡£

¶´Ï¤¡°¶î¶¨³¡¾°¡±£ºÐÔÄÜÓÅ»¯µÄ¾«×¼×޵ã

ÔÚ̽ÌÖ¡°×ÔÓÉ»ã±àX¶î¶¨³¡¾°ÓÅ»¯Ö¸ÄÏ¡±Ö®Ç°£¬ÎÒÃDZØÐëÊ×ÏÈÃ÷È·¡°¶î¶¨³¡¾°¡±ÕâÒ»¿´·¨µÄÉîÔ¶ÒâÒå¡£Ëü²¢·Çƽ³£¶øÌ¸µÄͨÓÃÓÅ»¯£¬¶øÊÇÖ¸ÏòÌØ¶¨Ó¦Óá¢Ìض¨Ó²¼þ»·¾³ÏµÄÐÔÄÜ¡°×î¼Ñʵ¼ù¡±¡£ÏëÏóһϣ¬Ò»Á¾F1Èü³µµÄµ÷У£¬¾ø²»»áÊÇΪÁËÓ¦¶ÔÈÕ³£Í¨ÇÚ£¬¶øÊÇΪÁËÔÚÈüµÀÉÏÅܳö¼«ÖµÄËÙ¶È¡£

ͬÑù£¬¶î¶¨³¡¾°µÄÓÅ»¯£¬ÕýÊÇÒª½«¼ÆËã×ÊÔ´¾«×¼Æ¥Åäµ½Æä×îºËÐÄ¡¢×îºÄʱµÄÈÎÎñÉÏ£¬½«ÆäÐÔÄÜ·¢»Óµ½¼«Ö¡£

ºÎν¡°¶î¶¨³¡¾°¡±£¿Ëü°üÂÞÁ˼¸¸öÒªº¦Î¬¶È£º

Ó¦ÓÃÌØÐÔ£ºÄúµÄ·¨Ê½ÊÇÃܼ¯ÐͼÆË㣿Êý¾ÝÃܼ¯ÐÍ£¿»¹ÊÇI/OÃܼ¯ÐÍ£¿ËüÊÇ·ñÉæ¼°´óÁ¿µÄ¸¡µãÔËËã¡¢ÏòÁ¿²Ù×÷¡¢»òÕßÌØ¶¨µÄÖ¸Á£¨ÈçAVX¡¢NEON£©£¿ÀýÈ磬ÔÚͼÏñ´¦ÖÃÖУ¬¾í»ý²Ù×÷ºÍÏñËØ¼¶ÔËËãÊǺËÐÄ£»ÔÚ½ðÈÚ·ÖÎöÖУ¬¸ßƵ½»Ò׵ĵÍÑÓ³ÙÖÁ¹ØÖØÒª£»ÔÚ¿ÆÑ§¼ÆËãÖУ¬´ó¹æÄ£¾ØÕóÔËËãÊdz£Ì¬¡£

Ó²¼þ»·¾³£ºÄúÔËÐдúÂëµÄCPUÐͺš¢ºËÐÄÊý¡¢»º´æ½á¹¹¡¢ÄÚ´æ´ø¿í¡¢GPUÐͺŵÈ£¬¶¼Ö±½ÓÓ°Ïì×Å»ã±à´úÂëµÄÖ´ÐÐЧÂÊ¡£Í¬Ò»¶Î»ã±à´úÂ룬ÔÚ²îÒì¼Ü¹¹µÄ´¦ÖÃÆ÷ÉÏ£¬ÆäÐÔÄÜÌåÏÖ¿ÉÄÜÌì²îµØ±ð¡£ÀýÈ磬ijЩָÁîÔÚIntelƽ̨ÉÏÌåÏÖÓÅÒ죬µ«ÔÚARMƽ̨ÉÏ¿ÉÄÜÐèÒª²îÒìµÄʵÏÖ·½Ê½¡£

ÐÔÄÜÖ¸±ê£ºÄú×î¿´ÖØµÄÊÇʲô£¿ÊǼ«ÖµÄÍÌÍÂÁ¿£¿ÊǺÁÃë¼¶µÄÑÓ³Ù£¿»¹ÊÇÔÚÌØ¶¨¹¦ºÄϵÄÐÔÄÜÌåÏÖ£¿¡°¶î¶¨³¡¾°¡±µÄ½ç˵£¬Ò²°üÂÞÁËÄúÐèÒªÓÅ»¯µÄ¾ßÌåÐÔÄÜÖ¸±ê¡£

Àí½âÁ˶³¡¾°£¬ÎÒÃDZãÕÒµ½ÁËÐÔÄÜÓÅ»¯µÄ¡°°ÐÐÄ¡±¡£¶ø¡°×ÔÓÉ»ã±à¡±£¬ÔòÊÇʵÏÖÕâÒ»¾«×¼ÓÅ»¯µÄÀûÆ÷¡£¸ß¼¶ÓïÑÔËäÈ»´øÀ´ÁË¿ª·¢µÄ±ã½ÝÐÔ£¬µ«ÔÚijЩ¶ÔÐÔÄÜÓÐ׿«ÖÂÒªÇóµÄ³¡¾°Ï£¬Æä³éÏó²ã¼¶ÍùÍù»áÒþ²ØµôһЩҪº¦µÄÐÔÄÜϸ½Ú£¬µ¼Ö±àÒëÆ÷Éú³ÉµÄ´úÂë²¢·Ç×îÓÅ¡£×ÔÓÉ»ã±à£¬×÷Ϊ¼ÆËã»úÖ¸ÁîµÄÖ±½ÓÌåÏÖ£¬Èÿª·¢ÕßÄܹ»Ö±´ïÓ²¼þ²ãÃæ£¬½øÐÐ×ϸ»¯µÄ¿ØÖÆ¡£

»ã±àµÄ¡°×ÔÓÉ¡±£ºÕÆ¿ØÓ²¼þµÄÔ¿³×

¡°×ÔÓÉ»ã±à¡±²¢·ÇÒâζ×ÅÎÞÐòµÄ¡¢ËæÒâµÄ±àд¡£Ç¡Ç¡Ïà·´£¬ËüÊÇÒ»ÖÖ»ùÓÚ¶Ô¼ÆËã»úÌåϵ½á¹¹Éî¿ÌÀí½âµÄ¡¢¸ß¶È¾«È·µÄ±à³Ì·½Ê½¡£Ëü¸³Ó迪·¢ÕßÒÔÏÂÄÜÁ¦£º

Ö¸Áî¼¶¾«È·¿ØÖÆ£ºÄܹ»Ñ¡ÓÃ×îÊʺÏÌØ¶¨²Ù×÷µÄ»úÆ÷Ö¸Áî£¬ÖÆÖ¹²»ÐëÒªµÄÖ¸Áîת»»»òÈßÓà²Ù×÷¡£ÀýÈ磬ֱ½ÓʹÓÃSIMD£¨µ¥Ö¸Áî¶àÊý¾Ý£©Ö¸ÁîÀ´²¢Ðд¦Ööà¸öÊý¾Ý£¬´Ó¶ø´ó·ùÌáÉý¼ÆËãÃܼ¯ÐÍÈÎÎñµÄÍÌÍÂÁ¿¡£¼Ä´æÆ÷·ÖÅäÓÅ»¯£ºÄܹ»¾«Ï¸µØ¹ÜÀíCPU¼Ä´æÆ÷£¬×î´óÏ޶ȵؼõÉÙÄÚ´æ¶Áд²Ù×÷¡£

¼Ä´æÆ÷ÊÇCPUÄÚ²¿ËÙ¶È×î¿ìµÄ´æ´¢µ¥Ôª£¬Æµ·±µÄÄÚ´æ·ÃÎÊ»á³ÉΪÐÔÄÜÆ¿¾±¡£Í¨¹ýºÏÀíµÄ¼Ä´æÆ÷·ÖÅ䣬¿ÉÒÔÏÔÖøÌá¸ß´úÂëµÄÖ´ÐÐЧÂÊ¡£Á÷Ë®ÏߺͷÖÖ§Ô¤²âÀûÓãºÉîÈëÀí½âCPUµÄÁ÷Ë®ÏßÊÂÇéÔ­ÀíºÍ·ÖÖ§Ô¤²â»úÖÆ£¬±àдÄܹ»×î´ó»¯Ö¸Áî²¢ÐжȺÍ×îС»¯Á÷Ë®ÏßÍ£¶ÙµÄ´úÂë¡£

Õâ°üÂÞÖ¸ÁîÅÅÐò¡¢Ñ­»·Õ¹¿ª¡¢´úÂëÖØÅŵȼ¼ÇÉ¡£Ìض¨Ó²¼þÌØÐÔÀûÓ㺳äʵÀûÓÃÌØ¶¨CPU¼Ü¹¹ÌṩµÄÖÖÖÖÖ¸ÁÀ©Õ¹ºÍÓ²¼þ¼ÓËÙÌØÐÔ£¬ÈçÏòÁ¿Ö¸Á£¨SSE,AVX,NEON£©¡¢Ìض¨ÊýѧÔËËã¼ÓËÙµ¥ÔªµÈ¡£ÄÚ´æ·ÃÎÊģʽÓÅ»¯£ºÓÅ»¯Êý¾ÝµÄ¼ÓÔØºÍ´æ´¢Ë³Ðò£¬Ìá¸ß»º´æÃüÖÐÂÊ£¬¼õÉÙ»º´æµßô¤¡£

Õâ¿ÉÄÜÉæ¼°µ½Êý¾Ý½á¹¹µÄÉè¼Æµ÷Õû£¬ÒÔ¼°ÄÚ´æ¶ÔÆëµÈϸ½Ú¡£

µ±ÎÒÃǽ«¡°×ÔÓÉ»ã±à¡±Óë¡°¶î¶¨³¡¾°¡±½áºÏ£¬¾Í·¢ÉúÁË¡°×ÔÓÉ»ã±àX¶î¶¨³¡¾°ÓÅ»¯Ö¸ÄÏ¡±µÄºËÐļÛÖµ¡£ÕâÌ×Ö¸ÄÏ£¬½«²»ÔÙÊÇͨÓõĴúÂëµ÷ÓŽ¨Ò飬¶øÊÇÕë¶ÔÌØ¶¨Ó¦Óõġ°Á¿Éí¶¨ÖÆ¡±·½°¸¡£ËüÒªÇóÎÒÃÇÉîÈë·ÖÎöÓ¦ÓÃµÄÆ¿¾±£¬Àí½âÄ¿±êÓ²¼þµÄÌØÐÔ£¬È»ºóÔËÓûã±àÓïÑԵľ«ÃîÖ®´¦£¬¶ÔÖ¢ÏÂÒ©£¬Õ¥È¡³öÿһ·ÖÐÔÄÜ¡£

ʵ¼ùÕßµÄÊӽǣºÎªºÎÑ¡Ôñ×ÔÓÉ»ã±à£¿

Ò²ÐíÓÐÈË»áÖÊÒÉ£¬ÔÚÏÖ´úÈí¼þ¿ª·¢ÖУ¬¸ß¼¶ÓïÑÔºÍÇ¿´óµÄ±àÒëÆ÷ÒѾ­×㹻ǿ´ó£¬ÎªºÎ»¹ÒªÍ¶Èëʱ¼äºÍ¾«Á¦È¥Ñ§Ï°ºÍʹÓûã±à£¿´ð°¸ÔÚÓÚ£º

×îºóµÄÐÔÄܱÚÀÝ£º¶ÔÓÚÄÇЩ¶ÔÐÔÄÜÓÐ׎üºõ¿Á¿ÌÒªÇóµÄÁìÓò£¬ÈçǶÈëʽʵʱϵͳ¡¢¸ßÐÔÄܼÆË㡢ͼÐÎäÖȾ¡¢ÒôÊÓÆµ±à½âÂë¡¢¼ÓÃܽâÃÜ¡¢ÒÔ¼°ÐÂÐ˵ÄAIÍÆÀíµÈ£¬±àÒëÆ÷µÄÓÅ»¯ÄÜÁ¦ÍùÍùÓÐÆä¼«ÏÞ¡£×ÔÓÉ»ã±àÊÇÍ»ÆÆÕâЩ¼«ÏÞµÄÐëÒªÊֶΡ£Àí½âµ×²ã»úÖÆ£ºÑ§Ï°ºÍʹÓûã±à£¬Äܹ»¼«´óµØ¼ÓÉî¶Ô¼ÆËã»úµ×²ãÊÂÇéÔ­ÀíµÄÀí½â¡£

ÕâÖÖÀí½â²»½öÓÐÖúÓÚ±àд¸üÓÅ»¯µÄ´úÂ룬ҲÄܸüºÃµØ½øÐÐÐÔÄÜ·ÖÎö¡¢¹ÊÕÏÅŲ飬ÉõÖÁ¼ÓÈ뵽еÄÓ²¼þ¼Ü¹¹Éè¼ÆÖС£Ëã·¨µÄÖ±½ÓÓ³É䣺ÓÐЩËã·¨£¬Æä×îÓÅʵÏÖ·½Ê½ÔÚ¿´·¨ÉϾÍÓë»ã±àÖ¸Áî¸ß¶ÈÆõºÏ¡£ÀýÈ磬ijЩλ²Ù×÷¡¢ÃÜÂëѧËã·¨¡¢»òÕߵͼ¶Ó²¼þ½»»¥¡£Óûã±àÖ±½ÓʵÏÖ£¬¿ÉÒÔÖÆÖ¹¸ß¼¶ÓïÑÔ´øÀ´µÄÌØ±ð¿ªÏú¡£

ÌØ¶¨³¡¾°ÏµÄЧÂÊÌáÉý£º¼´Ê¹ÊÇÖ»ÓÅ»¯Ò»Ð¡¶ÎÖÁ¹ØÖØÒªµÄ´úÂ룬Æä´øÀ´µÄÕûÌåÐÔÄÜÌáÉýÒ²¿ÉÄܷdz£¿É¹Û¡£ÀýÈ磬ÔÚÒ»¸öÐèÒª´¦Öú£Á¿Êý¾ÝµÄϵͳÖУ¬¶ÔÊý¾ÝÔ¤´¦ÖûòºËÐļÆËãÑ­»·½øÐлã±àÓÅ»¯£¬¿ÉÒÔÏÔÖøËõ¶ÌÕûÌå´¦ÖÃʱ¼ä¡£

¡°×ÔÓÉ»ã±àX¶î¶¨³¡¾°ÓÅ»¯Ö¸ÄÏ¡±µÄµ®Éú£¬ÕýÊÇΪÁËÓ¦¶ÔÕâЩÌôÕ½£¬ÎªÄÇЩϣÍûÔÚÐÔÄÜÉÏ×·Çó¼«ÖµĿª·¢Õߺ͹¤³ÌʦÌṩһ·ÝÇåÎúµÄ·Ïßͼ¡£Ëü²»ÊǼ¼Êõìż¼£¬¶øÊǶÔЧÂʺÍÐÔÄܵļ«ÖÂ×·Çó£¬ÊǽâËø¼ÆËãDZÄܵÄÒªº¦¡£ÔÚ½ÓÏÂÀ´µÄpart2ÖУ¬ÎÒÃǽ«ÉîÈë̽ÌÖ¾ßÌåµÄÓÅ»¯¼¼ÇɺÍʵ¼ùÒªÁì¡£

×ÔÓÉ»ã±àX¶î¶¨³¡¾°ÓÅ»¯£º´ÓÔ­Àíµ½ÊµÕ½µÄÉî¶È̽Ë÷

ÔÚpart1ÖУ¬ÎÒÃÇÈ·Á¢ÁË¡°¶î¶¨³¡¾°¡±µÄ¾«È·½ç˵ÒÔ¼°¡°×ÔÓÉ»ã±à¡±×÷ΪҪº¦ÓÅ»¯¹¤¾ßµÄÖØÒªÐÔ¡£ÏÖÔÚ£¬ÎÒÃǽ«ÉîÈëµ½¾ßÌåµÄʵ¼ù²ãÃæ£¬Ì½ÌÖÈçºÎÔËÓÃ×ÔÓÉ»ã±à£¬Õë¶ÔÌØ¶¨µÄ¶î¶¨³¡¾°½øÐÐÐÔÄÜÓÅ»¯¡£ÕâÐèÒªÎÒÃǾ߱¸¶Ô¼ÆËã»úÌåϵ½á¹¹µÄÉîÈëÀí½â£¬ÒÔ¼°¶ÔËã·¨ºÍÊý¾Ý½á¹¹µÄÃôÈñ¶´²ìÁ¦¡£

Ò»¡¢ºËÐÄÓÅ»¯¼ÆÄ±£ºÖ¸Áî¼¶²¢ÐÐÓëÊý¾Ý¸´ÓÃ

ÔÚ¾ø´ó¶àÊý¶î¶¨³¡¾°Ï£¬ÐÔÄÜÓÅ»¯µÄÁ½´ó»ùʯÊÇÖ¸Áî¼¶²¢ÐУ¨ILP£©ºÍÊý¾Ý¸´Óá£×ÔÓÉ»ã±àÕýÊÇʵÏÖÕâÁ½´óÄ¿±êµÄ×îÖ±½ÓÊֶΡ£

Ö¸Áî¼¶²¢ÐÐ(ILP)µÄÒÕÊõ£º

Ö¸ÁîÁ÷Ë®»¯Óë̽²â£ºÏÖ´úCPU½ÓÄÉÖ¸ÁîÁ÷Ë®ÏßÀ´Ìá¸ßÍÌÍÂÁ¿£¬µ«Ä³Ð©Ö¸ÁÈç³ý·¨¡¢ÄÚ´æ·ÃÎÊ£©»áÔì³ÉÁ÷Ë®ÏßÍ£¶Ù¡£»ã±àÔÊÐíÎÒÃǾ«ÐIJ¿ÊðÖ¸ÁîµÄ˳Ðò£¬ÀûÓÃCPUµÄÂÒÐòÖ´ÐÐÄÜÁ¦£¬Ìͣ¶Ù£¬ÊµÏÖ¸ü¸ßµÄ²¢ÐжÈ¡£ÀýÈ磬½«ºÄʱµÄ¼ÆËãÖ¸ÁîÌáǰ£¬´ýÆäÖ´ÐÐʱ£¬½«ÄÚ´æ·ÃÎÊÖ¸ÁÊðÔÚºóÃæ¡£

SIMDÖ¸Á£¨ÏòÁ¿»¯£©£º¶ÔÓÚÊý¾ÝÃܼ¯ÐÍÈÎÎñ£¨Í¼Ïñ´¦ÖᢿÆÑ§¼ÆËã¡¢ÒôƵ/ÊÓÆµ±àÂ룩£¬SIMDÊÇÐÔÄÜÌáÉýµÄ¡°ÉñÆ÷¡±¡£»ã±à¿ÉÒÔÖ±½Óµ÷ÓÃAVX¡¢SSE¡¢NEONµÈÖ¸Á£¬ÈÃÒ»ÌõÖ¸Áîͬʱ´¦Ööà¸öÊý¾ÝÔªËØ£¨Èç4¸ö32λ¸¡µãÊý¡¢8¸ö16λÕûÊý£©¡£

ÀýÈ磬ÔÚͼÏñÄ£ºýËã·¨ÖУ¬¿ÉÒÔ½«¶à¸öÏñËØµÄƽ¾ùÖµ¼ÆËã²¢Ðл¯¡£ÏÔʽSIMDIntrinsics£º¼´Ê¹²»Ö±½Ó±àдµ×²ã»ã±à£¬Ðí¶à±àÒëÆ÷Ò²ÌṩÁËSIMDintrinsics£¨ÄÚ½¨º¯Êý£©£¬ËüÃÇʵ¼ÊÉÏÊǶÔÌØ¶¨»ã±àÖ¸ÁîµÄ·â×°£¬·½±ãÎÒÃÇÔÚC/C++µÈ¸ß¼¶ÓïÑÔÖÐʹÓÃSIMDÖ¸Áî¡£

µ«Òªµ½´ï¼«ÖÂÐÔÄÜ£¬Ö±½ÓÀí½âºÍʹÓûã±à»òintrinsicsµÄ×éºÏÊÇÐëÒªµÄ¡£

Êý¾Ý¸´Óõļ«ÖÂ×·Çó£º

¼Ä´æÆ÷·ÖÅäµÄÒÕÊõ£ºCPU¼Ä´æÆ÷ÊÇËÙ¶È×î¿ìµÄ´æ´¢¡£ÔÚ»ã±à²ãÃæ£¬ÎÒÃÇ¿ÉÒÔ¾«È·¿ØÖƱäÁ¿ÔڼĴæÆ÷ÖеÄÉúÃüÖÜÆÚ£¬¼õÉÙ²»ÐëÒªµÄÄÚ´æ¶Áд¡£ÀýÈ磬½«Ñ­»·ÖÐÆµ·±Ê¹ÓõıäÁ¿£¨¼ÆÊýÆ÷¡¢Öмä½á¹û£©Ê¼ÖÕ±£³ÖÔڼĴæÆ÷ÖС£»º´æÓÅ»¯£ºÓÅ»¯ÄÚ´æ·ÃÎÊģʽ£¬Ìá¸ßCPU»º´æµÄÃüÖÐÂÊ¡£

Õâ°üÂÞ£ºÊý¾Ý¾Ö²¿ÐÔ£º¾¡Á¿ÈÃÐèÒªµÄÊý¾ÝÔÚͬһʱ¼ä±»·ÃÎÊ¡£Êý¾Ý¹æÕû»¯£ºÆ¾¾ÝÄÚ´æµØÖ·Ë³Ðò·ÃÎÊÊý¾Ý£¬ÖÆÖ¹¡°ÌøÔ¾Ê½¡±·ÃÎÊ¡£Ñ­»·Õ¹¿ªÓëÊý¾ÝԤȡ£ºÕ¹¿ªÑ­»·¿ÉÒÔ̻¶¸ü¶àµÄ²¢ÐÐÐÔ£¬²¢ÎªºóÐø¼ÆËãԤȡÊý¾Ý¡£ÊÖ¶¯»º´æÐÐÌî³ä£ºÔÚÄ³Ð©ÌØ¶¨³¡¾°Ï£¬¿ÉÒÔͨ¹ýÌØÊâ¼¼ÊõÌî³ä»º´æÐУ¬ÖÆÖ¹»º´æµßô¤¡£

¶þ¡¢¶î¶¨³¡¾°ÏµĻã±àÓÅ»¯ÊµÀý·ÖÎö

ÈÃÎÒÃÇÀ´¿´¼¸¸öµäÐ͵Ķ³¡¾°£¬ÒÔ¼°»ã±àÓÅ»¯µÄÓ¦Óãº

³¡¾°Ò»£ºÍ¼Ïñ´¦ÖÃÖеÄÂ˲¨Æ÷£¨¾í»ý£©

Æ¿¾±£º´óÁ¿ÏàËÆµÄ³Ë¼ÓÔËË㣬¶ÔÄÚ´æ·ÃÎÊÒªÇó¸ß¡£»ã±àÓÅ»¯£ºÀûÓÃSIMDÖ¸ÁÈçAVX2,NEON£©²¢Ðд¦Ööà¸öÏñËØµã¡£½«Â˲¨Æ÷ºË£¨kernel£©¼ÓÔØµ½¼Ä´æÆ÷»ò³£Á¿ÄÚ´æÖУ¬¼õÉÙÖØ¸´¼ÓÔØ¡£ÓÅ»¯Í¼ÏñÊý¾ÝµÄÄÚ´æ·ÃÎÊģʽ£¬È·±£»º´æÃüÖÐÂÊ£¬ÀýÈç°´Ðлò°´¿é¶ÁÈ¡¡£

Ñ­»·Õ¹¿ª£¬¼õÉÙÑ­»·¿ØÖÆÖ¸ÁîµÄ¿ªÏú¡£

³¡¾°¶þ£º¸ßÐÔÄܼÆËãÖеľØÕó³Ë·¨

Æ¿¾±£ºO(n^3)µÄÅÓ´ó¶È£¬´óÁ¿µÄ¸¡µã³Ë¼ÓÔËËã¡£»ã±àÓÅ»¯£ºTiling(·Ö¿é)£º½«´ó¾ØÕóÆÊÎö³ÉС¿é£¬Ìá¸ß»º´æÀûÓÃÂÊ£¬Ê¹Ð¡¿é¾ØÕóÄܹ»ÍêÈ«·ÅÈ뻺´æ¡£LoopUnrolling&RegisterBlocking£º½øÒ»²½Õ¹¿ªÐ¡¿éÄÚµÄÑ­»·£¬²¢½«Öмä½á¹û¾¡¿ÉÄÜÉú´æÔڼĴæÆ÷ÖУ¬Ðγɡ°¼Ä´æÆ÷¿é¡±¡£

SIMDÏòÁ¿»¯£º¶ÔÏòÁ¿»¯µÄ³Ë¼Ó²Ù×÷½øÐÐÓÅ»¯¡£BLAS¿âµÄ»ã±àʵÏÖ£ºÐí¶à¸ßÐÔÄÜÊýѧ¿â£¨ÈçIntelMKL,OpenBLAS£©µÄºËÐIJ¿ÃžÍÊÇÓɸ߶ÈÓÅ»¯µÄ»ã±à´úÂë±àдµÄ£¬ÒÔ³äʵÀûÓÃÌØ¶¨CPU¼Ü¹¹¡£

³¡¾°Èý£ºÇ¶ÈëʽϵͳÖеÄʵʱ¿ØÖÆ

Æ¿¾±£º¼«µÍµÄÑÓ³ÙÒªÇ󣬲»ÐÐÔ¤²âµÄÖжÏÏìÓ¦£¬ÓÐÏÞµÄ×ÊÔ´¡£»ã±àÓÅ»¯£º¾«È·µÄʱÐò¿ØÖÆ£ºÖÆÖ¹¸ß¼¶ÓïÑÔÖеĺ¯Êýµ÷ÓÿªÏú¡¢¶¯Ì¬ÄÚ´æ·ÖÅäµÈ²»È·¶¨ÐÔ¡£Öжϴ¦ÖÃÓÅ»¯£º±àд¸ßЧµÄ»ã±àÖжϷþÎñÀý³Ì£¬¿ìËÙÉú´æÏÖ³¡¡¢´¦ÖÃÖжϡ¢»Ö¸´ÏÖ³¡¡£Ìض¨Ó²¼þÖ¸ÁÀûÓÃARMCortex-MϵÁеÄThumbÖ¸Á£¬»òDSPרÓÃÖ¸ÁÌá¸ß´úÂëÃܶȺÍÖ´ÐÐЧÂÊ¡£

×ÊÔ´¹ÜÀí£ºÊÖ¶¯¹ÜÀí¶ÑÕ»£¬ÖÆÖ¹¶ÑÕ»Òç³ö£¬¾«È·¿ØÖÆÄÚ´æÊ¹Óá£

Èý¡¢ÊµÊ©¡°×ÔÓÉ»ã±àX¶î¶¨³¡¾°ÓÅ»¯Ö¸ÄÏ¡±µÄ²½Öè

¾«È·¶¨Î»Æ¿¾±£ºÊ¹ÓÃÐÔÄÜ·ÖÎö¹¤¾ß£¨Èçperf,VTune,gprof£©ÕÒ³öÓ¦Ó÷¨Ê½ÖÐ×îºÄʱµÄ²¿ÃÅ£¬Õâͨ³£ÊÇÓÅ»¯µÄÖØµã¡£Àí½âÓ²¼þ¼Ü¹¹£ºÉîÈëÑо¿Ä¿±êCPUµÄÖ¸Á¡¢Á÷Ë®Ïß¡¢»º´æÌõÀí½á¹¹¡¢¼Ä´æÆ÷ÊýÁ¿µÈ¡£Ñ¡ÔñºÏÊʵÄÓÅ»¯¼ÆÄ±£ºÆ¾¾ÝÆ¿¾±µÄÌØÐÔ£¬Ñ¡ÔñÏòÁ¿»¯¡¢Êý¾Ý¸´Óá¢Á÷Ë®ÏßÓÅ»¯µÈ¼ÆÄ±¡£

±àд»ã±à´úÂë»òIntrinsics£ºÖ±½Ó»ã±à£º¶ÔÓÚÐÔÄÜÒªÇó×ÖµIJ¿ÃÅ£¬Ö±½ÓÓÃAT&T»òIntelÓï·¨µÄ»ã±à±àд¡£Intrinsics£ºÔÚC/C++´úÂëÖÐʹÓÃintrinsicsº¯Êý£¬ËüÃÇÊÇ»ã±àÖ¸ÁîµÄ¡°¸ß¼¶½Ó¿Ú¡±¡£»ìºÏ±à³Ì£º½«Òªº¦µÄ»ã±àº¯Êýͨ¹ýextern"C"µÈ·½Ê½Ç¶Èëµ½¸ß¼¶ÓïÑÔÏîÄ¿ÖС£

»Ø¹é²âÊÔÓëÑéÖ¤£ºÓÅ»¯ºó£¬Îñ±Ø½øÐÐÈ«ÃæµÄ»Ø¹é²âÊÔ£¬È·±£¹¦Ð§ÕýÈ·ÐÔ¡£ÔٴνøÐÐÐÔÄÜ·ÖÎö£¬Á¿»¯ÓÅ»¯Ð§¹û¡£Á¬Ðøµü´ú£ºÐÔÄÜÓÅ»¯ÊÇÒ»¸öÁ¬ÐøµÄ¹ý³Ì£¬Ëæ×ÅÒµÎñÐèÇóµÄ±ä»¯»òÓ²¼þµÄÉý¼¶£¬¿ÉÄÜÐèÒª²»Í£µØÖØÐÂÆÀ¹ÀºÍµ÷ÕûÓÅ»¯·½°¸¡£

½áÓ¼ÝÔ¦¼ÆËãµÄδÀ´

¡°×ÔÓÉ»ã±àX¶î¶¨³¡¾°ÓÅ»¯Ö¸ÄÏ¡±²¢·ÇÒ»ÀÍÓÀÒݵÄÃØ¼®£¬¶øÊÇÒ»ÖÖ˼ά·½Ê½ºÍÒ»Ì×ÒªÁìÂÛ¡£ËüÒªÇ󿪷¢ÕßÌø³ö¸ß¼¶ÓïÑÔµÄÊæÊÊÇø£¬ÉîÈëÀí½â¼ÆËãµÄ±¾ÖÊ£¬²¢Óµ±§¶ÔÓ²¼þµÄÖ±½ÓÕÆ¿Ø¡£ÔÚÈÕÐÂÔÂÒìµÄ¼¼ÊõÀ˳±ÖУ¬ÎÞÂÛÊÇ×Ô¶¯¼ÝÊ»µÄ¸ÐÖªËã·¨¡¢´óÐÍÓÎÏ·µÄÎïÀíÒýÇæ¡¢»¹ÊǽðÈÚÊг¡µÄÁ¿»¯½»Ò×ϵͳ£¬¶¼Àë²»¿ª¶ÔÐÔÄܵļ«ÖÂ×·Çó¡£

ÕÆÎÕ×ÔÓÉ»ã±à£¬Õë¶Ô¶î¶¨³¡¾°½øÐо«Ï¸ÓÅ»¯£¬½«ÊÇÄúÔÚÏÂÒ»´ú¼ÆËã¸ïÃüÖб£³ÖÁìÏȵÄÒªº¦¡£Õâ²»½öÊǼ¼ÊõµÄ¾«½ø£¬¸üÊǶÔЧÂʺʹ´ÐµIJ»Ð¸Ì½Ë÷¡£

±êÇ©:
±à¼­: ÀîÖ¾Ô¶
ÍøÕ¾µØÍ¼