포트란 90 강의자료 및 책 (KISTI 제공) by 바죠

KISTI 슈퍼컴퓨팅센터 제공 자료
포트란 90 책, 강의 자료
(포트란 교재, 포트란 책, 포트란 강의자료)



포트란 언어가 필요한 이유:
이공계 분야의 경우, 많은 응용의 경우, 궁극적으로 슈퍼 컴퓨팅영역으로 접근이 필요하다. 
단위 시간당 계산을 많이 할 수 있는 컴퓨터 언어가 필요하다. 
데이터 생산성이 계산 속도와 연관이 있는 경우라면 C 언어 또는 포트란 언어를 결코 무시할 수 없다.

많은 응용 프로그램의 경우, 특히, 킬러 어플리케이션의 경우, 여전히 계산 속도는 느리다라는 평가를 받는다.
추구하고자 하는 계산 결과를 충분히 정밀한 수준으로 얻어내는 것은 어찌보면 당연한 것이다.
하지만, 매우 많은 경우, 늘 충족되지 못하는 상황이기도 하다.
따라서, 컴퓨터 프로그램의 병렬화까지 염두에 두어야만 한다. 그렇게 해야 프로그램의 실질적인 생산성을 얻어낼 수 있다. 
정밀도를 담보할 수 있어서 결국 신뢰도 높은 계산을 수행할 수 있게된다. 계산의 신뢰도가 높아야 계산의 가치가 증폭된다.
매우 많은 경우, 단순히 빨리 계산하는 단계를 넘어서 다수의 CPU를 사용해서 더 빨리 계산하는 과정이 꼭 필요하다.
한 달 동안 계산해야 하는 것을 하루만에 계산하는 경우는 매우 흔한 일이다. 이것이 병렬화의 목적이다. 
병렬화는 빨리 계산할 수 있는 프로그램을 병렬화해야하는 것이다. 그렇지 않으면 의미가 반감된다. 
따라서, 포트란, C 언어를 이용한 과학기술 계산은 매우 중요하다.

다시 말해서 계산량이 매우 많고, 매우 많은 경우 현실적으로 계산이 느리다는 말이다. 따라서, MPI를 이용한 병렬화를 고려할 경우, 당연히 빠르게 계산하는 컴퓨터 언어는 필수 불가결한 선택이다. 결론은 C 아니면 포트란이 그 답이 될 수밖에 없다.
물론, 단 한 번의 비교적 간단한 계산을 짧은 시간안에 수행해 낼 수 있는 경우는 위에서 언급한 문제점에서 예외적인 것이 된다. 
 
계산 속도가 실제로 문재가 되는 경우가 많이 발생한다. 매우 반복적인 계산이 필요할 경우, 병렬화까지 고려해야만 하는 경우도 많다.  따라서, 병렬화를 해야만 하는 경우까지 고려한다면,  포트란 또는 C 언어를 활용한 과학 기술 계산은 필수 불가결한 것이다. 소위 킬러 프로그램들이 어떠한 언어로 만들어져 있는지 살펴 볼 필요가 있다. 각 계산 과학 분야에서 가장 널리 사용되는 컴퓨터 프로그램들은 대부분 포트란, C 언어로 작성되어 있고 MPI 기반으로 병렬화 되어 있다.

 

당연히, 계산량이 문제가 되지 않는 경우들도 매우 많이 있다. 이러할 경우에는 포트란, C 언어로 된 프로그램을 활용할 필요는 없다. 물론, 활용해도 된다. 스크립트도 포트란으로 만들어 사용할 수 있다. 이는 극단적인 상황이기는 하지만 기본적으로 많을 일을 할 수 있다. 포트란으로 스크립트를 만들 수도 있으며, 초대형 프로그램을 만들수도 있다. 아울러 고속으로 계산이 진행되는 포트란 프로그램을 병렬화 시키는 것도 일이다. 

원하는 일의 목적에 따라서 컴퓨터 언어의 선택을 확연하게 달라진다.

예를 들어, 파이썬을 이용한 그림 그리기는 확실히 현실적이다. 라이선스 비용없이 평생 무료로 사용할 수 있는 matplotlib가 있다. 이것을 사용하면 자신의 원하는 그림을 그릴 수 있다. 하지만, 파이썬 언어는 포트란, C 언어에 비해서 100배 정도 느린 계산을 수행한다. 물론, pypy, Cython을 활용하는 방법이 있기는 하다. 중요한점은 각 언어마다 쉽게 수행할 수 있는 일들이  정해져 있다는 것이다. 각 언어마다 지향점이 다르다는 것이다.
 

