
é ããæ©ãããåéçºè ã¯ã¢ããªã±ãŒã·ã§ã³ãæé©åãããšããåé¡ã«çŽé¢ããçç£æ§ã®é¢ã§æå°éã®åŽåãšæ倧éã®å©çã§ãããå®çŸããããšèããŠããŸãã ãã®ç¹ã«ã€ããŠã¯ãã³ã³ãã€ã©ãŒãå©ãã«ãªããŸãããä»æ¥ã§ã¯å€ãã®ããšãèªåçã«è¡ãããšãã§ããŸããããŒã䜿çšããŠã³ã³ãã€ã©ãŒã«ã€ããŠäŒããå¿ èŠããããŸãã æé©åã®çš®é¡ã ãã§ãªããå€ãã®ã³ã³ãã€ã«ãªãã·ã§ã³ããã£ããããIntelã³ã³ãã€ã©ã䜿çšãã段éçãªã¢ããªã±ãŒã·ã§ã³æé©åã«é¢ããããã°ãæžãããšã«ããŸããã
ãã®ãããã¢ããªã±ãŒã·ã§ã³ã®ã³ã³ãã€ã«ãšæé©åã®åä»ãªéã¯ã7ã€ã®ã¹ãããã«åããããšãã§ããŸãã è¡ããïŒ
ã¹ããã1.æé©åãªãã§ã³ãŒããåéããŸããïŒ
ããã§ããæåã®ã¹ãããã§ãã®è³ªåã«çããããšæããŸãã ã³ã³ãã€ã©ãŒã®ãã¹ãŠãç¡å¹ã«ããããšã§ãæé©åããã»ã¹ãéå§ããããšããããããŸãã ãªãã§ïŒ ãŸãããŸããã³ã³ãã€ã©ãšãã®ç¬åµçãªå€æããã®ä»å ¥ãªãã«ãç§ã®ã³ãŒããæ£ããåäœããããšã確èªããããšæããŸãã -O0ã¹ã€ãã ïŒWindows / Od ïŒã䜿çšããŠæé©åããªãã«ããã³ãŒããåéããŠã¢ããªã±ãŒã·ã§ã³ãå®è¡ããŸãã ã¯ããæé©åãããŠããªãã³ãŒãã®ãããã°ã¯ç°¡åã§ãã
ã¹ããã2.ãããç°¡åã«ãæ¥ç¶ã§ãããã®ã¯äœã§ããïŒ
ãåºæ¬ããªãã·ã§ã³ããå§ããŸãã
-O1 / -Os
ã³ã³ãã€ã©ãŒãèªåãã¯ãã«åãè¡ããªããã€ãŸãè©Šè¡ãããªããæé©åã®æåã®åºæ¬ã¬ãã«ã ãã®å ŽåãããŒã¿ãããŒã®åæãã³ãŒãã®ç§»åãéçšã³ã¹ãã®åæžãå€æ°ã®æå¹æéã®åæãã³ãã³ãã®å®è¡ã®èšç»ãå®è¡ãããŸãã å€ãã®å Žåãã¢ããªã±ãŒã·ã§ã³ã®ãµã€ãºãå¶éããããã«äœ¿çšãããæé©åããããã«ã«ãããããŸãã ãªãã·ã§ã³O1ãæå¹ãªå ŽåãOsãæé»çã«æå¹ã«ãªããŸãã
-O2
ããã©ã«ãã§æå¹ã«ãªã£ãŠããæé©åã¬ãã«ã¯ãã¢ããªã±ãŒã·ã§ã³ã®å®è¡é床ã«éç¹ã眮ããŠããŸãã ãã®ã¬ãã«ããéå§ããŠããµã€ã¯ã«ã®ãã¯ãã«åãå«ãŸããŸãã ããã«ãã«ãŒããã€ã³ã©ã€ã³åãIPïŒãã¡ã€ã«å æç¶ãéïŒæé©åãªã©ãå€ãã®åºæ¬çãªæé©åãå®è¡ãããŸãã
-O3
ãã®æ倧ã¬ãã«ã®æé©åã§ã¯ãO2ã§è¡ãããããšã«å ããŠãã«ãŒãã䜿çšããããç©æ¥µçãªå€æãå€æ°å«ãŸããŠããŸããããšãã°ãå€åŽã®ã«ãŒããå±éããŠå åŽã®ã«ãŒããèåãããããã¯ããããã¯ã«åå²ïŒãããã¯ïŒããIFæ¡ä»¶ãçµã¿åãããŸãã æé©åèªäœã®éåžžã«åªããæŠèŠãããã«ç€ºããŸã ã ã¢ããªã±ãŒã·ã§ã³ã§æ°å€çµæïŒç§åŠèšç®ãªã©ïŒãä¿æããããšãéèŠãªå Žåã¯ããã®ãªãã·ã§ã³ã®äœ¿çšã«æ³šæããå¿ èŠããããŸãã å€ãã®å Žåãæ°å€ã¯ãæµ®åãããŠããã -O2ã«æ»ã£ãŠ-fp-modelãªãã·ã§ã³ã䜿çšããŠãæé©åãå¶éããå¿ èŠããããŸãã äžè¬çã«ã -O2ã§ã³ã³ãã€ã«ããåŸã -O3ãè©ŠããŠäœãèµ·ãããã確èªããããšãå¶éãã人ã¯ããŸããã çè«çã«ã¯ãã¢ããªã±ãŒã·ã§ã³ã¯ããé«éã«å®è¡ãããã¯ãã§ãã
-no-prec-div
IEEEæºæ ã®é€ç®æäœã¯éåžžã«åŽåéçŽçã§ãã èšç®ã®ç²ŸåºŠãå€å°ç ç²ã«ããããšãã§ããŸããããã®ãªãã·ã§ã³ã䜿çšããŠèšç®ãé«éåã§ããŸããããšãã°ãã³ã³ãã€ã©ãŒã¯A / Bã®åœ¢åŒã®åŒãA *ïŒ1 / BïŒã«çœ®ãæããŸãã
-ansi-alias
ãã®ãªãã·ã§ã³ã¯ãISO Cæšæºã«åŸã£ãŠã³ãŒããèšè¿°ãããšãã«å³å¯ãªãšã€ãªã¢ã¹ã«ãŒã«ã«åŸãããšãã³ã³ãã€ã©ã«æ瀺ããŸãããããã®ã«ãŒã«ã芳å¯ãããšããç°ãªãã¿ã€ãã®ãªããžã§ã¯ããžã®ãã€ã³ã¿ãéåç §ãããšããåãã¡ã¢ãªäœçœ®ã«æ»ãããšã¯ãããŸãããããã«ãããã³ã³ãã€ã©ãæé©åãå®è¡ããäœå°ãå¢ããŸãã ãšã€ãªã¢ã·ã³ã°ã®è©³çŽ°ã«ã€ããŠã¯ã ãã®èšäºãã芧ãã ããã
Intelã³ã³ãã€ã©ããŒãžã§ã³15.0ïŒIntel Parallel Studio XE 2015 Composer EditionïŒä»¥éã§ã¯ããã®ãªãã·ã§ã³ãããã©ã«ãã§æå¹ã«ãªã£ãŠããããšã«æ³šæããããšãéèŠã§ãããã ãã以åã®ããŒãžã§ã³ã§äœæããå Žåã¯ãå¿ããªãã§ãã ããã
ã¹ããã3.ãéãã®è©³çŽ°ã䜿çšããŸã
-x'code 'ãªãã·ã§ã³ã䜿çšããŠãIntelããã»ããµãŒåºæã®æé©åãæå¹ã«ã§ããŸãã 圌女ã¯ãã³ã³ãã€ã©ãŒã«ãçæã§ããåœä»€ã»ãããªã©ã䜿çšã§ããããã»ããµãŒæ©èœãäŒããŸãã ãã³ãŒããã¯ã SSE2ãSSE3ãSSSE3ãSSE3_ATOMãSSSE3_ATOMãATOM_SSSE3ãATOM_SSE4.2ãSSE4.1ãSSE4.2ãAVXãCORE-AVX-IãCORE-AVX2ãCORE-AVX512ãMIC-AVX512ã«èšå®ã§ããŸããCOMMON-AVX512 ã
çµæã®ã¢ããªã±ãŒã·ã§ã³ã¯ãçæãããåœä»€ããµããŒãããIntelããã»ããµãŒãæèŒããã·ã¹ãã ã§ã®ã¿å®è¡ã§ããããšã¯æããã§ãã
ããã©ã«ãã§ã¯ã -xSSE2ã¹ã€ããã䜿çšãããŸã ãããã¯ãããšãã°ããã¯ãã«åäžã«SSE2åœä»€ã䜿çšããå¿ èŠãããããšãã³ã³ãã€ã©ãŒã«éç¥ããŸãã ã»ãšãã©ã®å ŽåïŒPentium 4以éïŒãããã«ããã¢ããªã±ãŒã·ã§ã³ã®å®è¡ãä¿èšŒãããŸãã
Atomã§èšè¿°ããã¢ããªã±ãŒã·ã§ã³ãAtomã§ã®ã¿å®è¡ãããããšã確å®ã«ããã£ãŠããå Žåãæé«ã®ããã©ãŒãã³ã¹ãåŸãããã«-xSSSE3_ATOMã䜿çšã§ããŸãã Silvermontã¢ãŒããã¯ãã£ã®å Žåã -xATOM_SSE4.2ãæå®ããå¿ èŠããããŸãã
ç¹ã«æ laãªäººã¯-xHostãªãã·ã§ã³ã䜿çšã§ããŸãããã®å Žåãã³ãŒããåéããããŒããŠã§ã¢ã«å¯ŸããŠæé©åãè¡ãããŸãã
ãšããã§ã -ax'code 'ã¹ã€ããã䜿çšããŠãç¹å®ã®åœä»€ã»ããã ãã§ãªããäžåºŠã«è€æ°ã®åœä»€ã»ãããæå®ããããšãã§ããŸãã
åæã«ããªãŒããµã³ãã©ãŒïŒãã£ã¹ãããã£ãŒïŒãã³ãŒãã«è¿œå ãããã¢ããªã±ãŒã·ã§ã³ã®èµ·åäžã«ïŒ CPUIDã«ãã£ãŠïŒCPUã決å®ãããµããŒãããåœä»€ã»ããã«å¿ããŠãå®è¡ãæ£ããæ¹åã«é²ã¿ãŸãã ãã¡ãããããã«ããã¢ããªã±ãŒã·ã§ã³ã®ãµã€ãºã倧ãããªããŸãããæè»æ§ã¯éåžžã«é«ããªããŸãã 'code'ãä»ããŠæ瀺çã«æå®ãããåœä»€ã»ããã«å ããŠãSSE2ã®ããã©ã«ãããŒãžã§ã³ãåžžã«äœæãããŸãã ããšãã°ã -axAVXãæå®ãããšãSSE2ã®1ã€ã®ããã©ã«ãããŒãžã§ã³ãšãAVXã®å¥ããŒãžã§ã³ãååŸãããŸãã
ããã«ã -axãªãã·ã§ã³ã§è€æ°ã®åœä»€ã»ãããäžåºŠã«ã³ã³ãã§åºåã£ãŠæå®ã§ããŸãã ããšãã°ã -axSSE4.2ã®å ŽåãAVXã¯ã³ã³ãã€ã©ã«SSE4.2ãAVXã®ããŒãžã§ã³ãçæããããã«æ瀺ããããã©ã«ãïŒSSE2ïŒãã©ã³ããå¿ããªãã§ãã ããã -axã«å ããŠ-x ãªãã·ã§ã³ã䜿çšããŠæ瀺çã«æå®ããããšãã§ããŸãã ããšãã°ã -axSSE4.2ã¹ã€ãããæå®ãããšãAVX -xSSE4.1ã¹ã€ããã¯ããã©ã«ãã§SSE4.1ã«ãªããŸãã
Intelããã»ããµã«åºæã§ã¯ãªãæé©åã«ã¯ã -mã¹ã€ããã䜿çšããŸãã
ããšãã°ãQuark SoC X1000ã®å Žåããªãã·ã§ã³-mia32 ïŒIA-32ã¢ãŒããã¯ãã£çšã®ã³ãŒããçæããŸãïŒããã³-falign-stack = assume-4-byteãæå®ã§ããŸã ãããã«ãããã³ã³ãã€ã©ãŒã¯ãã¹ã¿ãã¯ã4ãã€ãã§ã¢ã©ã€ã¡ã³ããããŠãããšèšãããšãã§ããŸãã å¿ èŠã«å¿ããŠãã³ã³ãã€ã©ã¯16ãã€ãã«èª¿æŽã§ããŸãã ããã«ãããé¢æ°ã®åŒã³åºãã«å¿ èŠãªããŒã¿ã®ãµã€ãºãåæžã§ããŸãã
ã¹ããã4. IPO
ãããã蚌åžååŒæã§æ ªåŒã売ãã€ããã¯ãããŸããã IPOïŒããã·ãŒãžã£ãŒéã®æé©åïŒ-ã³ã³ãã€ã©ãŒãã³ãŒãã«å¯ŸããŠè¡ãããã·ãŒãžã£ãŒéã®åæãšæé©åã -ipoãªãã·ã§ã³ã§æ¥ç¶ãããŠããããœãŒã¹ã³ãŒããå«ã1ã€ã®å¥åã®ãã¡ã€ã«ã§ã¯ãªãããã¹ãŠã®ãœãŒã¹ã«å¯ŸããŠåæã«æé©åã§ããŸãã ãã®å Žåãã³ã³ãã€ã©ã¯ããå€ãã®ããšãç¥ããããå€ãã®çµè«ãå°ããããã«å¿ããŠå€æ/æé©åãè¡ãããšãã§ããŸãã ãã®ããã°ã¯ãIPOã®ãã¹ãŠã®è€éããç解ããã®ã«åœ¹ç«ã¡ãŸãã äœæ¥ã®è©³çŽ°ã¯ã -ipoã§ã³ã³ãã€ã«ããå Žåãå€æŽã«äœ¿çšãããã³ã³ãã€ã«ãšãªã³ã¯ã®é åºãããã³ãªããžã§ã¯ããã¡ã€ã«ã«ããã¯ãããå éšè¡šçŸãå«ãŸãããããæšæºïŒLinuxïŒãªã³ã«ãŒldããã³ãŠãŒãã£ãªãã£arã¯Intel xiarããã³xildã«çœ®ãæããå¿ èŠããããŸã ã IPOã䜿çšããã³ã³ãã€ã«ããã»ã¹èªäœã¯ãç¹ã«ã倧èŠæš¡ãªãã¢ããªã±ãŒã·ã§ã³ã®å Žåãå€§å¹ ã«æéããããããšãå¿ããªãã§ãã ããã
ã¹ããã5.ãŸãã¯ããããã¡ã€ã«ãã§ããïŒ
ã¢ããªã±ãŒã·ã§ã³èªäœãèµ·åãã以äžã®æ å ±ãã³ã³ãã€ã©ãŒã«äžããããšã¯ã§ããŸããã 圌ã®ãããã§ãã©ã®ãã©ã³ãã«è¡ã£ããããã£ãšæéãè²»ãããå Žæããã£ãã·ã¥ã«ã¢ã¯ã»ã¹ã§ããªãã£ãé »åºŠãªã©ãæ£ç¢ºã«ç¥ãããšãã§ããŸãã åœç¶ã®ããšãªãããã¢ããªã±ãŒã·ã§ã³ã®ãããã¡ã€ãªã³ã°ã¯æé©åã«å€§ãã圹ç«ã€ãšããçµè«ã«è³ããŸãã
ã³ã³ãã€ã©ã«ã¯ãã¢ããªã±ãŒã·ã§ã³ã®ãããã¡ã€ã«ãäœæããåéãããããŒã¿ã«åºã¥ããŠæé©åãå®è¡ã§ãããªãã·ã§ã³ããããŸã-PGOïŒãããã¡ã€ã«ã«åºã¥ãæé©åïŒã
ã¯ãŒã¯ããã»ã¹ã¯ããã€ãã®ã¹ãããã§æ§æãããŠãããããã«å¿ããŠã³ã³ãã€ã©ããŒãå«ãŸããŠããŸãã
ãŸãã -prof-genã¹ã€ããã§ã³ã³ãã€ã«ããŠã¢ããªã±ãŒã·ã§ã³ãã€ã³ã¹ãã«ã¡ã³ãããå¿ èŠããããŸãã 次ã«ãæ¡åŒµåã.dynã®å¥ã®æ å ±ãã¡ã€ã«ã«ããŸããŸãªçµ±èšïŒãããã¡ã€ã«ïŒãåéããªãããã¢ããªã±ãŒã·ã§ã³ãå®è¡ããå¿ èŠããããŸãã æåŸã«ã -prof-useã¹ã€ããã䜿çšããŠæçµã³ã³ãã€ã«äžã«ãã®ããŒã¿ã䜿çšããŸãããã®ã¹ã€ããã§ã¯ãã³ã³ãã€ã©ãŒã¯æãèšç®ã³ã¹ãã®é«ãã³ãŒããã©ã³ããæé©åããããšããŸãã
å Žåã«ãã£ãŠã¯ãã¢ããªã±ãŒã·ã§ã³ã®çµæãå«ããã¡ã€ã«ãé 眮ããå Žæãæå®ããå¿ èŠããããŸãã ããã¯ããã©ã«ããŒãžã®ãã¹ãæå®ããŠã -prof-dir = 'val'ãªãã·ã§ã³ã§å®è¡ã§ããŸãã ãããã£ãŠããããã·ã³ã§ã³ãŒããåéããå¥ã®ãã·ã³ã§ãããã¡ã€ã«ãäœæããæåã®ãã·ã³ã§æçµã³ã³ãã€ã«ãå床å®è¡ã§ããŸãã dynãã¡ã€ã«ãååŸããŠãã·ã¹ãã äžã®ããã«é 眮ããããã§ã³ãŒããåéãã -prof-dirãä»ããŠãã¹ãæå®ããŸãã
ãããã¡ã€ã«ãã³ã³ãã€ã«ããã«ã¯ãã¢ããªã±ãŒã·ã§ã³ãæ£åžžã«çµäºããŠçµäºããå¿ èŠããããŸãã
ã¢ããªã±ãŒã·ã§ã³ãç¡éã«å®è¡ãããå ŽåïŒããšãã°ãçµã¿èŸŒã¿ã·ã¹ãã ã§ããããã±ãŒã¹ïŒãããã«ããã€ãã®ãžã§ã¹ãã£ãŒãè¡ãå¿ èŠããããŸãã
1.ã¢ããªã±ãŒã·ã§ã³ããåºå£ç¹ãè¿œå ããŸã
2. PGO API _PGOPTI_Prof_Dump_AllïŒïŒãžã®åŒã³åºããè¿œå ããŸã
3.ç°å¢å€æ°ã䜿çšããŠããã³ãééããã€ã¯ãç§åäœã§å¶åŸ¡ã§ããŸãã
INTEL_PROF_DUMP_INTERVAL 5000ããšã¯ã¹ããŒã
INTEL_PROF_DUMP_CUMULATIVEããšã¯ã¹ããŒã1
ã¹ããã6.ãã¯ãã«ã䜿çšããã²ãŒã
ãã¯ãã«åã¯ããã©ã«ãã§æå¹ã«ãªã£ãŠããŸããïŒ -O2ãªãã·ã§ã³ã䜿çšïŒããã¯ãã«åã«çŠç¹ãçµãããšã«ããåœä»€ã»ããã¯æ¢ã«èª¬æãã-x ã -axãªã©ã«ãã£ãŠå¶åŸ¡ãããŸãã ããããã€ã³ãã«Â®ã³ã³ãã€ã©ãŒã®ããã©ãŒãã³ã¹ã«ã€ããŠè©±ããšãã¯ãã¢ããªã±ãŒã·ã§ã³ã®é床ãæ倧éã«é«ããããšãã§ããããããã¯ãã«åã«é¢ããŠæ£ç¢ºã«æ³šæãæãå¿ èŠããããŸãã ã³ã³ãã€ã©ã®ããŒãã¯ãŒã¯ãæ¯æŽããæ¹æ³ã«é¢ãã察å¿ããæçš¿ãèªã¿ãŸãã ããŠãäžé£ã®æŽæ°ããããªãã·ã§ã³-opr-reportã圹ç«ã¡ãŸãã
ã¹ããã7.èªåçã«äžŠååããïŒ
ã€ã³ãã«Â®ã³ã³ãã€ã©ãŒã«ã¯ãæãèå³æ·±ããªãã·ã§ã³-parallelããããã³ã³ãã€ã©ãŒãèªåã¢ãŒãã§äœ¿çšããŠOpenMPã䜿çšããŠã«ãŒãã䞊ååã§ããŸãã æããã«ããã¹ãŠã®ã«ãŒããåçã«ããŸã䞊åããããã§ã¯ãªããã³ã³ãã€ã©ãŒã¯åžžã«ãããè¡ãããšãã§ãããšã¯ã»ã©é ãã ãã ãããã®ãªãã·ã§ã³ãè©ŠããŠã¿ã䟡å€ã¯ãããŸããããã«ãã£ãŠäœãã倱ãããããšã¯ã»ãšãã©ãããŸããã
ãã®çµæãããã©ãŒãã³ã¹ãåäžãããããã«ã³ãŒããã³ã³ãã€ã«ãããšãã«è©Šã䟡å€ã®ããäžé£ã®ãªãã·ã§ã³ããããŸãã
-O2 / O3 -no-prec-div -x'code '-ipo -prof-gen / -prof-use -prof-dir =' val '-parallel
ãšããã§ãæ ãè ã®ããã«ããããã®ããŒã®ã»ãšãã©ãå«ã-fastãªãã·ã§ã³ãæãä»ããŸããïŒ ipoã-O3ã-no-prec-divã-staticã-fp-model fast = 2ãããã³-xHost ã
ããŠããªãã·ã§ã³ã«å ããŠãåªããIntel®Vtune Amplifier XEãããã¡ã€ã©ãŒã¯åžžã«åœ¹ç«ã¡ãŸãããããã¯å¥ã®è©±ã§ãã
ç·Žç¿ãã
çè«çãªèæ ®äºé ã«å ããŠãPiçªå·ã®èšç®ã®äŸã«ãªã¹ããããŠãããªãã·ã§ã³ãããã£ãŠãç°¡åã§ã¯ãããã¢ããªã±ãŒã·ã§ã³ã®é床ã«ã©ã®ããã«åœ±é¿ãããã瀺ããããšæããŸãã ãçè«ãã§ã¯ãLinuxã®ããŒãæå®ããŸãããWindowsã®å ŽåãããŒã¯ã»ãšãã©åãã§ãå é ã«æåQãè¿œå ãããŠããŸãïŒã»ãšãã©ã®å ŽåïŒã Windowsã§ãµã³ãã«ãåéããŠã察å¿ãããªãã·ã§ã³ã瀺ããŸãã Intel C ++ã³ã³ãã€ã©ããŒãžã§ã³15.0ïŒ15.0.2.179ãã«ã20150121ïŒã䜿çšããŸããã
ããã§ãæå³çã«ã³ãŒãã2ã€ã®ãã¡ã€ã«ã«åå²ããŸããïŒIPOããã®åœ±é¿ããã£ãããã§ãïŒã
pi.cïŒ
#define N 1000000000 double f( double x ); main() { double sum, pi, x, h; clock_t start, stop; int i; h = (double)1.0/(double)N; sum = 0.0; start = clock(); for ( i=0; i<N ; i++ ){ x = h*(i-0.5); sum = sum + f(x); } stop = clock(); // print value of pi to be sure multiplication is correct pi = h*sum; printf(" pi is approximately : %f \n", pi); // print elapsed time printf("Elapsed time = %lf seconds\n",((double)(stop - start)) / CLOCKS_PER_SEC); }
å¥ã®ãã¡ã€ã«fx.cã§ãé¢æ°fãå®çŸ©ãããŸãã
double f(double x){ double ret; ret = 4.0 / (x*x + 1.0); return ret; }
stdioããã³timeã©ã€ãã©ãªãå«ããããšã¯èšåããŸããã§ããã
ãã®ãããããŸããŸãªãªãã·ã§ã³ã䜿çšããŠãã®ã³ãŒããåéããçµæã®å éã確èªããŸãã
ãŸããæé©åãªãã§ã³ã³ãã€ã«ããŸãã
icl /Od pi.c fx.c /o Od_pi.exe
Od_pi.exeãå®è¡ããŸãã
pi is approximately : 3.141593 Elapsed time = 22.828000 seconds
å°ãé·ãã次ã®ã¬ãã«ã®O1ãæäŸãããã®ãèŠãŠã¿ãŸãããã
icl /O1 pi.c fx.c /o O1_pi.exe pi is approximately : 3.141593 Elapsed time = 4.963000 seconds
èå³æ·±ãããšã«ãæé©åã¬ãã«ãO2ãšO3ã«äžãããšãé床ãåäžããªããªããŸãã
ã³ãŒãã¯éåžžã«åçŽã§ãããã«ãŒãå ã®å¥ã®ãã¡ã€ã«ã§å®çŸ©ãããé¢æ°åŒã³åºãã®ããã«ãã¯ãã«åãããŠããªããããããã¯éåžžã«è«ççã§ãã ãããã£ãŠãIPOã圹ç«ã€ã¯ãã§ãã
icl /O2 pi.c fx.c /Qipo ipo_pi.exe pi is approximately : 3.141593 Elapsed time = 2.562000 seconds
åæã«ããµã€ã¯ã«ããã¯ãã«åãããŸããã IPOãªãã§ãåãã·ãªãŒãºã®ããŒQxAVX ã QxSSE2ãªã©ã䜿çšããŠã³ãŒããåéããå Žåãé床ã®éãã«ãæ°ä»ããªãã§ãããã ç¹°ãè¿ããŸããããã¯ãã«åã¯æ©èœããªããããéåžžã«è«ççã§ãã
icl /O2 /QxAVX pi.c fx.c /o xAVX_pi.exe Elapsed time = 5.065000 seconds icl /O2 /QxSSE2 pi.c fx.c /o xSSE2_pi.exe Elapsed time = 5.093000 seconds
ã³ãŒããã³ã³ãã€ã«ããHaswellã§ã¢ããªã±ãŒã·ã§ã³ãå®è¡ããããã / QxHostãªãã·ã§ã³ãšIPOã䜿çšããŸãã
icl /O2 /QxHost /Qipo pi.c fx.c /o xHost_ipo_pi.exe Elapsed time = 2.718000 seconds
/ fastãªãã·ã§ã³ã§ãåãçµæãåŸãããŸãã
icl /fast /Qvec-report2 pi.c fx.c /o fast_pi.exe Elapsed time = 2.718000 seconds
ãããã¡ã€ãªã³ã°ã䜿çšãããšãæé©åã«é¢ããŠããå°ãçµãããšãã§ããŸãã
icl /Qprof-gen pi.c fx.c /o pgen_pi.exe
ã¢ããªã±ãŒã·ã§ã³ãèµ·åããå床ã³ã³ãã€ã«ããŸãã
icl /Qprof-use /O2 /Qipo pi.c fx.c /o puse_pi.exe Elapsed time = 2.578000 seconds
ããŠãèªå䞊ååã§æ倧ãåŸãŸãïŒ
icl /Qparallel /Qpar-report2 /Qvec-report2 /Qipo pi.c fx.c /o par_ipo_pi.exe Elapsed time = 1.447000 seconds
ãããã£ãŠããã®æ¹æ³ã§ã¯ãå€ãã®åŽåããããããšãªããå€§å¹ ã«å éããŸããã ç°¡åãªã²ãŒã ãªãã·ã§ã³ãããã°ã