fortran pgi 컴파일러질문입니다 ㅜㅜ

shw8902의 이미지

안녕하세요!

포트란 언어는 조금 공부해서알고있는반면에
포트란 컴파일러는 무지한 한 학생입니다ㅜㅜ

현재 pgi v9.0.3 버전을 사용하고있는데요
제가지인께 프로그램을하나받아서 봤더니
77코드로 코딩이되어있었습니다 그래서 90코드로
바꾸고 돌렸더니 77컴파일러와 90컴파일러와결과값이다르더군요
하나하나씩보다보니 input에서 .bin 파일에서 이미 읽는값이
다르더라구요 제생각엔 컴파일러자체에대한 문제같은데
이와같은 경험 해보신분있으신지요? 또 해결책아시는분계시면
열려주시면 감사하겠습니다 긴글읽어주셔서감사합니다.

yeonpil_net의 이미지


f90은 f77문법의 모든 부분을 수용합니다.

컴파일 옵션이나 기타 다른 부분에서 차이가 날만한 부분도 살펴보시고요.

컴파일러자체의 문제일 가능성은 0.1%도 없습니다.

!23456---1----+----2----+----3----+----4----+----5----+----6----+----7-2--+----8
"배웠다"는 "할 수 있다"의 동의어가 아니다.

shw8902의 이미지

답변갑사합니다!

사실 제가 다른 분에게도 물어보아서 답을받았는데,

f77 코딩에선 binary file을 읽을시 8bite로 읽고 pgf90 컴파일러에서는 다르게 읽는다고 하더라구요,

pgf90에서도 f77처럼 8바이트로 읽는 방법이 있을까요 ?

yeonpil_net의 이미지

f77 -> FORTRAN 77 표준에 대한 것인지. 님이 사용하는 특정 컴파일러의 실행파일 이름을 부른는지.. 혹시 g77(Gnu f77)인것인지.. 또는 f2c를 이용했던 fake compiler(fort77명령으로 여러 리눅스패키지에 삽입된)였는지..
포트랜드77 컴파일러인지..

unformatted, direct 파일의 recl의 "단위"는 77표준이던 90표준이던.. 그 이후에도 정해지진 않았습니다.
그것은 구현체(processor : 각 OS별로..각 컴파일러 제품별로)에 의존적인 부분입니다.

gfortran은 -frecord-marker=length 형식이고
ifort는 Windows용 /assume:byterecl
Linux/Unix 는 -assume byterecl 형식입니다.

포트랜드꺼는 살펴보지 않았네요.. 컴파일러 매뉴얼 찾아보면 됩니다.

https://gcc.gnu.org/onlinedocs/gfortran/Runtime-Options.html

https://software.intel.com/en-us/node/510637

그리고 같은 컴파일러에서 버전마다 기본값이 다를 수 있습니다. 그러니 사용하는 컴파일러의 값을 알아야하고.. 다른 컴파일러에서 컴파일될 것도 고려하여 프로그래밍 하심 좋습니다.

코드에서 recl의 단위를 4배수단위로 곱하던지.. 나누던지 해보시고 또는 컴파일러의 옵션을 파악해서 조정하세요.

!23456---1----+----2----+----3----+----4----+----5----+----6----+----7-2--+----8
"배웠다"는 "할 수 있다"의 동의어가 아니다.

shw8902의 이미지

IDL 프로그래밍만하다가 포트란 처음 접해서

너무 조급하게만 생각했던것 같습니다.

아직 해결은 되지않았지만, 급하긴해도 조금 넓게 생각해서 머리속에 정리하면서 해봐야할 것 같습니다.

사실 써주신 말씀을 전부다 이해하진 못했지만

답변 정말 감사드립니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.