F90_lec.pdf
F90_book.pdf

출처: http://lifeisgood.tistory.com/851


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

참고사항: 
포트란 90 기본 :
http://incredible.egloos.com/3044862
포트란 90 모듈 :
http://incredible.egloos.com/2950367

두 가지 자료, 포트란 언어 학습서를 이곳에 추가합니다.  두 가지 모두다 영국에서 나온 자료입니다. 하나는 맨체스터에서, 다른 하나는 리버풀에서 나온자료입니다. 어째 축구가 떠오르는 군요. "장미의 전쟁" 개인적으로 훌륭한 자료들이라고 생각하고 있습니다. 제가 포트란 90을 익히기 위해서 사용했던, 공부했던 자료들입니다.

f90_course_Liverpool.pdf
f90_studentnotes_Manchester.pdf

 
포트란 입문:
http://www.uv.es/dogarcar/man/IntrFortran90.pdf
포트란을 이용한 이공계 소프트웨어 작성하기:
http://gliteui.wks.gorlaeus.net/ScientificComputing/Module_3_Programming_Fortran/Scientific%20Software%20Development%20with%20Fortran.pdf

다양한 포트란, 포트란 90 책들이 있다. 기본적으로 포트란 77과 포트란 90을 나누어서 알아야 한다. 포트란 77을 알아야 하는 이유는 과거의 코드들을 잘 활용하기 위해서이다. 물론, 포트란 90 기능들을 알아야 할 것이다. 그 중에서 모듈 기능과 allocatable array 사용 방법을 익히는 것은 매우 중요하다.

포트란의 구성 요소를 잘 파악해야 한다.

포트란 77의 구성요소:
자료형으로 6가지를 지원한다. real, integer, double precision, complex, boolean, character
변수들은 반드시 영문자로 시작해야 한다. 작성자가 혼동되지 않는 한 소문자로만 작성해도 된다.
배열은 여러개의 변수들을 하나로 묶어 주는 기능을 한다.
common
equivalence
data

아래의 3개는 나올 때, 그 때 다시 공부하면 된다. 입문하는 사람은 처음부터 익힐 필요가 없을 수 있다. 자료형, 변수, 배열 위주로 먼저 공부해야 한다. 자료형, 변수, 배열로 대부분의 일들을 처리할 수 있다. 그 다음 서브루틴을 이해해야한다. 하나 밖에 없는 주 프로그램, 메인 프로그램을 만들어야 한다. 계산하는 단계별로 항상 프로그램을 테스트 할 수 있어야 한다. 계산을 할 수 있어야 한다. 그 다음, 반복할 수 있어야 한다. 그리고 선택할 수 있어야 한다. 이렇게 몇 가지 문제형식으로 나누어서 작성할 수 있어야 한다.  다른 사람들이 만들어 둔 서브루틴들을 잘 사용할 수 있어야 한다. 이 때, 변수, 배열의 전달 상황을 완전히 이해해야 한다. 특히, 배열의 경우, 변수들의 전달 방식, 저장 방식을 완전히 숙지해야 한다.

포트란 77에서 추가적으로 가변 배열, 모듈, 오퍼레이터 오버로딩 이렇게 3가지 항목을 익히면, 자연스럽게 포트란 77에서 포트란 90으로 옮아갈 수 있다.

포트란 90의 특징:
문법이 간략하다. 과학기술 계산에 최적화 되어 있다. 초대형 계산에 유리하게 실행속도가 대단히 뛰어나고 장차 병렬화 프로그램의 기반이 된다.  여러 종류의 계산들을 간단하게 공식화 할 수 있다. 모듈화 가능하다. 호환성이 뛰어나다. 오퍼레터 오버로딩을 통한 제니릭 함수 작성이 간단하다. 대표적인 모듈이 데이터 추출에서 유용하게 활용되는 아래의 모듈이다.
strings.txt

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


http://en.wikipedia.org/wiki/Fortran

FORTRAN Tutorial Links:
http://kgptech.blogspot.com/2005/07/fortran_14.html


포트란  컴파일러 (Windows):
 http://ftp.g95.org/g95-MinGW.exe
SilverFrost FTN95 (Windows):
http://www.silverfrost.com/11/ftn95/ftn95_fortran_95_for_windows.aspx


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

