Znn3bq.jpeg
²é¿´: 2803  |  »Ø¸´: 9
±¾Ìû²úÉú 1 ¸ö ³ÌÐòÇ¿Ìû £¬µã»÷ÕâÀï½øÐв鿴
µ±Ç°Ö»ÏÔʾÂú×ãÖ¸¶¨Ìõ¼þµÄ»ØÌû£¬µã»÷ÕâÀï²é¿´±¾»°ÌâµÄËùÓлØÌû

coolrainbow

ľ³æ (ÖøÃûдÊÖ)

δÀ´¹ú¼Ò¶³Á¹

[½»Á÷] ¡¾×ªÌû¡¿intel Fortran±àÒëÆ÷µÄÒ»¸ö¡°Î£ÏÕ¡±ÓÅ»¯ ÒÑÓÐ9È˲ÎÓë

Ô´µØÖ·£ºhttp://hi.baidu.com/coolrainbow/ ... d6c40c5aaf535e.html

½ñÌìÎÞÒâÖз¢ÏÖÁËintel±àÒëÆ÷ÓÅ»¯µÄÒ»¸öÎÊÌâ¡£ÎÒÓÐÒ»¸ö³ÌÐò£¬´óÖÂÊÇÕâÑù

program main
    integer, parameter :: n = 1000
    real(kind = 8) value(n)
    integer i
   
    call computation(value)

    do i = 1, n
         write (*,*) value(n)
    enddo
end

ÆäÖÐcomputationÊÇÒ»¸ö¼ÆËãÁ¿¼«´óµÄsubroutine¡£ÀûÓÃintel±àÒë±àÒ룬·Ö±ðÁîn = 1000ºÍn = 5000£¬²»ÓÅ»¯ºÍÓÅ»¯Ö´ÐеÄʱ¼ä

n           1000              5000
O0        12min             60min
O2          7min             36min

ºóÀ´£¬ÎÒÎÞÒâÖн«Êä³öº¯ÊýµÄ´úÂëÈ¡ÏûÁË£¬Ò²¼´£º

program main
    integer, parameter :: n = 1000
    real(kind = 8) value(n)
    integer i
   
    call computation(value)
end

ÔÙ´ÎÔËÐУ¬¾ªÏÖ£¡

n           1000              5000
O0        11min30s          59min
O2         0.003s            0.003s

¿´µ½ÕâÖÖ½á¹û£¬ÎÒÄ¿µÉ¿Ú´ô£¬¿ÉÊǵ±ÎÒ·¢ÏÖn=1000ºÍ5000ÊÇÖ´ÐÐʱ¼äÏàͬ£¬ÎҾͲ²âcomputationÕâ¸ö×Ó¹ý³Ì¸ù±¾¾ÍûÓÐÖ´ÐС£ÄÇôΪʲôûִÐÐÄØ£¿ÎҲ²⣺intel±àÒëÆ÷ÔÚO2¹ý³ÌÖУ¬·¢ÏÖºóÐø´úÂëûÓÐÓõ½valueÕâ¸öÊý×飬ҲûÓÐÇ£³¶µ½computationº¯ÊýÄÚ²¿µÄÈκÎÄÚÈÝ£¬Òò´Ë¸É´à½«ÆäÓÅ»¯µôÁË¡£

Õâ¸ö²Â²â¶ÔÂ𣿾ö¶¨¿´Ò»Ï¡£ÔÚn=1000ʱºò£¬ÎÒ½«Á½¶Î´úÂë±àÒë³É»ã±àÓïÑÔ£º
ifort -O0 -o pO0.s -S   foo.f90
ifort -O2 -o pO2.s -S   foo.f90

Ê×Ïȹ۲ìpO0.s£¬·¢ÏÖ£º

# -- Begin MAIN__
.........
   call      foo_mp_computation_                #369.10
........
# -- End MAIN__

¹ûÈ»£¬mainÖе÷ÓÃÁËcomputationº¯Êý¡£ÔÙ¿´pO2.s£¬ÎÒÃÇ·¢ÏÖ£º

# -- Begin MAIN__
........
# -- End MAIN__

ȷȷʵʵûÓз¢ÏÖcomputationº¯Êýµ÷ÓõĻã±à´úÂ룬¹þ¹þ£¬¿´À´ÎÒµÄÍÆ²âÊǶԵġ£

ÏÂÃæÕâ¶Î±È½ÏСµÄ´úÂ룬´ó¼Ò¿ÉÒÔ×Ô¼ºÓñàÒëÆ÷±àÒëһϣ¬ÎÒÓÃifort±àÒëÁËһϣ¬ºÍÉÏÃæÊÇÒ»ÑùµÄ£¬Í¨¹ý»ã±àÓïÑÔ¿ÉÒÔ·¢ÏÖ£¬¿ªÆôO2ʱ£¬»ã±à´úÂëµÄMAINÖÐûÓгöÏÖµ÷ÓÃperformº¯ÊýµÄÄÚÈÝ¡£µ±È»£¬Èç¹ûÎÒ˵µÄ²»¶Ô£¬Ï£Íû´ó¼ÒÖ¸½Ì£¬ºÇºÇ¡£

