IRIX 6.0.1 - Prevo|enje i izvr{avanje programa Povratak HOME RCUB

Prevo|enje i izvr{avanje "C" programa

Prevo|enje i linkovanje programa se izvr{ava naredbom "cc"

        % cc [ option ] ... file ...

Npr.

        % cc -O3 -c a.c              - prevodi "a.c" u "a.o" uz optimizaciju
                                              tre}eg nivoa

        % cc -O3 -c b.c              - prevodi "b.c" u "b.o"uz optimizaciju
                                              tre}eg nivoa

        % cc -O3 -c main.c           - prevodi "main.c" u "main.o" uz 
                                              optimizaciju tre}eg nivoa

        % cc -o prog a.o b.o main.o -lm
                                     - linkuje "a.o", "b.o" i "main.o" u "prog"
                                       uz linkovanje dodatne "math" bibilioteke

        % prog                       - izvr{ava program "prog"

Olak{avanje gornjeg procesa mogu}e je kori{}enjem "make" podsistema, u kom slu~aju se kreira "makefile" koji bi imao slede}i izgled:

        % cat >makefile

        CFLAGS = -O2

        OBJECTS = a.o b.o main.o

        all : prog

        prog : $(OBJECTS)
                cc -o prog $(OBJECTS) -lm
        <Ctrl-D>

        % _

Te se automatsko prevo|enje vr{i navo|enjem naredbe "make":

        % make

^e{}e kori{}ene opcije "c" prevodioca su:

    -ansi            - reguli{u kompatibilnost sa standardom
    -ansiposix         (za detaljniji prikaz pogledadi "man cc")
    -cckr
    -xansi
    -common

    -signed          - "char" tip podataka }e se smatrati da je "signed"

    -c               - izvorni kod se samo prevodi (ne i linkuje)

    -pca             - pokre}e "pca" preprocesor koji automatski otkriva
                       paralelizme u izvornom kodu. Ova opcija tako|e
                       uklju~uje "-mp" (multiprocesing) opciju.

    -64              - generi{u se 64-bitni objekti. Ovo podrazumeva -mips4

    -32              - generi{u se 32-bitni objekti. Ovo podrazumeva -mips1.


    -mips1           - objektni kod se generi{e instrukcijskim setom
                       RISC R2000/R3000 arhitekture
                       Ovo podrazumeva -32.

    -mips2           - objektni kod se generi{e instrukcijskim setom
                       MIPS II arhitekture
                       (MIPS I + R4000 specifi~ne ekstenzije)
                       Ovo podrazumeva -32.

    -mips3           - objektni kod se generi{e instrukcijskim setom
                       pune MIPS III arhitekture (npr. R4000).
                       Ovo podrazumeva -64.

    -mips4           - objektni kod se generi{e instrukcijskim setom
                       pune MIPS IV arhitekture (npr. R8000).
                       Ovo podrazumeva -64. Ina~e, ovo je default opcija.

    -o output        - imenuje izlazni izvr{ni program ("a.out" ako
                       se ne navede)

    -O0              - isklju~ivanje svih optimizacija. Ovo je
                       default opcija

    -O1              - uklju~ivanje lokalnih optimizacija koje mogu
                       biti ura|ene brzo

    -O ili -O2       - uklju~ivanje pro{irene optimizacije

    -O3              - uklju~ivanje agresivne optimizacije

    -S               - izvorni kod se prevodi i dobija program u
                       asembleru (sa sufiksom ".s")

    -Dname=def
    -Dname           - definicija makro preprocesora. Kao da se nalazi u
                       izvornom kodu #define "name" "def". Ako se
                       navede sam -Dname, smatra se da je
                       dodeljena vrednost "1".

    -Uname           - ukljanjanje inicijalne vrednosti makro-a preprocesora

    -Idir            - uklju~uje "dir" u putanju u kojoj se pretra`uju
                       `#include' datoteke ~ija imena ne po~inju sa `/'

Index

Prevo|enje i izvr{avanje FORTRAN programa

Prevo|enje i linkovanje programa se izvr{ava naredbom "f77"

        % f77 [ option ] ... file ...

Npr.

        % f77 -O3 -c a.f             - prevodi "a.f" u "a.o" uz
                                              optimizaciju tre}eg nivoa

        % f77 -O3 -c main.f          - prevodi "main.f" u "main.o" uz
                                              optimizaciju tre}eg nivoa

        % f77 -o prog a.o main.o     - linkuje "a.o" i "main.o" u "prog"

        % prog                       - izvr{ava program "prog"

Da bi se brzina SGI Power Challenge-a iskoristila nije dovoljno samo prevesti svoj fortranski program, vec je, na `alost, potrebno program malo i prilagoditi za njegovu 64-bitnu arhitekturu. Time se mogu posti}i ubrzanja i do 10 puta!

Fortran na SGI Power Challenge-u, ukoliko se ne koristi opcija -32, podrazumeva 64-bitnu du`inu integer varijabli (INTEGER*8). Ukoliko va{ stari kod podrazumeva neadekvatne veli~ine podataka (recimo, putem COMMON zona), to mo`e dovesti do neta~nih rezultata.

Trivijalna intervencija koja mo`e da spase stvar je zamena deklaracije INTEGER sa INTEGER*4. Implicitne deklaracije (I,J,K..N) u DIMENSION naredbi se moraju tako|e zameniti eksplicitnom deklaracijom INTEGER*4.

Kod DOUBLE PRECISION nema problema, jer je on ve} 64-bitni. FLOAT bi trebalo tako|e zameniti sa DOUBLE PRECISION, radi brzine.

Pri prevo|enju programa koji se iole duze izvr{avaju treba staviti opciju -O3.