컴퓨터 프로그래밍 기본 원칙
http://incredible.egloos.com/7411050






잘못 계산된 숫자를 확인하는 과정이 필요하다. 조건문으로 테스트가 가능하도록 만들어 둔다. 

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


과거 포트란 코딩을 하기 위하여 사용되었다는 코딩-폼:
b0012811_fortran.coding.form.pdf

포트란 90 사용자 가이드 (SUN) :
FORTRAN_90_USERS_GUIDE_SUN.pdf


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

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


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



덧글

  • 배재현 2009/03/03 22:46 # 삭제 답글

    다양한 정보 잘 보고 갑니다. 감사합니다.
  • 바죠 2009/03/04 14:18 #

    부족하지만, 찾아주셔셔 감사드립니다.
  • 이거다 2009/04/16 14:51 # 삭제 답글

    정말 좋은 자료 감사합니다~~^^ 성공하실꺼예요~~
  • 바죠 2009/04/16 19:53 #

    별 말씀을 다 하시는 군요!
    아무튼 덧글에 감사드립니다.
  • wisdom 2010/01/21 14:26 # 삭제 답글

    대학원에 들어와서 포트란을 혼자 공부해야 하는데 막막해 하던 차에..이 글을 읽었습니다.
    대학교 2학년데 C++ 수업만 왔다갔다했던 저는 컴퓨터 프로그래밍에 대해서는 완전 초짜입니다ㅠㅠ

    리버풀에서 나온 포트란 90교재가 가장 자세히 설명되어 있는 것 같아 무작정 읽기 시작했습니다.
    어느덧 다 읽었네요-.- 근데 확실히,,영어라 잘 이해못했던 부분도 많고 아직 궁금한 점도 많습니다.
    다만 포트란에 대해서 어느정도 가닥은 잡았네요..한글판으로 교재 하나 더 보려고 합니다.
    감사합니다 좋은 자료 올려주셔서요
  • 바죠 2010/01/21 14:33 #

    컴퓨터 과학이 전공이 아닌이상 컴퓨터를 너무 잘해도 전공에 도움이 안 됩니다.
    하지만, 확실한 것은 컴퓨터가 전공 공부하는데 방해가 되면 안됩니다. 이게 마지노 선 입니다.
    리버풀 대학 책은 포트란 90 중심으로 잘 설명한 책이라고 봅니다.

    좀 더 다른 스타일로 적힌 책(좀 더 포트란 77 사용자에게 90을 소개하는 듯 한 양식)이 있습니다.
    맨체스터 대학 교재입니다.

    저 개인적으로 리버풀, 맨체스터 두 가지를 보고 포트란 90에 대한 감을 잡았었습니다.

    참고하시길 바랍니다.

    그 뒤에 위에 소개된 한글 교재를 보게 되었습니다. 역시 도움이 되었습니다.

    특별히 교재를 구입하실 필요는 없다고 생각합니다.

  • wisdom 2010/01/21 14:35 # 삭제 답글

    네네 리버풀 보고 이해안되는 부분은 맨체스터 참조하면서 같이 읽었어요..^^

    포트란 77을 잘 모르니 맨체스터만 보기에는 기본이 너무 없었거든요..

    제 전공이 컴퓨터 과학은 아니지만 컴퓨터를 잘할 수록 날 수(??) 있는 학문입니다ㅠㅠ

    갈길이 까마득 하네요..

  • 바죠 2010/01/21 14:37 #

    저와 유사한 방식으로 공부하셨네요.
    다만, 저는 77을 아는 상태에서 했었고, wisdom님께서는 C++를 아시는 상태에서 시작하셨군요.

    아무튼, 좋은 학문 연구에 포트란 90이 큰 도움이 되길 바랍니다. 좋은 연구하십시요. 감사합니다.
  • 333 2012/05/11 14:54 # 삭제 답글

    귀한 자료 잘 보고 갑니다. 수고요^^
  • 바죠 2012/05/11 15:58 #

    감사합니다.
  • 달비부위 2015/07/04 17:24 # 삭제 답글

    좋은 자료 주셔서 감사합니다.
    대학원 진학때문에 포트란을 공부해야 하는데 보석같은 자료들이 여기 다 있네요 ㅎㅎ
  • 바죠 2015/07/05 14:43 #

    성공적인 대학원 생활 바랍니다.
댓글 입력 영역

최근 포토로그



MathJax