subroutine perform(value, n)
   integer n
   real(kind = 8) value(n)

   integer i

   do i = 1, n
       value(i) = 2.0*i
   enddo
return
end subroutine


program main

   integer, parameter :: n = 10
   real(kind = 8) value(n)

   call perform(value,n)

end

ÊÂʵÉÏ£¬Õâ¸öÀý×Ó±íÃ÷£¬±àÒëÆ÷µÄÓÅ»¯Ñ¡ÏîȷʵÓÐÒ»¶¨µÄΣÏÕÐÔ£¬¾¡¹ÜÔÚÕâ¸öÀý×ÓÖУ¬²¢Ã»ÓÐʲôÎÊÌ⣬µ«ÊÇÔÚͶ²ú¼¶±ðµÄÈí¼þÖÐÆô¶¯ÓÅ»¯Ñ¡ÏîʱµÄÈ·ÒªÉ÷ÖØ£¬Ò»°ã²»ÒªÆôÓÃO3ÕâÖÖ¼¤½øµÄÓÅ»¯£¬¼´Ê¹ÆôÓÃÒ²Ò»¶¨ÒªÊÔÑéÈ·¶¨´úÂëÎÞÎóºó²ÅÐÐ
»Ø¸´´ËÂ¥

» ²ÂÄãϲ»¶

» ±¾Ö÷ÌâÏà¹Ø¼ÛÖµÌùÍÆ¼ö£¬¶ÔÄúͬÑùÓаïÖú:

¼¼Êõ²©¿Í£ºhttp://hi.baidu.com/coolrainbow/blog
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

weiwei43

ÖÁ×ðľ³æ (ÕýʽдÊÖ)

¡ï
Сľ³æ(½ð±Ò+0.5):¸ø¸öºì°ü£¬Ð»Ð»»ØÌû½»Á÷
Ô­À´·¢ÏÖ±àÒëʱdebugºÍrelease½á¹û²»Ò»Ñù£¬ÊDz»ÊÇÒ²ÊÇÓÅ»¯µÄ½á¹û²»Í¬£¿
7Â¥2010-09-26 19:05:38
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
²é¿´È«²¿ 10 ¸ö»Ø´ð

hakekill

ľ³æ (СÓÐÃûÆø)

¡ï
Сľ³æ(½ð±Ò+0.5):¸ø¸öºì°ü£¬Ð»Ð»»ØÌû½»Á÷
Õâ¸öȷʵÊǵÚÒ»´ÎÌý˵£¬²»ÖªµÀgfortranÊDz»ÊÇÕâÑù
2Â¥2010-09-12 19:06:22
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

ifmc1234

ľ³æ (ÖøÃûдÊÖ)

¡ï
Сľ³æ(½ð±Ò+0.5):¸ø¸öºì°ü£¬Ð»Ð»»ØÌû½»Á÷
ÒýÓûØÌû:
Originally posted by coolrainbow at 2010-09-12 18:21:45:
Ô´µØÖ·£ºhttp://hi.baidu.com/coolrainbow/ ... d6c40c5aaf535e.html

½ñÌìÎÞÒâÖз¢ÏÖÁËintel±àÒëÆ÷ÓÅ»¯µÄÒ»¸öÎÊÌâ¡£ÎÒÓÐÒ»¸ö³ÌÐò£¬´óÖÂÊÇÕâÑù

program main
    integer, param ...

Â¥Ö÷Õý½â¡£ºÜ¶àÈí¼þ¶¼ËµÁËÕâ¸öÎÊÌâ¡£
ËùÒÔÓÐЩÈí¼þ(ÐèÒª×Ô¼º±àÒëµÄ)¸æËßʹÓÃÕßÒª°Ñ±àÒë½á¹ûºÍËûÃǸøµÄÀý×Ó½øÐбȽϡ£
3Â¥2010-09-12 19:21:14
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

coolrainbow

ľ³æ (ÖøÃûдÊÖ)

δÀ´¹ú¼Ò¶³Á¹

ÒýÓûØÌû:
Originally posted by hakekill at 2010-09-12 19:06:22:
Õâ¸öȷʵÊǵÚÒ»´ÎÌý˵£¬²»ÖªµÀgfortranÊDz»ÊÇÕâÑù

gfortranËÆºõûÓÐÕâÑù£¬±ÈÈç¸Õ²ÅÄǶδúÂë

f95 -O0
CODE:
.LCFI4:
         movl    $options.5.935, %esi
         movl    $7, %edi
         call    _gfortran_set_options
         leaq    -80(%rbp), %rdi
         movl    $.LC0, %esi
         movl    $0, %eax
         call    perform_
         leave
         ret
.LFE3:

f95 -O2
CODE:
.LCFI0:
        movl    $options.5.929, %esi
        movl    $7, %edi
        call    _gfortran_set_options
        movq    %rsp, %rdi
        movl    $.LC0, %esi
        xorl    %eax, %eax
        call    perform_
        addq    $88, %rsp
        ret
.LFE3:

