2013-02-01 3 views
4

나는 cudaDecodeD3D9 sample을 연구하여 CUDA의 작동 방식을 배우고 컴파일시 .cu 파일에서 .ptx 파일을 생성합니다. 이 .ptx 파일은 지금까지 이해할 수 있듯이 특정 GPU에 대해 적시에 컴파일 될 중간 표현입니다. 샘플에서는 cudaModuleMgr 클래스를 사용하여 cuModuleLoadDataEx를 통해이 파일을로드합니다.CUDA .ptx 파일은 이식 가능합니까?

.file 1 "C:/Users/******/AppData/Local/Temp/tmpxft_00002abc_00000000-7_NV12ToARGB_drvapi.cudafe2.gpu" 
    .file 2 "c:\program files (x86)\microsoft visual studio 10.0\vc\include\codeanalysis\sourceannotations.h" 
    .file 3 "C:/Program Files (x86)/NVIDIA GPU Computing Toolkit/CUDA/v5.0/include\crt/device_runtime.h" 
    .file 4 "C:/Program Files (x86)/NVIDIA GPU Computing Toolkit/CUDA/v5.0/include\host_defines.h" 
    .file 5 "C:/Program Files (x86)/NVIDIA GPU Computing Toolkit/CUDA/v5.0/include\builtin_types.h" 
    .file 6 "c:\program files (x86)\nvidia gpu computing toolkit\cuda\v5.0\include\device_types.h" 
    .file 7 "c:\program files (x86)\nvidia gpu computing toolkit\cuda\v5.0\include\host_defines.h" 
    .file 8 "c:\program files (x86)\nvidia gpu computing toolkit\cuda\v5.0\include\driver_types.h" 
    .file 9 "c:\program files (x86)\nvidia gpu computing toolkit\cuda\v5.0\include\surface_types.h" 
    .file 10 "c:\program files (x86)\nvidia gpu computing toolkit\cuda\v5.0\include\texture_types.h" 
    .file 11 "c:\program files (x86)\nvidia gpu computing toolkit\cuda\v5.0\include\vector_types.h" 
    .file 12 "c:\program files (x86)\nvidia gpu computing toolkit\cuda\v5.0\include\builtin_types.h" 
    .file 13 "C:/Program Files (x86)/NVIDIA GPU Computing Toolkit/CUDA/v5.0/include\device_launch_parameters.h" 
    .file 14 "c:\program files (x86)\nvidia gpu computing toolkit\cuda\v5.0\include\crt\storage_class.h" 
    .file 15 "c:\users\******\desktop\cudadecodesample\3_imaging\cudadecoded3d9\cudaProcessFrame.h" 
    .file 16 "c:\program files (x86)\nvidia gpu computing toolkit\cuda\v5.0\include\math_functions.h" 
    .file 17 "C:/Users/******/Desktop/CudaDecodeSample/3_Imaging/cudaDecodeD3D9/NV12ToARGB_drvapi.cu" 
    .file 18 "C:/Program Files (x86)/NVIDIA GPU Computing Toolkit/CUDA/v5.0/include\common_functions.h" 

내 질문은 :

.ptx 파일은 텍스트 형식이며, 나는 그것의 상단에있는 것을 볼 수 있습니다 즉 내 사용자 폴더를 포함하여 내 컴퓨터에 하드 코딩 된 경로의 무리입니다 다음 :이 파일은 컴파일시 생성되므로 모든 하드 코드 된 경로로 인해 내 컴퓨터에서만 작동합니까? CUDA SDK가 설치되지 않은 경우에도 프로그램이 모든 시스템에서 실행되도록하려면 어떻게해야합니까?

답변

5

.file 지시문은 디버깅 전용입니다. 정상적인 상황에서 코드가 컴파일되는 방식에는 영향을주지 않습니다. 그래서 저는 여러분이 컴파일러 옵션을 무시하거나 완전히 무시할 수 있다는 확신이 있습니다. 적어도 컴파일러 옵션 (타겟 코드 버전, 아키텍처 및 컴파일 크기)에 따라 아키텍처 및 기능 제한 내에서 코드는 이식성이 있습니다.

+2

플랫폼 비트 수와 호스트 ABI가 일정하면 PTX 파일이 이식 가능합니다. 64 비트 PTX 모듈은 32 비트 컨텍스트의 JIT 일 수 없습니다. PTX 모듈은 sizeof (long) == 8 인 플랫폼에서 sizeof (long) == 4 인 플랫폼 (즉, Linux에서 Windows)에서 런타임 오류를 유발할 수 있습니다. –