Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
AMD OpenCL ´óѧ¿Î³Ì(1)
 
ÒëÕߣºÂõ¿ËÀÏÀÇ2012£¬»ðÁú¹ûÈí¼þ ·¢²¼ÓÚ£º2014-11-03
  2747  次浏览      48
 

½Ì³ÌÖеÄÓ¢Îĺܼòµ¥£¬ÎÒÏàÐÅѧOpenCLµÄÈ˶¼ÄÜ¿´µÃ¶®£¬¶øÇÒ¿´Ô­Ö­Ô­Î¶µÄÓ¢ÎıíÊö£¬¸üÓÐÀûÓÚÎÒÃÇÁ˽â¸÷ÖÖÊõÓïµÄÀ´ÁúÈ¥Âö¡£

ÎÒ°ÑÕâЩ½Ì³Ì·­Òë³É×Ô¼ºµÄÖÐÎıíÊö£¬Ö÷ÒªÊÇÇ¿»¯Àí½âÐèÒª£¬ÆäʵÎÒµÄÓ¢ÎĺÜÀá£

Ò»¡¢²¢ÐмÆËã¸ÅÊö

ÔÚ¼ÆËã»úÊõÓïÖУ¬²¢ÐÐÐÔÊÇÖ¸£º°ÑÒ»¸ö¸´ÔÓÎÊÌâ,·Ö½â³É¶à¸öÄÜͬʱ´¦ÀíµÄ×ÓÎÊÌâµÄÄÜÁ¦¡£ÒªÊµÏÖ²¢ÐмÆË㣬Ê×ÏÈÎÒÃÇÒªÓÐÎïÀíÉÏÄܹ»ÊµÏÖ²¢ÐмÆËãµÄÓ²¼þÉ豸£¬±ÈÈç¶àºËCPU£¬Ã¿¸öºËÄÜͬʱʵÏÖËãÊõ»òÂß¼­ÔËËã¡£

ͨ³££¬ÎÒÃÇͨ¹ýGPUʵÏÖÁ½ÀಢÐмÆË㣺

ÈÎÎñ²¢ÐУº°ÑÒ»¸öÎÊÌâ·Ö½âΪÄܹ»Í¬Ê±Ö´ÐеĶà¸öÈÎÎñ¡£

Êý¾Ý²¢ÐУºÍ¬Ò»¸öÈÎÎñÄÚ£¬ËüµÄ¸÷¸ö²¿·ÖͬʱִÐС£

ÏÂÃæÎÒÃÇͨ¹ýÒ»¸öÅ©³¡Ö÷¹ÍÓ¶¹¤ÈËժƻ¹ûµÄÀý×ÓÀ´ÃèÊö²»Í¬ÖÖÀàµÄ²¢ÐмÆËã¡£

1.ժƻ¹ûµÄ¹¤È˾ÍÊÇÓ²¼þÉϵIJ¢Ðд¦Àíµ¥Ôª£¨process elements)¡£

2.Ê÷¾ÍÊÇÒªÖ´ÐеÄÈÎÎñ¡£

3.Æ»¹û¾ÍÊÇÒª´¦ÀíµÄÊý¾Ý¡£

´®ÐеÄÈÎÎñ´¦Àí¾ÍÈçÏÂͼËùʾ£¬Ò»¸ö¹¤È˱³×ÅÌÝ×ÓÕªÍêËùÓÐÊ÷ÉÏµÄÆ»¹û£¨Ò»¸ö´¦Àíµ¥Ôª´¦ÀíÍêËùÓÐÈÎÎñµÄÊý¾Ý£©¡£

Êý¾Ý²¢ÐоͺñÈÅ©³¡Ö÷¹ÍÓ¶Á˺ö๤ÈËÀ´ÕªÍêÒ»¸öÊ÷ÉÏµÄÆ»¹û£¨¶à¸ö´¦Àíµ¥Ôª²¢ÐÐÍê³ÉÒ»¸öÈÎÎñÖеÄÊý¾Ý£©£¬ÕâÑù¾ÍÄܺܿìÕªÍêÒ»¿ÅÊ÷ÉÏµÄÆ»¹û¡£

