포트란 코드를 작성한 경험이 있지만 이와 같은 것을 본 적이 없습니다.PRINT 문을 추가/제거하면 변수가 변경됩니다.
서브 루틴을 수정하는 큰 HPC 코드 (~ 10K 줄)를 사용하고 있습니다. 필자는 print 서술문을 사용하여 모든 것이 올바르게 수행되고 필요한 경우 디버그되었는지 확인했습니다. 마지막으로 PRINT
문을 사용하여 코드를 실행하면 코드가 어디에서나 실제 숫자를 제공합니다. 일단 내가이 마지막 PRINT
성명을 언급하면, 코드는 내게 NaN
이 내 변수 중 일부라는 것을 알게된다. 내 코드가 너무 커서이기 때문에, 나는 분명히 여기를 게시 할 수 없습니다,하지만 난 PRINT
문 게시합니다 : up
어떤 속도 배열
PRINT*, "outletBC up1 ", SUM(ABS(up(nptsx,:,:)))
합니다.
질문 :
어떻게하는 것이 가능합니까? PRINT
문이 모든 변수에 어떤 영향을 줄 수 있습니까?
이는 코드의 다른 부분에 버그가 있음을 나타내며 범위를 초과하여 배열에 액세스하는 것과 관련이 있습니다. 경계 검사를 켜십시오. – agentp
@agentp와 같습니다. 또한 프로 시저 호출이 더미 및 실제 인수와 정확하게 일치하는지 확인하십시오. –
@HighPerformanceMark 여러 디버그 플래그 ifort를 사용할 수있는 코드를 실행했습니다. 모든 오류를 수정했는데 (일부는 배열 액세스를 벗어났습니다) 오류가 계속 발생합니다. 코드를 계속 디버깅 하겠지만 솔직히 print 문이 코드의 다른 부분에 어떤 영향을 미칠 수 있는지 이해하는 데 더 많은 관심이있었습니다. – solalito