나는 약 2 백만 줄과 약 150 칼럼의 데이터를 가진 csv
파일을 가지고있다. 총 파일 크기는 약 1.3GB입니다. 약 3 억 명의 어레이 회원입니다.FORTRAN 프로그램은 모든 데이터를 크기 제한으로 배열로 읽을 수 없습니까?
나는 350 만 개의 라인 파일로 시작했고 시행 착오를 거쳐 은 배열이 390 만 개 이하로 정의되지 않은 이상 컴파일되지 않는다는 것을 알게되었습니다. 400 만, 안돼. 버스 오류/코어 덤프.
어쨌든 200 만 줄의 파일이 작동한다고 생각했습니다. 2GB 제한에 대한 몇 가지 게시물을 읽었습니다. 그러나 데이터를 읽을 때 줄 번호를 인쇄 할 때 끝나기 전에 25 만 개 정도 밖에되지 않습니다. 이상하게도 필자는 거의 동일한 파일 (분할 명령 사용)을 가지고 있으며, 파일을 만들기 전에 85,000 개에 불과합니다. 왜 이렇게 다른, 한 줄에 같은 문자 수를 모르십니까?
이 데이터를 읽으려면 내가 할 수있는 일이 있습니까? 수 백 번 모든 데이터를 컴파일하는 것은 큰 고통입니다.
어떤 시스템에서 실행합니까? 어떻게 프로그램을 컴파일합니까? 관련 소스 코드 및 컴파일 명령을 표시하십시오. 리눅스에서'gfortran -Wall -g'로 컴파일했으면,'gdb' 디버거로 실행 했습니까? –
나는 큰 파일을 하나의 꿀꺽 꿀꺽 거리는 소리로 메모리에 읽어 들일 필요가 있다는 것에 회의적이다. 일반적으로 청크별로 큰 데이터 세트를 읽는 것이 훨씬 더 좋은 전략입니다 : 청크 읽기, 일부 데이터 추출, 청크 삭제, 반복. 그러나 큰 데이터 세트를 읽을 필요가 있다면, 바이너리 포맷으로 저장하는 것이 좋으며, 그것은 Fortran에서'포맷되지 않은 포맷 (unformatted) '입니다. –
@HighPerformanceMark - 재전송 된 버전 중 하나에서 표준에 '스트림'액세스가 추가되지 않았습니까? 그것은'unformatted'보다 적은 디스크 공간을 차지할 수있는 또 다른 바이너리 형식이며, 여전히 이해하기 쉽습니다 ... – mgilson