시스템 중단 후 NVENC에 대한 CUDA 컨텍스트를 찾을 수 없습니다.

시스템 중단 후 NVENC에 대한 CUDA 컨텍스트를 찾을 수 없습니다.

문맥

최근에 nVidia 드라이버를 375.26으로 업데이트하고 내 컴퓨터에서 FFmpeg N-83180-gcf3affa 및 OBS 17.0.2-5-g43e4a2e를 다시 컴파일했습니다(숫자가 아무 의미가 없다면 죄송합니다. 어떤 버전 번호가 중요한지 잘 모르겠습니다. ) 데비안 머신. RAM을 일시 중단하면 OBS 작동이 중지되며 유일한 해결 방법은 컴퓨터를 다시 시작하는 것입니다.

재생산 방법

  1. OBS 실행
  2. 출력 구성:

    • 출력을 NVENC H.264 및 .mp4로 설정
    • CBR 사용
    • 비트레이트 = 200K
    • Kf 간격 = 0
    • 낮은 대기 시간, 고품질 사전 설정, 마스터, 자동
    • 2패스 인코딩 활성화
    • 그래픽 카드 = 0
    • B 프레임 = 0
  3. 녹음을 시작하고 중지하여 작동하는지 확인하세요.

  4. 로그인 작업으로 이동하여 일시 중지를 클릭하세요.
  5. 재부팅하고 로그인하세요
  6. 다음 오류로 인해 녹화가 시작되고 OBS가 실패합니다.

    [h264_nvenc @ 0x3fdd1e0] Failed creating CUDA context for NVENC: 0x3e7
    [h264_nvenc @ 0x3fdd1e0] No NVENC capable devices found
    

시스템 메시지

  • 위에 나열된 드라이버/소프트웨어 버전
  • 그래픽 카드: MSI GTX 970
  • uname -a: Linux 버전 3.16.0-4-amd64, #1 SMP Debian 3.16.39-1(2016-12-30)
  • 운영 체제: 데비안 8.7 제시

XFCE 4.10이 작업 버튼 작동 방식에 영향을 미치는 경우 이를 사용하겠습니다.

질문

컴퓨터를 깨운 후 이 오류를 방지하기 위해 매번 재부팅하지 않는 방법이 있습니까?


편집 1

OBS가 이 문제의 원인이라는 것을 알고 있습니다.

테스트 사례 1:

  1. 컴퓨터를 시작하고 ffmpeg의 h264_nvenc 인코더를 사용하여 비디오 파일을 출력합니다.
  2. RAM에 일시중단
  3. 로그인하고 1단계를 성공적으로 반복하세요.

테스트 사례 2:

  1. 컴퓨터를 시작하고 OBS를 사용하여 h264_nvenc를 사용하여 비디오를 녹화합니다.
  2. 사직하다OBS
  3. RAM에 일시중단
  4. 로그인하고 2단계를 성공적으로 반복하세요.

테스트 사례 3:

  1. 컴퓨터를 시작하고 OBS를 사용하여 h264_nvenc로 비디오를 녹화합니다.
  2. RAM에 일시중단
  3. 로그인, 실패 및 표시Cannot init CUDA

내 생각엔 OBS는 녹화가 중지될 때 스트림을 닫지 않고, 성능(?) 이유로 프로그램을 종료할 때까지 스트림에 남아 있을 수 있다는 것입니다. 이 문제를 해결하는 방법을 모르겠습니다. 오류가 발생하면 OBS를 다시 시작해도 아무런 효과가 없으며 시스템을 다시 시작해야 합니다.

GPU가 다른 모든 것을 완벽하게 처리할 수 있는 것처럼 보이지만 그럼에도 불구하고 glxinfonvidia-smi모든 것은 nvidia-settingsGPU가 실제로 다른 작업을 처리하는 데 사용되고 있음을 확인시켜 줍니다. RAM을 정지한 후 NVENC가 유일한 문제인 것 같습니다.


편집 2

다음은 dmesg로그입니다: https://www.diffchecker.com/wto7KPJZ

"원본" 탭은 일시 중지가 수행된 후 발생한 변경 사항이고, "변경됨" 탭은 제가 제안한 수정 사항이 수행된 후 발생한 변경 사항입니다.

전체 dmesg출력: https://0paste.com/10601#hl

답변1

FFmpeg는 시스템을 일시 중단하기 전에 h264_nvenc 스트림을 시작(및 중지하지만 필수는 아님)하는 경우에만 CUDA init를 잠급니다. OBS가 정지되기 전에 h264_nvenc 인코더로 아무 것도 기록하지 않으면 다시 로그인하면 제대로 작동할 것입니다.

로그인 후 OBS가 잠긴 경우 다음과 같은 방법으로 사용할 수 있습니다.

  1. OBS 종료
  2. 터미널에서 실행:

    sudo rmmod nvidia_uvm && sudo modprobe nvidia_uvm
    
  3. OBS를 다시 열어보세요

  4. ???
  5. 이익

제거해도 nvidia_uvm작동하지 않으면 DRM 및 패턴 세트 모듈도 다시 로드해야 할 수 있습니다. 하지만 저는 이 문제가 발생하지 않았습니다.

관련 정보