UNIX är ett operativsystem där den vanlige användaren klarar sig med ganska få kommandon, men där den avancerade användaren har en mycket kraftfull miljö. Vad man som nybörjare speciellt måste observera är att UNIX ordentligt skiljer på gemena och VERSALER. I de flesta andra operativsystem har det ingen betydelse om man använder gemena eller VERSALER, men så icke i UNIX! Normalt använder man bara gemena.
Kommandona i UNIX består oftast av bara 2 till 3 tecken. För att lista vilka filer som finns i den katalog (directory) där man befinner sig användes ls, eller det mer kraftfulla ls -lFa, ofta förkortat lls. Förkortningar definieras genom att i lämplig login-fil (det finns flera motsvarigheter till gamla tiders login-filer, det utmärkande för UNIX är att deras namn börjar med en punkt) ange till exempel
alias lls 'ls -lFa'Man får reda på vilka alias som gäller för tillfället genom att helt enkelt ge kommandot alias.
Man listar en fil på skärmen genom att ge kommandot cat följt av filnamnet. Ofta är det bättre att i stället använda more, varvid man kan bläddra i filen. Blank ger en sida framåt, b ger en sida bakåt och q ger uthopp. Kopiering av filer sker med cp gammal ny, flyttning eller namnbyte med mv gammal ny, och borttagning med rm namn. Man förflyttar sig mellan olika areor (filkataloger, directories) med kommandot cd area.
Redigering av en fil kan antingen ske med en systemspecifik editor, med UNIX standard-editorer ex eller vi eller med den välkända emacs.
För Fortran 77 program gäller att filnamnet måste sluta med .f, till exempel prog.f. Om man försöker kompilera ett program med filnamnet prog.txt får man under UNIX en felaktig felutskrift som snackar om "bad file magic number". För Fortran 90 program bör i stället filnamnet sluta med .f90, om man använder fri form.
Anm. Fortran-programenheters namn kan sluta på en del andra tecken, som .for, men detta är implementationsbeorende och därför av mindre intresse.
Kompilering sker med kommandot f77 respektive f90 följt av filnamnet, till exempel f77 prog.f. En framgångsrik kompilering skapar ett körklart program, om man inte anstränger sig får detta namnet a.out, som man kör genom att skriva det namnet.
Hjälpfunktioner finns under UNIX i form av ett manualkommando, man. Man får dock under UNIX ut hela manualen sida för sida på skärmen, det är ingen trädstruktur som under VMS. Ge gärna kommandot man f77 eller man f90 för att studera Fortran-kompileringens mysterier. Man hittar där en del intressanta väljare, som -C för att få indexkontroll under exekveringen, -u för att kräva att alla variabler deklareras, -vms för att dels få en del från DEC VAX/VMS, dels få bort Fortrans styrtecken vid utmatning på terminal. Dessa exempel kommer från f77 på DEC!
Kommunikation med andra system erhålles med kommandona telnet eller rlogin, med vilket man logiskt flyttar sig till ett annat system, och ftp, vilket utnyttjas för filöverföring.
Man loggar ut från UNIX med exit, från vissa hjälpsystem med quit. För att komma ut från arbetsstationen måste man även logga ut med hjälp av musen.
UNIX innehåller många utmärkta hjälpmedel. Ett ytterst användbart sådant är make kommandot, vilket utnyttjas för att bygga ett stort exekverbart prgram från många separata källfiler. Ett enkelt exempel ges i Laboration 5. En bok från O'Reilly som beskriver kommandot är MANAGING PROJECTS WITH MAKE av Andrew Oram & Steve Talbott, 2nd Edition, October 1991, 152 pages, ISBN 0-937175-90-0.
Resultatet av en körning på Cray har ofta normalt radskrivarformat, dvs utnyttjar 132 positioner i bredd.
Numera går det att köra interaktivt på vår Cray på NSC, man flyttar först över filer med ftp cray.nsc.liu.se och sedan går man över till Cray för exekvering med kommandot telnet cray.nsc.liu.se. Editering på Cray sker lämpligen via ett X-windows fönster på arbetsstationen.
Tips 1. Kompilera först Ditt Fortranprogram på arbetsstationen, för att bli av med ``småfelen'' på ett enkelt sätt!
Tips 2. Använd "styrkortsuppsättningen" nedan som mönster. QSUB-r ger jobbnamnet. Som user skall Du ge Din användaridentitet på Cray. Du anger minnesbehovet i miljoner ord på Cray med QSUB-lM, hpm ger mätning av hur effektivt hårdvaran utnyttjas (hardware performance monitor) medan ja står för debiteringsinformation (job accounting).
$ cat epsilon.f program epsilon real a, b, tred tred = 1.0/3.0 a = 4.0*tred - 1.0 b = 1.0-3.0*a b = 0.5 * b write(*,*) ' Fortran: my = ', b end $ f90 epsilon.f $ ./a.out ! Notera nödvändigheten av ./ Fortran: my = 7.105427357601001E-15
Denna metod passar för tester och för mycket små jobb.
$ cat modul.job # user=x_nscbi ! Användarnamn # QSUB-r bosse ! Jobbnamn # QSUB-lT 50 ! Maximal CPU-tid i sekunder # QSUB-lM 4Mw ! Maximalt primärminne # QSUB-eo ja ! Förbered rapportering set -x ! Ekning av kommandon cd $TMP ! Gå till tillfällig area f90 -r 6 ~/epsilon.f ! Kompilera med fullständig listning cat epsilon.lst ! Skriv ut kompileringslistan hpm -g 0 ./a.out ! Mät programmet under körning ja -s ! Rapportera $ qsub modul.job ! Sänd jobbet för exekvering nqs-181 qsub: INFO Request <94359.sn1037>: Submitted to queue <gate> by <x_nscbi(789)>. $ ustat NQS_ID JOB_NAME QUEUE USER STAT PRI CPU_TIME MAX_CPU SIZE MAX_SIZE 94359 bosse t200_m8 x_nscbi R4 22 0 50 984kw 4mw 94184 phos-3 tx_m24 x_nscler R5 N 32 76259 100000 24210kw 24mw 94325 dimesi4 tx_m24 x_nscec R5 N 32 5385 600000 15946kw 16mw 94337 rev46a tx_m24 x_nsctj R6 N 32 2012 100000 8163kw 8mw 94116 bdrc3 tx_mx x_nfrsll R5 N 36 135151 500000 40439kw 50mw $ ls bo* ! Se vad utfilen heter bosse.o94359 $ cat bosse.o94359 ! Skriv ut utfilen (resultatet) This is a private computer facility. Access for any reason must be specifically authorized by the owner. Unless you are so authorized, your continued access and any other use may expose you to criminal and/or civil proceedings. Information about NSC and CRAY is available at http://www.nsc.liu.se/. + cd /nsc/tmp/tmpdir.020275a ! Detta är ekning av cd $TMP + f90 -r 6 /home/nsc/x_nscbi/epsilon.f + cat epsilon.lst ! Kompileringslistan ! Denna blir mycket lång och har skurits ner här! 1 program epsilon 2 real a, b, tred 3 tred = 1.0/3.0 4 a = 4.0*tred - 1.0 5 b = 1.0-3.0*a 6 b = 0.5 * b 7 write(*,*) ' Fortran: my = ', b 8 end 3 Local Variables (11 references, 8 Uses) A B TRED + hpm -g 0 ./a.out ! Körning Fortran: my = 7.105427357601001E-15 ! Resultat ! Statistik Group 0: CPU seconds : 0.00 CP executing : 213419 Million inst/sec (MIPS) : 38.98 Instructions : 49916 Avg. clock periods/inst : 4.28 % CP holding issue : 49.01 CP holding issue : 104604 Inst.buffer fetches/sec : 0.70M Inst.buf. fetches: 902 Floating adds/sec : 0.02M F.P. adds : 23 Floating multiplies/sec : 0.03M F.P. multiplies : 43 Floating reciprocal/sec : 0.00M F.P. reciprocals : 0 I/O mem. references/sec : 0.00M I/O references : 0 CPU mem. references/sec : 28.37M CPU references : 36332 Floating ops/CPU second : 0.05M + ja -s Job Accounting - Summary Report ! Rapport =============================== Job Accounting File Name : /tmp/nqs.+++++0M1M/.jacct3104 Operating System : sn1037 sn1037 8.0.3.1 ope.10 CRAY Y-MP User Name (ID) : x_nscbi (789) Group Name (ID) : g90027 (527) Account Name (ID) : A-00000 (0) Job Name (ID) : bosse (3104) Report Starts : 09/24/96 09:51:20 Report Ends : 09/24/96 09:51:28 Elapsed Time : 8 Seconds User CPU Time : 1.1764 Seconds System CPU Time : 0.4904 Seconds I/O Wait Time (Locked) : 1.6376 Seconds I/O Wait Time (Unlocked) : 4.3639 Seconds CPU Time Memory Integral : 0.6067 Mword-seconds SDS Time Memory Integral : 0.0000 Mword-seconds I/O Wait Time Memory Integral : 0.9573 Mword-seconds Data Transferred : 1.2468 MWords Maximum memory used : 1.0830 MWords Logical I/O Requests : 374 Physical I/O Requests : 323 Number of Commands : 16 Billing Units : 0.0708
Information om att ett jobb är färdigt kan erhållas med e-post enligt instruktioner i nyhetsbrev 105, sektion 1b.
Denna metod passar för små jobb.
Man kan naturligtvis även gå direkt till informationen om Network Queueing Environment från Cray Research.
Stora jobb bör köras på detta sätt.
Metoden att köra Fortran-program varierar med leverantören av kompilatorn. Jag har tyvärr ingen erfarenhet av Microsofts båda Fortran 77 system, utan behandlar huvudsakligen Fortran 90 från NAG.
Vid NAG:s system så är kompileringskommandot FTN90 och källkoden är *.F90 för den nya fria formen och *.FOR för den gamla fixa formen. För att få omedelbar exekvering lägger man till /LGO.
C:\> ftn90 program.f90 /lgoVid användning av flera programenheter i olika filer bör man först separatkompilera exempelvis de båda filerna DEL1.F90 och DEL2.F90 enligt
C:\> ftn90 del1.f90 C:\> ftn90 del2.f90och man får då de båda objektfilerna DEL1.OBJ och DEL2.OBJ. Dessa länkas sedan med LINK77 för att skapa den exekverbara modulen HELA.EXE.
C:\> LINK77 $LOAD DEL1 $LOAD DEL2 $FILE HELA.EXE C:\> C:\> HELASymbolen $ ovan genereras automatiskt av länkaren LINK77, som även den är en NAG-produkt. Den medföljer vid köp av kompilatorn, liksom det nedan diskuterade hjälpsystemet DBOS.
C:\> FL /Fs PROGRAM.FORDenna kompilering skapar två filer, en programlista PROGRAM.LST med eventuella programfel (som även kommer upp på skärmen) samt vid en lyckad kompilering även ett körklart program med namnet PROGRAM.EXE.
Filer skapas lämpligen med VAX standard-editor EDT eller TPU (vilka båda utnyttjar speciella tangenter vid redigeringen, bland annat det numeriska tangentbordet) eller den vanliga editorn EMACS eller AMIS.
Ett lämpligt namn på en program-fil är PROGRAM.FOR.
Programmet skall kompileras, länkas och köras. Detta sker normalt i tre steg, först kompilering med kommandot
for programsedan länkning av PROGRAM.OBJ med
lin programoch slutligen körning av PROGRAM.EXE med
run programOvanstående använder Fortran 77. Jag har tyvärr ännu inte tillgång till någon VAX med Fortran 90. Notera att VAX/VMS liksom MS-DOS ej skiljer på kommandon och filnamn givna med små eller stora bokstäver.