2004  5  26 ո


      Sun Studio 9Fortran 95 ļ


            Ŀ¼

       1. 
       2.  Sun Studio 9 Fortran 95
       3. Ժ͸ĵ
       4. 
       5. ͽ취
       6. ƺͲ
       7. ĵ
       8. Fortran 95 ҪĲ
       9. ɷͿ

     

    ------------------------------------------------------------------------


            A. 

    ĵй Sun[tm] Studio9 Fortran 95  f95 Ϣĵ
    ˴˷а汾¹ܺг֪⡢޺Ͳ
    ԡĵеϢºչֲеϢ

    Ʒĵ

        * ˵ͨ Sun Studio 9 վ
          http://developers.sun.com/tools/cc/documentation/ss9_docs/release_notes.html
          ô˷˵˵еϢºչļе
          Ϣ
        * ͹ĵƷֲҳļ HTML 汾Լֲ
          /installation_directory/SUNWspro/docs/index.html зʡ
          Solaris ƽ̨ϵȱʡװĿ¼ /optûȱʡ /opt Ŀ¼
          аװ Sun Studio 9 ѯϵͳԱ˽ϵͳеʵʰ
          װ·Դ index.html ҳĵ
              o Fortran ûָ
              o Fortran ָ
              o OpenMP API ûָ
              o ѧļ
              o ֵָ
              o ʽӱ༭ļ
              o Sun ܿļ
              o Sun ܿοֲ
              o Fortran  C  Sun ܿûָ
        * IDE ĵSun Studio 9 IDE ɴ IDE е [
          ] ˵зʡ
        * ԱԴŻйؼ¡ĵ֪ʶϢ
          μԱŻַhttp://developers.sun.com/prodtech/cc

    ע⡪ûаװȱʡ /opt Ŀ¼ѯϵͳԱ
    ˽ϵͳеĵȼ·

    ------------------------------------------------------------------------


            B.  Sun Studio 9 Fortran 95

    ļýܴ˴ηе 8.0  f95 е¹ܺ͸ĹܵϢ
    ¡

    8.0 汾 Fortran 95  f95 Ϊ Sun Studio 9 һУ
     SPARC(R)  x86 ƽ̨ϰ汾 89  10  Solaris[tm] ϵͳ
    (Solaris OS) ʹá

     Sun Studio 8 еһ汾ıǰ汾 7.1

    ------------------------------------------------------------------------


            C. Ժ͸ĵ

     Fortran 95 а汾ܺ͸ĵĹܡѡ
    ϸϢμFortran ûָϡ f95(1) ֲҳ

       1. Solaris OS x86 ƽ̨ϵ f95
       2. ǿʱ
       3. Fortran 2003 ڲ
       4. ͸ĵ f95 ѡ
       5. ȱʡ SPARC ϵṹ v8plus
       6. OpenMP ӵ߳
       7. OpenMP Զı

       1. Solaris OS x86 ƽ̨ϵ f95
          а汾 Sun Studio  Solaris OS x86 ƽ̨ṩ Fortran
          95  -xtarget ֵ genericnative386486
          pentiumpentium_propentium3  pentium4 б룬Ӷ
          Solaris x86 ƽ̨ɿִļx86 ƽ̨ϵȱʡֵΪ
          -xtarget=generic

           x86 ƽ̨δʵ f95 ܣЩܽ SPARC ƽ̨
          ã

              * 㣨ѡ -xia  -xinterval
              * Ԫ128 λ㣨磬REAL*16
              * IEEE ڲģ IEEE_EXCEPTIONSIEEE_ARITHMETIC 
                IEEE_FEATURES
              * sun_io_handler ģ
              * Pѡ -autopar-parallel-explitipar 
                -openmp

           f95 ѡֻ x86 ƽ̨ʹã SPARC ƽ̨
          ʹã

              * -fprecision-fstore-nofstore

           f95 ѡֻ SPARC ƽ̨ʹã x86 ƽ̨
          ʹã

              * -xcode-xmemalign-xprefetch-xcheck-xia-
                xinterval-xipo-xjobs-xlang-xlinkopt-
                xloopinfo-xpagesize-xprofile_ircache-xreduction-
                xvector-depend-openmp-parallel-autopar-
                explicitpar-vpara-XlistMP

          ͬʱ x86 ƽ̨ -fast  -nofstore

          й x86 ƽ̨ϽбϸϢ

              * -xtarget  x86 ƽ̨ϵֵչ
                µ -xtarget ƽֵ̨ɹ x86 ʹá
                -xtarget=pentium3 չΪ -xarch=sse -xchip=pentium3
                -xcache=16/32/4:256/32/4
                -xtarget=pentium4 չΪ -xarch=sse2 -xchip=pentium4
                -xcache=8/64/4:256/128/8

              * µ -xarch  -xchip ֱֵΪ
                -xchip=pentium3 - Ż Pentium 3 
                -xchip=pentium4 - Ż Pentium 4 
                -xarch=sse -  SSE ָӵ pentium_pro ָ
                -xarch=sse2 -  SSE2 ָ SSE ָӵ
                pentium_pro ָ

              * ֻ pentium3  pentium4 ϲ -fns
                -xarch  sse  sse2 -fns=yes򣬶 SSE
                 SSE2 ָ-fns=yes ζŽΪ
                (FTZ)Ǳ׼Ϊ (DAZ)-fns=yes Ӱ촫ͳ
                 x86 ָ

              * رע
                 -xarch={sse | sse2} Ա Solaris x86 SSE/SSE2
                Pentium 4 ƽ̨еĳֻ SSE/SSE2 ƽ̨
                Сδ SSE/SSE2 ƽֳ̨ܻᵼ
                ιϻ߲ȷϢͲϵͳͱ
                Ĳɷֹ SSE/SSE2 ĶƳδ
                SSE/SSE2 ƽִ̨УЩܻЩʱṩ

                 Solaris 9 update 6 ͷĲϵͳ汾 Pentium 4 
                ƽ̨ SSE/SSE2Solaris OS ڰ汾δ
                SSE/SSE2

                þ滹չ .il Թܳ
                SSE/SSE2 ָ __asm() 롣

                ڸĲнбӣҪʼʹñ
                ͨ -xarch={sse | sse2} ӣȷȷ
                ̡

                x86 ϵܲͬ SPARC ϵĽԭ x86 80
                ֽڸעҪЩ콵Сʹ -fstore ѡ
                Ӳ֧ SSE2Ҫ -xarch=sse2 б롣

       2. ǿʱ
          ñа汾󣬴ӦóʱܽߡΪ
          ЧʹýϸߵŻ -xO4  -xO5 б롣
          Ż𣬱ڿḶ́ԼЩмٶβ
          ɷָĹ̡

       3. Fortran 2003 ڲ
          Fortran 2003 ݰ׼µڲԴв
          ͻڱа汾 f95 ʵ֡µ
          ڲΪ
              * GET_COMMAND(command, length, status)
                зصóС
              * GET_COMMAND_ARGUMENT(number, value, length, status)
                ֵзв
              * GET_ENVIRONMENT_VARIABLE(name, value, length, status,
                trim_name)
                ػֵ

       4. f95 ͸ĵѡ
           f95 ѡǱа汾ѡϸϢμ
          f95(1) ֲҳ

              * -xipo_archive={ none | readonly | writeback }
                 crossfile Ż鵵 (.a) SPARC

                -xipo_archive=none
                鵵ļ

                -xipo_archive=readonly
                ɿִļ֮ǰù鵵 (.a)  -xipo
                ĿļŻݵĿļ

                -xipo_archive=writeback
                ɿִļ֮ǰù鵵 (.a)  -xipo
                ĿļŻݵĿļ鵵
                ġڱڼŻĿļŻ汾滻

                ָ -xipo ãὫΪ
                -xipo_archive=none

              * -xprefetch_auto_type=[no%]indirect_array_access
                ΪӷʵɼԤȡ SPARC

                [no%]indirect_array_access
                úֱڴԤȡͬķʽΪѡ
                -xprefetch_level=[1|2|3] ָʾѭ [] Ԥȡ

                δָ -xprefetch_auto_type ãΪ
                -xprefetch_auto_type=[no%]indirect_array_access

                -xprefetch ѡ SPARC ƽ̨ʹá

                 -xdepend-xrestrict  -xalias_level ѡ
                ӰȷԤȡѡļȣӶӰԶԤ
                ȡļȣΪɸ׼ȷڴ
                Ϣ

              * -xprofile_pathmap=collect_prefix:use_prefix
                Ϊļļ·ӳ䡣ڷĿ¼ǰ
                -xprofile=collect ʱõĿ¼ʱ
                -xprofile_pathmap ѡ -xprofile=use ѡʹá

          ڱа汾 f95 УѡȱʡֵѸġ

              * -xprefetch ȱʡֵΪ -xprefetch=no%auto,explicit
              * -xmemalign ȱʡֵΪ -xmemalign=8iһ -xarch=v9
                ѡбʱȱʡֵΪ -xmemalign=8f
              * һ -xarch=v9 ѡбʱ-xcode ȱʡֵΪ abs44

          Ҫǰ汾ıʹõȱʡֵб룬ȷָѡ
          

              * -xarch=v8 -xmemalign=4s -xprefetch=no 32 λ룩
              * -xcode=abs64 -xprefetch=no 64 λ룩

       5. ȱʡ SPARC ϵṹ 8PLUS
          ȱʡ SPARC ϵṹ V7ڱа汾 Sun Studio 9 ж
          -xarch=v7 ֧ޡµȱʡֵΪ V8PLUS (UltraSPARC)
          -xarch=v7 ᱻ -xarch=v8 룬Ϊ Solaris 8 OS
          ֻ֧ -xarch=v8 ߰汾

          Ҫ SPARC V8 ϵͳ SPARCStation 10Ͻвȷ
          -xarch=v8 롣ṩϵͳ SPARC V8 ϵṹС

          Ҫ SPARC V7 ϵͳ SPARCStation 1Ͻвȷ
          -xarch=v7 롣ṩϵͳʹ SPARC V8 ָ Sun
          Studio 9 а棬ֻ Solaris 8 OS ֧ SPARC V7 ϵṹ
           SPARC V8 ָʱ OS еָУ
          ½

       6. OpenMP߳
          OMP_NUM_THREADS Ͷ߳Ѵ 128  256

       7. OpenMPԶ趨
          ڹڴ沢б̣а汾 Fortran 95  OpenMP
          API ʵ֣ڲԶ趨֮ԡϸ
          Ϣμ<OpenMP API ûָ>OpenMP  SPARC ƽ̨ı
          аʵ֡

    й Sun Studio 8 Ϣμܡֲᡣҵ
    ᣬΪһװĵһַ֣
    file:/opt/SUNWspro/docs/index.html⣬Ҳ Sun Studio 9 
    ҵܡֲᣬַ http://docs.sun.com

    ------------------------------------------------------------------------


            D. 

    ĿǰϢ

    ------------------------------------------------------------------------


            E. ͽ취

    ˱а汾֪⼰ܵĽ

    гЩܻܿ󷢲Ĳеõڸº
    鿴ϢַΪ
    http://http://developers.sun.com/prodtech/cc/support_index.html

        * ѡ -errwarn 
          汾нܵѡ־ -errwarn ȷʵʩд
          ҲԽ⡣ (5035157)

        * 
          Ϊյ -xinline= ־ӦȫرǣԿ
          Խ취ȷʹ -xinline=%none (5032991)

        * -xO4 ϵĶι
           -xO4 ӳĲǳʱŻʱܻ
          ĳԣдóӶ¶ιϡ취ڸ͵
          ӳ (5040283)

    ------------------------------------------------------------------------


            F. ƺͲ

    ϵͳƺͲݡ

        * -xlinkopt

          ʹ -xlinkopt ʱӦʹ -zcompreloc ѡ
          [4825600]

        * ģϢļĸʽ (.mod)

          ģϢļĸʽ (.mod file) ·а汾ı˸
          ġܹɹǰа汾ıɵ .mod ļ
          һ


 MODULE NEW
 USE OLD
 END MODULE 

          ģ OLD ʹ f95 ǰа汾ģģ NEW
          õǰа汾룬⡣Ϊ˱Щ⣬ñ
          汾ı±ɵģ OLD

          ÿ .mod ļһɸļıİ汾
          šɱ汾ģļķа汾Ϊ汾 1.0
          ʹ fdumpmod(1) óжϱ .mod ļķа汾š

    ע⣬f95 ǰķа汾˲ԣһֱη
     8.0 ̳Уڴ f95 ǰķа汾µ 8.0
    (Sun Studio 9) 汾עһ㡣ע²ԣ

        * Interval 

          õĽӿ (ABI)  Forte Developer 7 а汾Ѹ
          ģ Sun WorkShop 6 update 2 ͸ķа汾 ABI 
          ƼݡζŴڼĳͿõǰ汾
          f95 ±롣رǣ C++ õ Fortran 
          Fortran õ C++ ʹ f95  CC ±롣

        * CHARACTER*1 ֵýӿ

          Fortran 95 汾 7.0 ǰеһݣڽӿڿ
          ָ VALUE Եӳд CHARACTER*1 ķʽ

          ȷдɰ汾 7.0  8.0 f95  Fortran 95 
          ǿġֻڵߺͱóʹòͬı汾
          룬һ C дʱŻһ⡣

          ʾ