¼¼Êõ²©¿Í£ºhttp://hi.baidu.com/coolrainbow/blog
4Â¥2010-09-12 21:00:35
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
×î¾ßÈËÆøÈÈÌûÍÆ¼ö [²é¿´È«²¿] ×÷Õß »Ø/¿´ ×îºó·¢±í
[¿¼ÑÐ] ²ÄÁÏÓ뻯¹¤×¨Ë¶306·ÖÕÒºÏÊʵ÷¼Á +27 ²×º£ÇáÖÛe 2026-04-06 28/1400 2026-04-08 22:06 by wdyheheeh
[¿¼ÑÐ] 296Çóµ÷¼Á +3 Íô£¡£¿£¡ 2026-04-08 3/150 2026-04-08 22:00 by zhouyuwinner
[¿¼ÑÐ] ²ÄÁÏ¿¼ÑÐÇóµ÷¼Á×Ü·Ö280 +30 mkjlz1 2026-04-06 35/1750 2026-04-08 21:25 by cyh¡ª315
[¿¼ÑÐ] ²ÄÁÏ»¯¹¤×Ü·Ö334Çóµ÷¼Á +7 Riot2025 2026-04-08 7/350 2026-04-08 20:15 by luoyongfeng
[¿¼ÑÐ] һ־Ըɽ¶«´óѧ»¯Ñ§Ó뻯¹¤Ñ§Ôº²ÄÁÏÓ뻯¹¤×¨Ë¶£¬360·ÖÇóµ÷¼Á +8 ²»Ô¸Í¸Â¶ÐÕÃûµÄË 2026-04-02 8/400 2026-04-08 20:12 by luoyongfeng
[¿¼ÑÐ] 324Çóµ÷¼Á +17 ÏëÉÏѧÇóµ÷ 2026-04-03 17/850 2026-04-08 20:04 by ÎÒ¼õ·Ê1
[¿¼ÑÐ] 305Çóµ÷¼Á +4 77Qi 2026-04-06 4/200 2026-04-07 20:06 by shanqishi
[¿¼ÑÐ] ѧ˶»¯Ñ§¹¤³ÌÓë¼¼Êõ£¬Ò»Ö¾Ô¸Öйúº£Ñó´óѧ320+Çóµ÷¼Á +9 ÅûÐÇºÓ 2026-04-02 9/450 2026-04-07 12:53 by ¾¡Ë´Ò¢1
[¿¼ÑÐ] ²ÄÁÏר˶322 +11 ¹þ¹þ¹þºðºðºð¹þ 2026-04-05 11/550 2026-04-06 14:07 by lqwchd
[¿¼ÑÐ] 285Çóµ÷¼Á +8 AZMK 2026-04-04 11/550 2026-04-06 13:56 by BruceLiu320
[¿¼ÑÐ] 319Çóµ÷¼Á +3 handrui 2026-04-05 3/150 2026-04-06 09:33 by jp9609
[¿¼ÑÐ] 313Çóµ÷¼Á +5 º£ÈÕº£ÈÕ 2026-04-04 5/250 2026-04-05 15:52 by jndximd
[¿¼ÑÐ] 341Çóµ÷¼Á +3 ѧÎÞÖ¹¾³£¬³å 2026-04-05 3/150 2026-04-05 09:40 by lbsjt
[¿¼ÑÐ] ¿¼Ñе÷¼Á +11 СsunÒªºÃÔË 2026-04-04 11/550 2026-04-05 08:02 by qlm5820
[¿¼ÑÐ] 338Çóµ÷¼Á +7 êɹ¦? 2026-04-03 7/350 2026-04-04 20:37 by À¶ÔÆË¼Óê
[¿¼ÑÐ] µ÷¼Á +4 ÊÇ¿ÉÀÖ²»ÊÇ¿ÉÀÖ 2026-04-04 4/200 2026-04-04 19:41 by ÌÆãå¶ù
[¿¼ÑÐ] ±¾9Ò»Ö¾Ô¸2 0854µÍ·Öר˶286Çóµ÷¼Á +9 âÖÖ111 2026-04-04 9/450 2026-04-04 11:01 by tangruihua
[¿¼ÑÐ] Çóµ÷¼Á£¬Ò»Ö¾Ô¸ÄϾ©º½¿Õº½Ìì´óѧ £¬080500²ÄÁÏ¿ÆÑ§Ó빤³Ìѧ˶ +10 @taotao 2026-04-03 10/500 2026-04-04 09:01 by T¿É¿ÉÎ÷ÀïT
[¿¼ÑÐ] 283·Ö²ÄÁÏÓ뻯¹¤Çóµ÷¼Á +29 ÂÞKAKA 2026-04-02 29/1450 2026-04-03 23:56 by userper
[¿¼ÑÐ] 275ѧ˶081000·þ´Óµ÷¼Áµ½ÆäËûרҵ£¬±£²»×¡±¾×¨ÒµÁË +7 һֻССˮţ 2026-04-02 8/400 2026-04-02 14:23 by alice-2022
ÐÅÏ¢Ìáʾ
ÇëÌî´¦ÀíÒâ¼û