question 에서 PTX는 다양한 아키텍처에서 이식 가능한 것으로 알려져 있습니다. 나는 이것이 이전 예 : sm_20에서 sm_30으로 진행될 수 있다고 믿는다. sm_20에서 sm_10으로 이동하는 특별한 사용 사례가 있습니다. 그래서 sm_20 타겟 용으로 컴파일 된 PTX로 sm_10 타겟 용 cubin과 같은 바이너리를 생성 할 수 있습니다.이전 타겟에 대한 CUDA PTX 컴파일 바이너리
0
A
답변
4
특정 아키텍처 (즉, sm_*
플래그 사용)에 대해 컴파일 할 때 PTX는 호환 호환되지만 이전 버전과 호환되지 않습니다. 이를 극복하는 한 가지 방법은 특정 가상 아키텍처를 지정하고 대상으로 삼을 모든 실제 아키텍처에 대한 이진 이미지를 생성하는 것입니다. 예를 들어,
nvcc -arch=compute_20 -code=sm_20,sm_30,sm_35
은 컴퓨팅 2.0 가상 아키텍처에 대해 PTX를 생성하고 2.0, 3.0 및 3.5 장치 용 이진 이미지를 생성합니다. compute 1.0은 CUDA 7.0부터 사용되지 않습니다. 이를 fat binary라고합니다.
실제 아키텍처와 가상 아키텍처의 차이점은 code generation options을 참조하십시오.
편집 : 사실, 그것은 JIT 컴파일러가 개입하고 당신을 위해 구축 한 것이기 때문에 중복 조금 -arch=compute_35
및 -code=sm_35
을 지정할 수 있습니다. 당신의 뚱뚱한 바이너리에서 약간의 여분의 지방을 신경 쓰지 않는 한, 나는 그다지 중요하지 않다고 생각합니다.
EDIT2 : code
해야 PTX는 이전 버전과 호환되지 않기 때문에보다 크거나 arch
동일합니다. 그 어리석은 실수를 지적한 Robert Crovella에게 감사드립니다.
관련 문제
- 1. CUDA .ptx 파일은 이식 가능합니까?
- 2. NVIDIA NVCC 및 CUDA : Cubin 대 PTX
- 3. CUDA PTX 코드 및 레지스터 메모리와의 혼동
- 4. NVIDIA GPU에서 ptx 코드를 컴파일 하시겠습니까?
- 5. CUDA : 내 자신의 PTX 기능을 주입하고 있습니까?
- 6. CUDA C에서 ptx 함수를 호출하려면 어떻게해야합니까?
- 7. 이전 CUDA 툴킷 버전으로 크로스 컴파일 하시겠습니까?
- 8. CUDA 바이너리 검색 구현
- 9. CUDA PTX 코드 % envreg <32> 특수 레지스터
- 10. 바이너리 컴파일
- 11. 이전 make 호출의 타겟에 의존하는 방법
- 12. 다른 CFLAGS를 사용하는 다른 타겟에 대한 공통 C 파일 컴파일
- 13. PTX 출력을 사용하는 NVCC 별도 컴파일
- 14. CPU 용 CUDA 코드 컴파일
- 15. CUDA의 PTX 파일에서 ".file"지시문의 목적은 무엇입니까?
- 16. CUDA PTX 코드를 조작 할 수있는 도구 또는 라이브러리는 무엇입니까?
- 17. CUDA 프로그래밍 : 컴파일 오류
- 18. clang으로 CUDA 컴파일
- 19. CUDA SDK 컴파일 오류
- 20. CUDA 컴파일 오류
- 21. 장치에서 CUDA JIT 컴파일
- 22. CUDA 컴파일 오류
- 23. VS2010의 CUDA 컴파일 옵션
- 24. 인라인 PTX 어셈블리 코드가 강력합니까?
- 25. ptx 파일에서 기능을 찾을 수 없습니다.
- 26. Visual Studio의 CUDA 컴파일 문제
- 27. 'code = sm_X'는 바이너리 (cubin) 코드 또는 PTX 코드 또는 둘 모두를 포함합니까?
- 28. CUDA 연산 기능 이전 버전과의 호환성
- 29. 바이너리 호환성과 이전 버전과의 호환성
- 30. sm_10에 대한 최신 PTX ISA 버전
@RobertCrovella 나는 그것을 썼다고 믿을 수 없다. 마치 제가 처음 쓴 문장을 읽지는 않았지만 거의 마치입니다. 내 어리석은 실수를 지적 해 주셔서 고마워요. – Tim