Linux* OS 호스트에서 GDB*용 인텔® 배포 시작하기
응용 프로그램 디버깅을 위해 GDB*용 인텔® 배포를 사용하십시오. 아래 지침에 따라 디버거를 설정하여 CPU 및 GPU 장치에 커널이 오프로드된 응용 프로그램을 디버깅하십시오.
GDB*용 인텔® 배포판은 인텔® oneAPI 기본 툴킷의 일부로 사용할 수 있습니다. oneAPI 툴킷에 대한 자세한 내용은 제품 페이지.
방문하세요 릴리스 노트 주요 기능, 새로운 기능 및 알려진 문제에 대한 정보를 보려면 페이지를 참조하십시오.
SYCL*을 사용할 수 있습니다.ampGDB*용 인텔® 배포판을 시작하려면 파일 코드인 Array Transform을 사용하십시오. sample는 오류를 생성하지 않으며 단순히 디버거 기능을 보여줍니다. 코드는 짝수인지 홀수인지에 따라 입력 배열의 요소를 처리하고 출력 배열을 생성합니다. 당신은 s를 사용할 수 있습니다amp명령줄 인수를 통해 선택한 장치를 지정하여 CPU 또는 GPU 모두에서 디버그할 수 있습니다. GPU 디버깅에는 원격 디버깅을 위한 두 개의 시스템과 추가 구성이 필요할 수 있습니다.
필수 조건
GPU에서 디버그하려는 경우 최신 GPU 드라이버를 설치하고 이를 사용하도록 시스템을 구성하십시오. 참조 Linux* OS용 인텔® oneAPI 툴킷 설치 안내서. 지시를 따르다 인텔 GPU 드라이버 설치 시스템과 일치하는 GPU 드라이버를 설치합니다.
또한 GDB*용 인텔® 배포판으로 GPU를 디버깅하기 위해 Visual Studio Code*용 확장을 설치할 수 있습니다. 참조 Intel® oneAPI 툴킷 가이드와 함께 Visual Studio Code 사용.
GPU 디버거 설정
GPU 디버거를 설정하려면 루트 액세스 권한이 있어야 합니다.
메모 커널 디버깅 중에는 GPU가 정지되고 대상 시스템에서 비디오 출력을 사용할 수 없습니다. 이 때문에 시스템의 GPU 카드가 그래픽 출력에도 사용되는 경우 대상 시스템에서 GPU를 디버깅할 수 없습니다. 이 경우 ssh를 통해 머신에 연결합니다.
1. GPU 디버깅을 목표로 한다면 GPU 디버깅을 지원하는 리눅스 커널이 필요합니다.
a. 의 지침을 따르십시오. 범용 GPU 기능을 위한 인텔® 소프트웨어 필요한 드라이버를 다운로드하고 설치합니다.
b. 커널에서 i915 디버그 지원 활성화:
a. 터미널을 엽니다.
b. 그럽 열기 file /etc/default에 있습니다.
c. 땅벌레에서 file, GRUB_CMDLINE_LINUX_DEFAULT=”” 줄을 찾습니다.
d. 따옴표("") 사이에 다음 텍스트를 입력합니다.
i915.debug_eu=1
메모 기본적으로 GPU 드라이버는 워크로드가 특정 시간보다 오래 GPU에서 실행되는 것을 허용하지 않습니다. 드라이버는 중단을 방지하기 위해 GPU를 재설정하여 이러한 장기 실행 워크로드를 종료합니다. 응용 프로그램이 디버거에서 실행 중인 경우 드라이버의 hangcheck 메커니즘이 비활성화됩니다. 디버거를 연결하지 않고 긴 컴퓨팅 워크로드를 실행할 계획이라면 적용을 고려하십시오. GPU: 행체크 비활성화 추가하여
i915.enable_hangcheck=0
같은 GRUB_CMDLINE_LINUX_DEFAULT 라인.
c. 이러한 변경 사항을 적용하려면 GRUB를 업데이트하십시오.
sudo 업데이트-grub
d. 재부팅.
2. 툴킷 설치 루트에 있는 setvars 스크립트를 소싱하여 CLI 환경을 설정하십시오.
리눅스(sudo):
소스 /opt/intel/oneapi/setvars.sh
리눅스(사용자):
소스 ~/intel/oneapi/setvars.sh
3. 설정 환경
Intel® oneAPI Level Zero에 대한 디버거 지원을 활성화하려면 다음 환경 변수를 사용하십시오.
내보내기 ZET_ENABLE_PROGRAM_DEBUGGING=1
내보내기 IGC_EnableGTLocationDebugging=1
4. 시스템 점검
모든 것이 준비되면 다음 명령을 실행하여 시스템 구성이 안정적인지 확인하십시오.
python3 /path/to/intel/oneapi/diagnostics/latest/diagnostics.py –filter debugger_sys_check -force
잘 구성된 시스템의 가능한 출력은 다음과 같습니다.
…
확인 결과:
================================================= ===============================
이름 확인: debugger_sys_check
설명: 이 검사는 환경이 gdb(Intel(R) Distribution for GDB*)를 사용할 준비가 되었는지 확인합니다.
결과 상태: 통과
디버거를 찾았습니다.
libipt를 찾았습니다.
리비가 찾았다.
i915 디버그가 활성화되었습니다.
환경 변수가 정확합니다. ==================================================== ==================================
1 확인: 1 통과, 0 실패, 0 경고, 0 오류
콘솔 출력 file: /path/to/logs/diagnostics_filter_debugger_sys_check_force.txt JSON 출력 file: /경로/to/diagnostics/logs/diagnostics_filter_debugger_sys_check_force.json …
디버그 정보로 프로그램 컴파일
당신은 s를 사용할 수 있습니다amp애플리케이션 디버거를 빠르게 시작하기 위한 프로젝트인 Array Transform.
1. S를 얻으려면amp파일에서 다음 방법 중 하나를 선택합니다.
- oneAPI CLI S 사용amp레 브라우저 시작하기 범주에서 배열 변환을 선택합니다.
- 에서 다운로드 GitHub*.
2. s의 src로 이동amp르 프로젝트:
cd 배열 변환/src
3. 디버그 정보(-g 플래그)를 활성화하고 최적화(-O0 플래그)를 해제하여 애플리케이션을 컴파일합니다.
안정적이고 정확한 디버그 환경을 위해 최적화를 비활성화하는 것이 좋습니다. 이는 컴파일러 최적화 후 코드 변경으로 인한 혼란을 방지하는 데 도움이 됩니다.
메모 최적화가 활성화된 상태(-O2 플래그)로 프로그램을 계속 컴파일할 수 있으며, 이는 GPU 어셈블리 디버깅을 목표로 하는 경우 유용할 수 있습니다.
여러 가지 방법으로 프로그램을 컴파일할 수 있습니다. 옵션 1과 2는 JIT(Just-In-Time) 컴파일을 사용하며 이는 s를 디버그하는 데 권장됩니다.amp르. 옵션 3은 AOT(ahead-of-time) 컴파일을 사용합니다.
- 옵션 1. CMake를 사용할 수 있습니다. file 애플리케이션을 구성하고 빌드합니다. 참조 읽어주세요 s의amp지침을 위해.
메모 씨메이크 file s와 함께 제공ample는 이미 -g -O0 플래그를 전달합니다.
- 옵션 2. array-transform.cpp s를 컴파일하려면ampCMake가 없는 애플리케이션 file, 다음 명령을 실행하십시오.
icpx -fsycl -g -O0 배열 변환.cpp -o 배열 변환
컴파일과 링크가 별도로 수행되는 경우 링크 단계에서 -g -O0 플래그를 유지하십시오. 연결 단계는 icpx가 이러한 플래그를 변환하여 런타임에 장치 컴파일러에 전달하는 것입니다. 전amp르 :
icpx -fsycl -g -O0 -c 배열 변환.cpp
icpx -fsycl -g -O0 배열 변환.o -o 배열 변환
- 옵션 3. AOT 컴파일을 사용하여 런타임 시 JIT 컴파일 시간이 길어지는 것을 방지할 수 있습니다. JIT 컴파일은 디버거에서 큰 커널의 경우 훨씬 더 오래 걸릴 수 있습니다. AOT(Ahead-of-Time) 컴파일 모드를 사용하려면 다음을 수행하십시오.
• GPU에서 디버깅하는 경우:
프로그램 실행에 사용할 장치를 지정하십시오. 예를 들어ample, -device dg2-g10 인텔® 데이터 센터 GPU Flex 140 그래픽용. 지원되는 옵션 목록 및 AOT 컴파일에 대한 자세한 내용은 다음을 참조하십시오. 인텔® oneAPI DPC++ 컴파일러 개발자 안내서 및 참조.
예를 들어amp르 :
icpx -fsycl -g -O0 -fsycl-targets=spir64_gen -Xs "-device dg2-g10" array-transform.cpp -o arraytransform
Ahead-of-Time 컴파일에는 OpenCLTM 오프라인 컴파일러(OC Compiler LOC)가 필요합니다. 자세한 내용은 "OpenCLTM 오프라인 컴파일러(OCLOC) 설치" 섹션을 참조하십시오. 설치 가이드.
• CPU에서 디버깅하는 경우:
icpx -fsycl -g -O0 -fsycl-targets=spir64_x86_64 배열 변환.cpp -o 배열 변환
디버그 세션 시작
디버그 세션을 시작합니다.
1. 다음과 같이 GDB*용 인텔® 배포를 시작합니다.
gdb-oneapi 배열 변환
(gdb) 프롬프트가 표시되어야 합니다.
2. 커널이 올바른 장치로 오프로드되었는지 확인하려면 다음 단계를 수행하십시오. (gdb) 프롬프트에서 실행 명령을 실행할 때 다음을 전달하십시오. 씨퓨, 그래픽 카드 or 촉진 신경 논쟁:
- CPU에서 디버깅하는 경우:
실행 CPU
Examp파일 출력:
[SYCL] 사용 장치: [Intel(R) OpenCL]의 [Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz]- GPU에서 디버깅하는 경우:
실행 GPU
Examp파일 출력:
[SYCL] 사용 장치: [Intel(R) LevelZero]의 [Intel(R) Data Center GPU Flex Series 140 [0x56c1]]- FPGA 에뮬레이터에서 디버깅하려면:
가속기를 실행
Examp파일 출력:
[SYCL] 사용 장치: [Intel(R) FPGA Emulation Platform for OpenCL(TM) 소프트웨어]의 [Intel(R) FPGA Emulation Device]메모 cpu, gpu 및 accelerator 매개변수는 Array Transform 애플리케이션에 고유합니다.
3. GDB*용 인텔® 배포판을 종료하려면:
그만두다
사용자의 편의를 위해 일반적인 GDB*용 인텔® 배포판 명령이 다음에서 제공됩니다. 참조 시트.
배열 변환을 디버깅하려면ampGDB*용 인텔® 배포에 대해 자세히 알아보고 다음을 사용하여 기본 디버깅 시나리오를 살펴보십시오. 지도 시간.
더 알아보기
문서 | 설명 |
자습서: GDB*용 인텔® 배포로 디버깅 | 이 문서에서는 GDB*용 인텔® 배포판을 사용하여 SYCL* 및 OpenCL을 디버깅하는 동안 따라야 할 기본 시나리오를 설명합니다. |
GDB*용 인텔® 배포판 사용자 가이드 | 이 문서는 GDB*용 인텔® 배포로 완료할 수 있는 모든 일반 작업을 설명하고 필요한 기술 세부 정보를 제공합니다. |
GDB*용 인텔® 배포판 출시 정보 | 노트에는 GDB*용 인텔® 배포의 주요 기능, 새로운 기능 및 알려진 문제에 대한 정보가 포함되어 있습니다. |
oneAPI 제품 페이지 | 이 페이지에는 oneAPI 툴킷에 대한 간략한 소개와 유용한 리소스에 대한 링크가 포함되어 있습니다. |
GDB* 참조 시트용 인텔® 배포판 | 이 한 페이지 문서에서는 GDB*용 인텔® 배포 전제 조건과 유용한 명령에 대해 간략하게 설명합니다. |
야코비 Sample | 이 작은 SYCL* 애플리케이션에는 버그가 있는 버전과 수정된 버전의 두 가지 버전이 있습니다. 사용ampGDB*용 인텔® 배포판으로 응용 프로그램 디버깅을 실행할 수 있습니다. |
고지 및 면책 사항
인텔 기술은 활성화 된 하드웨어, 소프트웨어 또는 서비스 활성화가 필요할 수 있습니다.
어떤 제품이나 구성 요소도 절대적으로 안전할 수 없습니다.
비용과 결과는 다를 수 있습니다.
© 인텔사. 인텔, 인텔 로고 및 기타 인텔 마크는 인텔사 또는 그 자회사의 상표입니다. 다른 이름과 브랜드는 다른 사람의 자산으로 주장될 수 있습니다.
이 문서는 어떠한 지적 재산권에 대한 라이선스(명시적이든 묵시적이든, 금반언에 의하든 그렇지 않든)를 부여하지 않습니다.
설명된 제품에는 정오표로 알려진 설계 결함이나 오류가 포함되어 있을 수 있으며, 이로 인해 제품이 게시된 사양과 다를 수 있습니다. 현재 특성화된 정오표는 요청 시 제공됩니다.
인텔은 상업성, 특정 목적에의 적합성 및 비침해에 대한 묵시적 보증을 포함하되 이에 국한되지 않는 모든 명시적 및 묵시적 보증은 물론 수행 과정, 거래 과정 또는 거래 사용 과정에서 발생하는 모든 보증을 부인합니다.
OpenCL 및 OpenCL 로고는 Apple Inc.의 상표이며 Khronos의 허가를 받아 사용됩니다.
문서 / 리소스
![]() |
Linux OS 호스트의 GDB용 인텔 배포판 [PDF 파일] 사용자 가이드 Linux OS 호스트의 GDB, Linux OS 호스트의 GDB, Linux OS 호스트, OS 호스트, 호스트에 대한 배포 |