1 / 18

Rozszerzanie składni pFortranu

Rozszerzanie składni pFortranu. Implementacja elementów Fortranu 90. Daniel Rychcik. Co będzie?. Trochę historii Dlaczego pFortran? Cel pracy Narzędzia pFortran od środka Przebieg pracy Osiągnięcia. Umiejscowienie pracy. ?. pFortran. Minimalne rozszerzenie FORTRANU 77

lilike
Télécharger la présentation

Rozszerzanie składni pFortranu

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Rozszerzanie składni pFortranu Implementacja elementów Fortranu 90 DanielRychcik

  2. Co będzie? • Trochę historii • Dlaczego pFortran? • Cel pracy • Narzędzia • pFortran od środka • Przebieg pracy • Osiągnięcia

  3. Umiejscowienie pracy ?

  4. pFortran • Minimalne rozszerzenie FORTRANU 77 • Programowanie równoległe w modelu SPMD • Preprocesor – nie kompilator! • Tłumaczenie rozszerzeń na kod MPI

  5. pFortran • Operator referencji @ • A@N=A@M • A=A@N • Ograniczenia stosowania • Operator redukcji {} • SUM=+{PSUM} • Implementacja – drzewo binarne

  6. Dlaczego pFortran? • Prostota !!! • Łatwość nauczenia się • Minimalne zmiany w istniejących programach • Niezależność od biblioteki message passing

  7. CALL MPI_BCAST(N,1,MPI_INTEGER, 0,MPI_COMM_WORLD) CALL MPI_REDUCE(myPi,Pi,1, MPI_DOUBLE_PRECISION, MPI_SUM,0,MPI_COMM_WORLD, IERR) IF (thisProc.EQ.0) THEN CALL MPI_SEND(B,1,MPI_BYTE,DEST,TAG, MPI_COMM_WORLD,IERR) END IF Dlaczego pFortran? N=N@0 Pi=+{myPi} B@DEST=B@0

  8. Fortran 90 • Duże unowocześnienie języka • Free-form syntax • Nowe instrukcje strukturalne • Procedury rekurencyjne • Rozbudowane funkcje intrinsic

  9. Cel pracy • Porównanie narzędzi programowania równoległego • Opanowanie narzędzi pomocniczych: • lex • yacc • Poznanie pFortranu „od środka” • Implementacja niektórych elementów Fortranu 90

  10. lexi yacc • lex – generator analizatorów leksykalnych • Zajmuje się warstwą „słownikową” • Wyszukuje wzorce i zamienia je na tokeny • Nie analizuje „sensu” wyrażeń • yacc – generator parserów gramatyki • Rozpoznaje struktury wyrażeń • Jako wejście przyjmuje strumień tokenów • Pozwala definiować akcje dla wyrażeń

  11. pFortran od środka • Część większego pakietu pLanguages • Interesujący nas katalog: pf/src • Dwie podstawowe części preprocesora • Analizator leksykalny: pf/src/lex • Analizator składni, generator kodu: pf/src • Jak te dwie części współpracują ze sobą?

  12. pFortran od środka Analizator leksykalny: • Zaczerpnięty z pakietu f2c • Brak dostępu do pliku źródłowego lex • Wprowadzenie poprawek – ręczna analiza maszynowo wygenerowanego kodu

  13. pFortran od środka Analizator gramatyki: • Również oparty o źródła f2c • Zmodyfikowana gramatyka yacc • Dostępny plik opisujący gramatykę • Wprowadzenie poprawek – głównie praca nad definicją gramatyki

  14. Przebieg pracy • „Oczyszczenie” kodu, dodanie komentarzy • Analiza i wybór rozszerzeń do implementacji • Wybór narzędzia i sposobu realizacji • Analiza kodu źródłowego pFortranu • Rozbudowa języka • Dokumentacja

  15. Wprowadzone rozszerzenia • Procedury i funkcje rekurencyjne • Rozszerzona semantyka DO...LOOP • Deklaracja IMPLICIT NONE • Instrukcja wyboru SELECT…CASE • Instrukcje kontroli pętli EXIT i CYCLE • Nowe funkcje intrinsic: CEILING, FLOOR, MODULO itp. • Postać /= operatora „różny od”

  16. Zauważone niedociągnięcia • Rozsyłanie dużych struktur • Preprocesor generuje błędny kod • Efektywność operacji redukcji • Zwykłe drzewo binarne zamiast hypercube

  17. Podsumowanie • Zasada działania translatora – ułatwienie • Budowa preprocesora - utrudnienie • Reverse-engineering • Metoda modyfikacji kodu • Możliwość dodawania kolejnych rozszerzeń • Rozszerzenia deklaracji zmiennych • Domyślne argumenty procedur • Typy danych użytkownika

  18. Pytania ?

More Related