Å©³¡Ö÷Ò²¿ÉÒÔΪÿ¿ÃÊ÷°²ÅÅÒ»¸ö¹¤ÈË£¬Õâ¾ÍºÃ±ÈÈÎÎñ²¢ÐС£ÔÚÿ¸öÈÎÎñÄÚ£¬ÓÉÓÚÖ»ÓÐÒ»¸ö¹¤ÈË£¬ËùÒÔÊÇ´®ÐÐÖ´Ðе쬵«ÈÎÎñÖ®¼äÊDz¢Ðеġ£

¶ÔÒ»¸ö¸´ÔÓÎÊÌ⣬ӰÏì²¢ÐмÆËãµÄÒòËØºÜ¶à¡£Í¨³££¬ÎÒÃǶ¼ÊÇͨ¹ý·Ö½âÎÊÌâµÄ·½Ê½À´ÊµÊ©²¢Ëã·¨ÐС£

ÕâÓÖ°üÀ¨Á½·½ÃæÄÚÈÝ£º

1.ÈÎÎñ·Ö½â£º°ÑËã·¨·Ö½â³ÉºÜ¶àµÄСÈÎÎñ£¬¾ÍÏñÇ°ÃæµÄÀý×ÓÖУ¬°Ñ¹ûÔ°°´Æ»¹ûÊ÷½øÐл®·Ö£¬ÕâʱÎÒÃDz¢²»¹Ø×¢Êý¾Ý£¬Ò²¾ÍÊÇ˵²»¹Ø×¢Ã¿¸öÊ÷Éϵ½µ×ÓжàÉÙ¸öÆ»¹û¡£

2.Êý¾Ý·Ö½â£º¾ÍÊǰѺܶàÊý¾Ý£¬·Ö³É²»Í¬µÄ¡¢ÀëÉ¢µÄС¿é£¬ÕâЩÊý¾Ý¿éÄܹ»±»²¢ÐÐÖ´ÐУ¬¾ÍºÃ±ÈÇ°ÃæÀý×ÓÖÐµÄÆ»¹û¡£

ͨ³£ÎÒÃǰ´ÕÕËã·¨Ö®¼äµÄÒÀÀµ¹ØÏµÀ´·Ö½âÈÎÎñ£¬ÕâÑù¾ÍÐγÉÁËÒ»¸öÈÎÎñ¹ØÏµÍ¼¡£Ò»¸öÈÎÎñÖ»ÓÐûÓÐÒÀÀµÈÎÎñµÄʱºò£¬²ÅÄܹ»±»Ö´ÐС£

ÕâÓеãÀàËÆÓÚÊý¾Ý½á¹¹ÖеÄÓÐÏòÎÞ»·Í¼£¬Á½¸öûÓÐÁ¬Í¨Â·¾¶µÄÈÎÎñÖ®¼ä¿ÉÒÔ²¢ÐÐÖ´ÐС£ÏÂÃæÔÙ¸øÒ»¸ö¿¾Ãæ°üµÄÀý×Ó£¬Èç¹ûËùʾ£¬Ô¤ÈÈ¿¾ÏäºÍ¹ºÂòÃæ·ÛÌÇÁ½¸öÈÎÎñÖ®¼ä¿ÉÒÔ²¢ÐÐÖ´ÐС£

¶Ô´ó¶àÊý¿ÆÑ§¼ÆËãºÍ¹¤³ÌÓ¦ÓÃÀ´Ëµ£¬Êý¾Ý·Ö½âÒ»°ã¶¼ÊÇ»ùÓÚÊä³öÊý¾Ý,ÀýÈ磺

1.ÔÚÒ»¸±Í¼ÏñÖУ¬¶ÔÒ»¸ö»¬¶¯´°¿Ú£¨ÀýÈ磺3*3ÏñËØ)ÄÚµÄÏñËØÊµÊ©Â˲¨²Ù×÷£¬¿ÉÒԵõ½Ò»¸öÊä³öÏñËØµÄ¾í»ý¡£