main.f:
        interface
        subroutine s(c1,c2)
        character*1, value ::c1   !  c1 is call-by-value
        character*2 ::c2    
        integer I
        end subroutine
        end interface
        call s('A', 'BC')
        end

sub.f:
subroutine s(c1,c2)
        character*1, value ::c1
        character*(*) ::c2            
        print *, 'You passed ',c1,' and ',c2
        END

          ʹǰа汾ı main.fʹñ汾 sub.f
          󣬳ز


 You passed A and B

          ڱ CHARACTER *1 ֵݶַȲ
          £ַݵĴУԶɵسȲ
          Ϊõһֱݡע Fortran 95  CHARACTER 
          ݵİֵã CHARACTER*1

          ͬC û Fortran 95 ʱ
          CHARACTER*1 ֵݣд򣬲Щ
          ĳȲ

        *  Forte Developer 6 update 2 ĿļĶƲ

          汾 7.0  f95  -aligncommon ־ȷͺ
          ʹʽ KIND ı⡣

          磬뿴ĳ


    character*26 type

    logical(1) ::l1 = .true.
    real(16)   ::r16 = 1
    integer(2) ::i2 = 1

    common /A/ l1,r16,i2

    print *, '--------------------------------------------'
    print *, ' Fortran 95 COMMON-block alignment in Bytes '
    print *, '--------------------------------------------'

    type = 'logical(1)'
    print *, type, loc(l1)-loc(l1)

    type = 'real(16)'
    print *, type, loc(r16)-loc(l1)

    type = 'integer(2)'
    print *, type, loc(i2)-loc(l1)

    end

           FD6u2 Fortran 95汾 6.2ʱʹ -aligncommon ѡ
          


 --------------------------------------------
  Fortran 95 COMMON-block alignment in Bytes 
 --------------------------------------------
 logical(1)                 0
 real(16)                   8
 integer(2)                 24

          ԭϣ汾 8.0  7.0 f95 ıܲ
          


 --------------------------------------------
  Fortran 95 COMMON-block alignment in Bytes 
 --------------------------------------------
 logical(1)                 0
 real(16)                   1
 integer(2)                 17

          ʹ -aligncommon ѡʱͨÿкͻȷ
          ֵʾıʱ벻Ҫ FD6U2 Ŀļ汾 8.0 
          7.0 ɵĿϡ

    гĿҲע⣺

        *  Solaris ϵͳ 7 ϵ SPARC V9 ƽ̨ӣ

          ྲ̬ϵͳ⣬ libm.a  libc.a SPARC V9 ƽ̨ϵĽ
           Solaris OS 7汾вáֻṩ˶̬Ĺ libm.so 
          libc.soζ SPARC V9 ƽ̨ʹ -Bstatic  -dn 
          ѡܻӴЩӦóʹö̬⡣

          Ϊڶ̬ϵͳʱûľ̬汾ʾӣʹʽ
          ƵУ

            f95 -o prog prog.f -Bstatic -lxyz -labc -Bdynamic

           libxyz.a  libabc.a ӣ⣨ϵͳ⣩
          ʹö̬ӡ

        * ڲʹȫּĴ

          ڲ ANYALLCOUNTMAXVALMINVALSUMPRODUCT
          DOT_PRODUCT  MATMUL  SPARC ƽ̨ܹ˸߶Ż
          ˣʹȫּĴ %g2%g3 ;ֲĴ %g4

          ʹڲû벻ӦΪЩĴ
          ʱ洢ڲʱЩĴеݻᱻ
          ǡ

        * 鵵е F95 ģ鲻ڿִļУ

           dbx ҪʱõĿļִļС
          ͨûĶ⹤һҪ󡣵ʹúģ
          Ĺ鵵ᵼһʹһģ飬û
          ģеκι̻Ŀļģж
          ŵáֻĿļжķűãŻӹ鵵
          ĿļãĿļڿִ
          С Dbx ͼҵʹģصĵϢʱһ
          档޷ṩйطŵϢΪŵĵϢʧˡ

          ʹ -u ѡɱܿ⡣ѡʹһΪ
          ѡὫӵδżУõ
          ģصͨģƣƵĸС
          дһ»ߡ

          磬ΪǿĿļԹ鵵ģ MODULE_1ָ
          ѡ -u module_1_ʹ f95 ʹ
          -Qoption ld -umodule_1_

        * Fortran 95 ͺ SCCS

          Ϊ SCCS ʹðٷֺ (%) Ϊĸ ID ؼʻ˽ޣõ
          ĸƶ˽ṹ Fortran 95 û SCCS άԴ
          ʱῴĽ

          ⲻ˵Ǳһ󣬵ȷ Fortran 95 Ժ SCCS Դ
          ϵͳĳͻ

          ƻʹ SCCS Դ룬ôΪṹʹõĸƾ
          ܱ⣬ͨʹ SCCS ܹЩؼʵ get
          ѡ -k ȡļ % Χÿո X % Y % Z

    ------------------------------------------------------------------------


            G. ĵ

    ĿǰϢ

    ------------------------------------------------------------------------


            H. Fortran 95 ҪĲ

    Ҫ˽Ȿа汾ҪͿѡĲμ˵

    ------------------------------------------------------------------------


            I. ɷͿ

    ִļʹļе Sun ̬⣬ô֤оͰ
    ˽·ַͻȨ

         /opt/SUNWspro/READMEs/runtime.libraries

    ע⡪δװ /opt Ŀ¼УѯϵͳԱԻϵͳϵ
    ʵʰװ·

    κʽ·ַ͸©ģͷļԴ롢ģͻ
    ̬⡣

    ʹ֤ڡû֤У CD-ROM ϰװ
    б濴

    ------------------------------------------------------------------------

    ------------------------------------------------------------------------

    Ȩ (c) 2004 Sun Microsystems, Inc. Ȩ
	֤ʹá

