저는 기본적인 CUDA Fortran 코드를 작성했습니다. 내 프로그램이 쓰레드 블록 (점유도 계산 용) 당 사용하는 공유 메모리의 양을 결정할 수 있기를 원합니다. 이 정보를 찾기 위해 -Mcuda = ptxinfo를 사용하여 컴파일했습니다. 편집 출력 끝나는CUDA Fortran에서 공유 메모리 사용량 확인
ptxas 정보 : device_procedures_main_kernel_ 432 바이트 기능 속성 프레임 1,128 바이트 유출 점, 604 바이트 유출로드 스택 ptxas 정보 : 중고 63 개 레지스터 96 바이트 smem 320 바이트 cmem [0]
출력에 smem이 언급 된 유일한 장소입니다. 전역 속성 서브 루틴 main_kernel에는 공유 속성이있는 배열이 하나 있습니다. I 공유 특성을 제거하는 경우 그때
ptxas 정보를 얻을 : device_procedures_main_kernel_ 432 바이트 함수 특성 프레임 1124 바이트 유출 점, 532 바이트 유출로드 스택 ptxas 정보 : 중고 63 개 레지스터 320 바이트 cmem [0]
스템이 사라졌습니다. main_kernel의 공유 메모리 만 계산되고있는 것 같습니다 : 내 코드의 장치 서브 루틴은 공유 속성을 사용하는 변수를 사용하지만 출력에 언급되지 않은 것 같습니다. 예를 들어 장치 서브 루틴 evalfuncs에는 공유 변수 선언이 포함되어 있지만 관련 출력은
입니다.ptxas 정보 : device_procedures_evalfuncs_ 504 바이트의 스택 프레임에 대한 기능 속성, 1140 개 바이트 유출 상점, 508 바이트 유출로드
글로벌 서브 루틴에서 선언 할 필요가 공유 속성을 가진 모든 변수를합니까?