HEVCエンコード時、GPU使用率が0%から150%以上になったりと表示されるんですが、正常なのでしょうか?以前は100%を超える表示はなかったような気がします。
表示上の問題ですので、エンコード自体に問題はありません。
GPUやOS等環境によって、使用率のカウンタの名前が違うようで、どうも意図しない集計がされているケースがあるため起こるようです。
分かりました。ありがとうございます。
NVEncをLinuxで使用させていただいています。
最近5.40→6.05へ更新したのですが、いつも出力させていたSSIMの表示がなくなっていることに気付きました。
エンコードオプションは変更しておらず、ログにもssimの表示が出ているにもかかわらず、最後のSSIM表示がなくエンコードが終了します。
こちらの見落としなどがないか、アドバイスいただけますと幸いです。
以下ログを貼ります。お目汚しご容赦ください。
【5.40】
[33mavs: avs has no audio.
[39m[39mNVEnc (x64) 5.40 (r2046) by rigaya, Oct 10 2021 00:13:08 (gcc 11.1.0/Linux)
OS Version Arch Linux (5.17.4-arch1-1)
CPU Intel Core i5-7400 @ 3.00GHz (4C/4T)
GPU #0: NVIDIA GeForce GTX 1650 (896 cores, 1635 MHz)[PCIe3x16][510.60]
NVENC / CUDA NVENC API 11.1, CUDA 11.6, schedule mode: auto
Input Buffers CUDA, 45 frames
Input Info AviSynth+ 3.7.2 (x86_64)(yv12)->nv12 [AVX2], 1440x1080, 30000/1001 fps
Vpp Filters copyHtoD
cspconv(nv12 -> yv12(16bit))
afs: clip(T 16, B 16, L 32, R 32), switch 0, coeff_shift 192
thre(shift 128, deint 48, Ymotion 112, Cmotion 224)
level 3, shift on, drop off, smooth off, force24 off
tune off, tb_order 1(tff), rff on, timecode off, log off
deband: mode 1, range 15, threY 15, threCb 15, threCr 15
ditherY 15, ditherC 15, blurFirst no, randEachFrame yes
cspconv(yv12(16bit) -> p010)
ssim (yv12(10bit))
Output Info H.265/HEVC main10 @ Level auto
1440x1080p 4:3 29.970fps (30000/1001fps)
avwriter: hevc => mp4
Encoder Preset default
Rate Control CQP I:22 P:26 B:29
ChromaQPOffset cb:0 cr:0
Lookahead on, 32 frames, Adaptive I, B Insert
GOP length 300 frames
B frames 4 frames [ref mode: each]
Ref frames 8 frames, MultiRef L0:auto L1:auto
AQ on
CU max / min auto / auto
Others mv:auto
〜途中省略〜
[39m
[39m[39mencoded 80018 frames, 251.07 fps, 2200.88 kbps, 700.50 MB
[39m[39mencode time 0:05:18, CPU: 0.0%, GPU: 46.0%, VE: 51.3%, VD: 12.5%, GPUClock: 1895MHz, VEClock: 1760MHz
[39m[39mframe type IDR 403
[39m[39mframe type I 403, avgQP 22.00, total size 48.58 MB
[39m[39mframe type P 17266, avgQP 26.00, total size 404.12 MB
[39m[39mframe type B 62349, avgQP 29.00, total size 247.80 MB
[39m[39mssim/psnr/vmaf: SSIM YUV: 0.970970 (15.371569), 0.979196 (16.818515), 0.980488 (17.096930), All: 0.973927 (15.838166), (Frames: 80018)
【6.05】
[39m[33mavs: avs has no audio.
[39m[39mNVEnc (x64) 6.05 (r2215) by rigaya, Jun 25 2022 02:35:19 (gcc 11.2.0/Linux)
OS Version Arch Linux (5.17.4-arch1-1)
CPU Intel Core i5-7400 @ 3.00GHz (4C/4T)
GPU #0: NVIDIA GeForce GTX 1650 (896 cores, 1635 MHz)[PCIe3x16][510.60]
NVENC / CUDA NVENC API 11.1, CUDA 11.6, schedule mode: auto
Input Buffers CUDA, 45 frames
Input Info AviSynth+ 3.7.2 (x86_64)(yv12)->nv12 [AVX2], 1440x1080, 30000/1001 fps
Vpp Filters copyHtoD
cspconv(nv12 -> yv12(16bit))
afs: clip(T 16, B 16, L 32, R 32), switch 0, coeff_shift 192
thre(shift 128, deint 48, Ymotion 112, Cmotion 224)
level 4, shift on, drop off, smooth off, force24 off
tune off, tb_order 1(tff), rff on, timecode off, log off
deband: mode 1, range 15, threY 15, threCb 15, threCr 15
ditherY 15, ditherC 15, blurFirst no, randEachFrame yes
cspconv(yv12(16bit) -> p010)
ssim (yv12(10bit))
Output Info H.265/HEVC main10 @ Level auto
1440x1080p 4:3 29.970fps (30000/1001fps)
avwriter: hevc => mp4
Encoder Preset default
Rate Control CQP I:22 P:27 B:30
ChromaQPOffset cb:0 cr:0
Lookahead on, 32 frames, Adaptive I, B Insert
GOP length 300 frames
B frames 4 frames [ref mode: each]
Ref frames 8 frames, MultiRef L0:auto L1:auto
AQ on
CU max / min auto / auto
Others mv:auto
〜途中省略〜
[100.0%] 82631/82715 frames: 234.91 fps, 1384 kb/s, remain 0:00:00, GPU 48%, VE 53%, VD 13%, est out size 454.9MB
←SSIMの表示なく終了
コメントありがとうございます。ただすみません、残念ながら現状問題を再現できていないです…。
Linux環境ということで、WSL2上のUbuntu 20.04にnvencc_6.05_Ubuntu20.04_amd64.debをインストールしてテストしています。
NVEnc 6.05 Linux版、HEVC 10bitエンコーダ、ソフトウェアデコード、afs/deband使用といった点をそろえていますが、SSIM表示はできております。
rigaya@rigaya2-pc:~$ nvencc -i /mnt/f/temp/bake_01.ts -o ~/test.mp4 --ssim -c hevc --output-depth 10 --avsw --vpp-afs --vpp-deband --lookahead 32 --ref 8 --tff -b 4 --bref-mode each --cqp 22:27:30
--------------------------------------------------------------------------------
/home/rigaya/test.mp4
--------------------------------------------------------------------------------
[mpeg2video @ 0x55b01e1d1840] Invalid frame dimensions 0x0.
[mpeg2video @ 0x55b01e1d1840] Invalid frame dimensions 0x0.
[mpeg2video @ 0x55b01e1d1840] Invalid frame dimensions 0x0.
[mpeg2video @ 0x55b01e1d1840] Invalid frame dimensions 0x0.
[mpeg2video @ 0x55b01e1d1840] Invalid frame dimensions 0x0.
perf monitor: Failed to start NVML Monitoring for "0000:01:00.0": A query to find an object was unsuccessful.
NVEnc (x64) 6.05 (r2215) by rigaya, Jun 16 2022 13:03:32 (gcc 9.4.0/Linux)
OS Version Ubuntu 20.04.4 LTS (5.10.16.3-microsoft-standard-WSL2)
CPU 12th Gen Intel Core i9-12900K (12C/24T)
GPU #0: NVIDIA GeForce RTX 2070 (2304 cores, 1710 MHz)[2147483.64]
NVENC / CUDA NVENC API 11.1, CUDA 11.7, schedule mode: auto
Input Buffers CUDA, 45 frames
Input Info avsw: mpeg2video(yv12)->nv12 [AVX2], 1920x1080, 30000/1001 fps
AVSync vfr
Vpp Filters copyHtoD
cspconv(nv12 -> yv12(16bit))
afs: clip(T 16, B 16, L 32, R 32), switch 0, coeff_shift 192
thre(shift 128, deint 48, Ymotion 112, Cmotion 224)
level 3, shift on, drop off, smooth off, force24 off
tune off, tb_order 1(tff), rff off, timecode off, log off
deband: mode 1, range 15, threY 15, threCb 15, threCr 15
ditherY 15, ditherC 15, blurFirst no, randEachFrame no
cspconv(yv12(16bit) -> p010)
ssim (yv12(10bit))
Output Info H.265/HEVC main10 @ Level auto
1920x1080p 1:1 29.970fps (30000/1001fps)
avwriter: hevc => mp4
Encoder Preset default
Rate Control CQP I:22 P:27 B:30
ChromaQPOffset cb:0 cr:0
Lookahead on, 32 frames, Adaptive I, B Insert
GOP length 300 frames
B frames 4 frames [ref mode: each]
Ref frames 8 frames, MultiRef L0:auto L1:auto
AQ off
CU max / min auto / auto
Others mv:auto
[mpeg2video @ 0x55b01e1ab4c0] ac-tex damaged at 69 390:00:00, est out size 213.8MB
[mpeg2video @ 0x55b01e1ab4c0] Warning MVs not available
encoded 51170 frames, 303.93 fps, 1051.62 kbps, 214.04 MB
encode time 0:02:48, CPULoad: 0.0%
frame type IDR 475
frame type I 475, avgQP 22.00, total size 26.57 MB
frame type P 13057, avgQP 27.00, total size 125.12 MB
frame type B 37638, avgQP 30.00, total size 62.35 MB
ssim/psnr/vmaf: SSIM YUV: 0.984082 (17.981242), 0.985118 (18.273521), 0.985060 (18.256485), All: 0.984418 (18.073781), (Frames: 51170)
念のため、ご使用のコマンドラインを教えてくいただけますでしょうか。
rigaya様
すみません、nvenccの出力をログにリダイレクトしていて気付かなかったのですが、コマンドラインで直接実行してみたら、100%に達した直後にnvenccがSegmentation Faultで落ちておりました...
gitからソースを落として自環境でビルドしたものですので、ビルド環境の問題を疑ってみます。ご面倒おかけして申し訳ありませんでした。
ちなみに以下がコマンドラインです。
nvencc --avs --input-analyze 30 --interlace tff --vpp-afs preset=cinema,24fps=true,smooth=off,rff=true --vpp-deband rand_each_frame -c hevc --output-depth 10 --cqp 22:27:30 --aq --aq-strength 0 --lookahead 32 --bframes 4 --bref-mode each --ref 8 --dar 16:9 --key-on-chapter --ssim -i in_cutcm.avs -o out.mp4
返信ありがとうございます。
いただいたオプションでもチェックしてみましたが、昨日の環境では問題なかったです。Segmentation Faultとのことなので、再現できれば比較的容易に原因がわかりそうなのですが…。
rigaya様
何度も申し訳ありません。
環境をアップデートし、再ビルドしてみましたが症状は改善しませんでした。
ついでにデバッガ(gdb)上で実行し、SEGVが発生したところのスタックトレースをとってみました。
Thread 1 "nvencc" received signal SIGSEGV, Segmentation fault.
0x000015555169c89e in free () from /usr/lib/libc.so.6
(gdb) bt
#0 0x000015555169c89e in free () at /usr/lib/libc.so.6
#1 0x000015554510c1ba in Cache::~Cache() () at /usr/lib/libvmaf.so.1
#2 0x000015553ab4d06e in Cache::~Cache() () at /usr/lib/libavisynth.so
#3 0x000015553ab6e58e in PClip::~PClip() () at /usr/lib/libavisynth.so
#4 0x000015553ab4d0de in CacheGuard::~CacheGuard() ()
at /usr/lib/libavisynth.so
#5 0x000015553ab4d11e in CacheGuard::~CacheGuard() ()
at /usr/lib/libavisynth.so
#6 0x000015553ab6e58e in PClip::~PClip() () at /usr/lib/libavisynth.so
#7 0x000015553ab4cf23 in avs_release_clip () at /usr/lib/libavisynth.so
#8 0x00005555557482ae in RGYInputAvs::Close() ()
#9 0x0000555555600717 in NVEncCore::Encode() ()
#10 0x00005555555bf18e in main ()
何かのご参考になるでしょうか。
スタックトレースの情報ありがとうございます。
avs読み込みを閉じるところで落ちてますね…(avs_release_clip)。
エンコード終了時には、読み込みの終了→書き出しの終了→ssimの集計と出力と進むので、ssimの表示がでないのはこのためと思われます。
ただ、まだavs読み込みを閉じるのに失敗する理由はわからないです。こちらでも時間を見つけてLinux上にAvisynthを入れてみたいと思います。
rigaya様
ありがとうございます。エンコード自体は正常に終わっているようなので、しばらくはこのまま使おうと思いますが、Avisynthの入れ替えも近いうちに試してみます。
お付き合いいただきありがとうございました。
すみません、スタックトレースで見落としていたのですが、avs読み込みの終了時に、
Cache::~Cache() () at /usr/lib/libvmaf.so.1
とあるので、libvmafの中で異常終了しているのかもしれません。
avsの中でlibvmafがどう使用されるのかはちょっとわからないですが、そのあたりが一因かもしれないです。