2.µÚÒ»¸öÊäÈë¾ØÕóµÄµÚiÐгËÒÔµÚ¶þ¸öÊäÈë¾ØÕóµÄµÚjÁУ¬µÃµ½µÄÏòÁ¿ºÍ¼´ÎªÊä³ö¾ØÕóµÚiÐУ¬µÚjÁеÄÔªËØ¡£

ÕâÖÖ·½·¨¶ÔÓÚÊäÈëºÍÊä³öÊý¾ÝÊÇÒ»¶ÔÒ»£¬»òÕß¶à¶ÔÒ»µÄ¶ÔÓ¦¹ØÏµ±È½ÏÓÐЧ¡£

Ò²ÓеÄÊý¾Ý·Ö½âËã·¨ÊÇ»ùÓÚÊäÈëÊý¾ÝµÄ£¬Õâʱ£¬ÊäÈëÊý¾ÝºÍÊä³öÊý¾ÝÒ»°ãÊÇÒ»¶Ô¶àµÄ¹ØÏµ£¬±ÈÈçÇóͼÏñµÄÖ±·½Í¼£¬ÎÒÃÇÒª°Ñÿ¸öÏñËØ·Åµ½¶ÔÓ¦µÄ²ÛÖÐ(bins£¬¶ÔÓÚ»Ò¶Èͼ£¬binÊýÁ¿Í¨³£ÊÇ256£©¡£Ò»¸öËÑË÷º¯Êý£¬ÊäÈë¿ÉÄÜÊǶà¸öÊý¾Ý£¬Êä³öÈ´Ö»ÓÐÒ»¸öÖµ¡£¶ÔÓÚÕâÀàÓ¦Óã¬ÎÒÃÇÒ»°ãÓÃÿ¸öÏ̼߳ÆËãÊä³öµÄÒ»²¿·Ö£¬È»ºóͨ¹ýͬ²½ÒÔ¼°Ô­×Ó²Ù×÷µÃµ½×îÖÕµÄÖµ£¬OpenCLÖÐÇó×îСֵµÄkernelº¯Êý¾ÍÊǵäÐÍ´ú±í[¿ÉÒÔ¿´ÏÂATI Stream Computing OpenCL programming guideµÚ¶þÕÂÖÐÇó×îСֵµÄkernelÀý×Ó]¡£

ͨ³£À´Ëµ£¬ÔõÑù·Ö½âÎÊÌâºÍ¾ßÌåËã·¨Óйأ¬¶øÇÒ»¹Òª¿¼ÂÇ×Ô¼ºÊ¹ÓõÄÓ²¼þºÍÈí¼þ£¬±ÈÈçAMD GPUƽ̨ºÍNvdia GPUƽ̨µÄÓÅ»¯¾ÍÓкܶ಻ͬ¡£

¶þ¡¢³£ÓûùÓÚÓ²¼þºÍÈí¼þµÄ²¢ÐÐ

ÔÚÉϸöʵ¼Ê90Äê´ú£¬²¢ÐмÆËãÖ÷ÒªÑо¿ÈçºÎÔÚcpuÉÏʵʩָ×Ô¶¯µÄÖ¸Áî¼¶²¢ÐС£

1.ͬʱ·¢Éä¶àÌõÖ¸Á֮¼äûÓÐÒÀÀµ¹ØÏµ£©£¬²¢ÐÐÖ´ÐÐÕâЩָÁî¡£

2.ÔÚ±¾½Ì³ÌÖУ¬ÎÒô²»½²Êö×Ô¶¯µÄÓ²¼þ¼¶²¢ÐУ¬¸ÐÐËȤµÄ»°£¬¿ÉÒÔ¿´¿´¼ÆËã»úÌåϵ½á¹¹µÄ½Ì³Ì¡£

¸ß²ãµÄ²¢ÐУ¬±ÈÈçÏ̼߳¶±ðµÄ²¢ÐУ¬Ò»°ãºÜÄÑ×Ô¶¯»¯£¬ÐèÒª³ÌÐòÔ±¸æËß¼ÆËã»ú£¬¸Ã×öʲô£¬²»¸Ã×öʲô¡£Õâʱ£¬³ÌÐòÔ±»¹Òª¿¼ÂÇÓ²¼þµÄ¾ßÌåÖ¸±ê£¬Í¨³£Ìض¨Ó²¼þ¶¼ÊÇÊÊÓ¦ÓÚijһÀಢÐбà³Ì£¬±ÈÈç¶àºËcpu¾ÍÊʺϻùÓÚÈÎÎñµÄ²¢Ðбà³Ì£¬¶øGPU¸üÊÊÓ¦ÓÚÊý¾Ý²¢Ðбà³Ì¡£

ÏÖ´úµÄGPUÓкܶà¶ÀÁ¢µÄÔËËãºË£¨processor£©×é³É£¬ÔÚAMD GPUÉϾÍÊÇstream core£¬ÕâЩcoreÄܹ»Ö´ÐÐSIMD²Ù×÷£¨µ¥Ö¸Á¶àÊý¾Ý£©£¬ËùÒÔÌØ±ðÊʺÏÊý¾Ý²¢ÐвÙ×÷¡£Í¨³£GPUÉÏÖ´ÐÐÒ»¸öÈÎÎñ£¬¶¼ÊǰÑÈÎÎñÖеÄÊý¾Ý·ÖÅäµ½¸÷¸ö¶ÀÁ¢µÄcoreÖÐÖ´ÐС£

ÔÚGPUÉÏ£¬ÎÒÃÇÒ»°ãͨ¹ýÑ­»·Õ¹¿ª£¬Loop strip mining ¼¼Êõ£¬À´°Ñ´®ÐдúÂë¸Ä³É²¢ÐÐÖ´Ðеġ£±ÈÈçÔÚCPUÉÏ£¬Èç¹ûÎÒÃÇʵÏÖÒ»¸öÏòÁ¿¼Ó·¨£¬´úÂëͨ³£ÈçÏ£º

for(i = 0; i < n; i++)
2: {
3: C[i] = A[i] + B[i];
4: }

ÔÚGPUÉÏ£¬ÎÒÃÇ¿ÉÒÔÉèÖÃn¸öỊ̈߳¬Ã¿¸öÏß³ÌÖ´ÐÐÒ»¸ö¼Ó·¨£¬ÕâÑù´ó´óÌá¸ßÁËÏòÁ¿¼Ó·¨µÄ²¢ÐÐÐÔ¡£

__kernel void VectorAdd(__global const float* a, __global const float* b, __global float* c, int n)
2: {
3: int i = get_global_id(0);
4: c[i] = a[i] + b[i];
5: }

ÉÏÃæÕâ¸öͼչʾÁËÏòÁ¿¼Ó·¨µÄSPMD£¨µ¥Ö¸Áî¶àỊ̈߳©ÊµÏÖ£¬´ÓͼÖпÉÒÔ¿´³öÈçºÎʵʩLoop strip mining ²Ù×÷µÄ¡£

GPUµÄ³ÌÐòÒ»°ã³Æ×÷Kernel³ÌÐò£¬ËüÊÇÒ»ÖÖSPMDµÄ±à³ÌÄ£ÐÍ£¨the Single Program Multiple Data £©¡£SPMDÖ´ÐÐͬһ¶Î´úÂëµÄ¶à¸öʵÀý£¬Ã¿¸öʵÀý¶ÔÊý¾ÝµÄ²»Í¬²¿·Ö½øÐвÙ×÷¡£

ÔÚÊý¾Ý²¢ÐÐÓ¦ÓÃÖУ¬ÓÃloop strip miningÀ´ÊµÏÖSPMDÊÇ×î³£Óõķ½·¨£º

1.ÔÚ·Ö²¼Ê½ÏµÍ³ÖУ¬ÎÒÃÇÓÃMessage Passing Interface (MPI)À´ÊµÏÖSPMD¡£

2.ÔÚ¹²ÏíÄÚ´æ²¢ÐÐϵͳÖУ¬ÎÒÃÇÓÃPOSIXÏß³ÌÀ´ÊµÏÖSPMD¡£

3.ÔÚGPUÖУ¬ÎÒÃǾÍÊÇÓÃKernelÀ´ÏÔÏÖSPMD¡£

ÔÚÏÖ´úµÄCPUÉÏ£¬´´½¨Ò»¸öÏ̵߳ĿªÏú»¹ÊǺܴóµÄ£¬Èç¹ûÒªÔÚCPUÉÏʵÏÖSPMD£¬Ã¿¸öÏ̴߳¦ÀíµÄÊý¾Ý¿é¾ÍÒª¾¡Á¿´óµã£¬×ö¸ü¶àµÄÊÂÇ飬ÒÔ±ã¼õÉÙÆ½¾ùÏ߳̿ªÏú¡£µ«ÔÚGPUÉÏ£¬¶¼ÊÇÇáÁ¿¼¶µÄỊ̈߳¬´´½¨¡¢µ÷¶ÈÏ̵߳ĿªÏú±È½ÏС£¬ËùÒÔÎÒÃÇ¿ÉÒÔ×öµ½°ÑÑ­»·Íêȫչ¿ª£¬Ò»¸öÏ̴߳¦ÀíÒ»¸öÊý¾Ý¡£

GPUÉϲ¢Ðбà³ÌµÄÓ²¼þÒ»°ã³Æ×÷SIMD¡£Í¨³££¬·¢ÉäÒ»ÌõÖ¸Áîºó£¬ËüÒªÔÚ¶à¸öALUµ¥ÔªÖÐÖ´ÐУ¨ALUµÄÊýÁ¿¼´Ê¹simdµÄ¿í¶È£©£¬ÕâÖÖÉè¼Æ¼õÉÙÁË¿ØÖÆÁ÷µ¥ÔªÒÔ¼¶ALUÏà¹ØµÄÆäËûÓ²¼þÊýÁ¿¡£

SIMDµÄÓ²¼þÈçÏÂͼËùʾ£º

ÔÚÏòÁ¿¼Ó·¨ÖУ¬¿í¶ÈΪ4µÄSIMDµ¥Ôª£¬¿ÉÒÔ°ÑÕû¸öÑ­»··ÖΪËĸö²¿·ÖͬʱִÐС£ÔÚ¹¤ÈËժƻ¹ûµÄÀý×ÓÖУ¬¹¤È˵ÄË«ÊÖÀàËÆÓÚSIMDµÄ¿í¶ÈΪ2¡£ÁíÍ⣬ÎÒÃÇÒªÖªµÀ£¬ÏÖÔÚµÄGPUÓ²¼þÉ϶¼ÊÇ»ùÓÚSIMDÉè¼Æ£¬GPUÓ²¼þÒþʽµÄ°ÑSPMDÏß³ÌÓ³Éäµ½SIMD coreÉÏ¡£¶Ô¿ª·¢ÓÐÈËÔ±À´Ëµ£¬ÎÒÃDz¢²»ÐèÒª¹Ø×¢Ó²¼þÖ´Ðнá¹ûÊÇ·ñÕýÈ·£¬ÎÒÃÇÖ»ÐèÒª¹Ø×¢ËüµÄÐÔÄܾÍOKÁË¡£

CPUÒ»°ã¶¼Ö§³Ö²¢Ðм¶µÄÔ­×Ó²Ù×÷£¬ÕâЩ²Ù×÷±£Ö¤²»Í¬µÄÏ̶߳ÁдÊý¾Ý£¬Ï໥֮¼ä²»»á¸ÉÈÅ¡£ÓÐЩGPUÖ§³Öϵͳ·¶Î§µÄ²¢ÐвÙ×÷£¬µ«»áÓкܴó¿ªÏú£¬±ÈÈçGlobal memoryµÄͬ²½¡£

   
2747 ´Îä¯ÀÀ       48
Ïà¹ØÎÄÕÂ

ÆóÒµ¼Ü¹¹¡¢TOGAFÓëArchiMate¸ÅÀÀ
¼Ü¹¹Ê¦Ö®Â·-ÈçºÎ×öºÃÒµÎñ½¨Ä££¿
´óÐÍÍøÕ¾µçÉÌÍøÕ¾¼Ü¹¹°¸ÀýºÍ¼¼Êõ¼Ü¹¹µÄʾÀý
ÍêÕûµÄArchimateÊÓµãÖ¸ÄÏ£¨°üÀ¨Ê¾Àý£©
Ïà¹ØÎĵµ

Êý¾ÝÖÐ̨¼¼Êõ¼Ü¹¹·½·¨ÂÛÓëʵ¼ù
ÊÊÓÃArchiMate¡¢EA ºÍ iSpace½øÐÐÆóÒµ¼Ü¹¹½¨Ä£
ZachmanÆóÒµ¼Ü¹¹¿ò¼Ü¼ò½é
ÆóÒµ¼Ü¹¹ÈÃSOAÂ䵨
Ïà¹Ø¿Î³Ì

ÔÆÆ½Ì¨Óë΢·þÎñ¼Ü¹¹Éè¼Æ
ÖÐ̨սÂÔ¡¢ÖÐ̨½¨ÉèÓëÊý×ÖÉÌÒµ
ÒÚ¼¶Óû§¸ß²¢·¢¡¢¸ß¿ÉÓÃϵͳ¼Ü¹¹
¸ß¿ÉÓ÷ֲ¼Ê½¼Ü¹¹Éè¼ÆÓëʵ¼ù
×îл¼Æ»®
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢ 6-12[ÏÃÃÅ]
È˹¤ÖÇÄÜ.»úÆ÷ѧϰTensorFlow 6-22[Ö±²¥]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 6-30[±±¾©]
ǶÈëʽÈí¼þ¼Ü¹¹-¸ß¼¶Êµ¼ù 7-9[±±¾©]
Óû§ÌåÑé¡¢Ò×ÓÃÐÔ²âÊÔÓëÆÀ¹À 7-25[Î÷°²]
ͼÊý¾Ý¿âÓë֪ʶͼÆ× 8-23[±±¾©]

ר¼ÒÊӽǿ´ITÓë¼Ü¹¹
Èí¼þ¼Ü¹¹Éè¼Æ
ÃæÏò·þÎñÌåϵ¼Ü¹¹ºÍÒµÎñ×é¼þ
ÈËÈËÍøÒÆ¶¯¿ª·¢¼Ü¹¹
¼Ü¹¹¸¯»¯Ö®ÃÕ
̸ƽ̨¼´·þÎñPaaS


ÃæÏòÓ¦Óõļܹ¹Éè¼ÆÊµ¼ù
µ¥Ôª²âÊÔ+ÖØ¹¹+Éè¼ÆÄ£Ê½
Èí¼þ¼Ü¹¹Ê¦¡ª¸ß¼¶Êµ¼ù
Èí¼þ¼Ü¹¹Éè¼Æ·½·¨¡¢°¸ÀýÓëʵ¼ù
ǶÈëʽÈí¼þ¼Ü¹¹Éè¼Æ¡ª¸ß¼¶Êµ¼ù
SOAÌåϵ½á¹¹Êµ¼ù


Èñ°²¿Æ¼¼ Èí¼þ¼Ü¹¹Éè¼Æ·½·¨
³É¶¼ ǶÈëʽÈí¼þ¼Ü¹¹Éè¼Æ
ÉϺ£Æû³µ ǶÈëʽÈí¼þ¼Ü¹¹Éè¼Æ
±±¾© Èí¼þ¼Ü¹¹Éè¼Æ
ÉϺ£ Èí¼þ¼Ü¹¹Éè¼Æ°¸ÀýÓëʵ¼ù
±±¾© ¼Ü¹¹Éè¼Æ·½·¨°¸ÀýÓëʵ¼ù
ÉîÛÚ ¼Ü¹¹Éè¼Æ·½·¨°¸ÀýÓëʵ¼ù
ǶÈëʽÈí¼þ¼Ü¹¹Éè¼Æ¡ª¸ß¼¶Êµ¼ù