『漫游』酷论坛>『影音数码技术学习交流』>[求助] 關於 MT版 AVS

翡璃月@2010-03-22 14:06

x264 threads=12 都已經是個位數fps的速度了...
TNLMeans 如果不是 threads=12 fps根本就連個位數都不到...

運行方式不是 avs => x264 => outputfile ?
那如果... avs fps小於1 => x264 fps會大於1?
引用

roozhou@2010-03-22 14:11

引用
最初由 翡璃月 发布
x264 threads=12 都已經是個位數fps的速度了...
TNLMeans 如果不是 threads=12 fps根本就連個位數都不到...

運行方式不是 avs => x264 => outputfile ?
那如果... avs fps小於1 => x264 fps會大於1?


首先,TNLMeans是有窗口大小的,你用了画面分区的方式,又没设定Overlap,这个对结果是有影响的。

第二,你试过threads=11?=10?=9?
而且由于TNLMeans比x264速度慢,所以应该是TNLMeans的线程数多于x264,比如TNLMeans 8线程,x264 4线程,当然由于x264多线程本身的限制,需要乘以1.5用6线程。
引用

wolfsoft@2010-03-22 16:50

x264项目组自己建议,线程数最好不要突破12,否则对画面效果有明显影响

明显这俩字挺有意思。其实只要开了多线就有影响啊。只不过8线甚至12线影响不大罢了。不过我有次蛋疼的时候试过,开8线和开12线,在输出的q平均值上有明显差异。所以我想如果avs本身占用资源比较多,还是老老实实地跑缺省线程好了,不用整什么1.5......

嗯想起来顺便说说而已
引用

ssnake@2010-03-22 17:06

引用
最初由 wolfsoft 发布
还是老老实实地跑缺省线程好了,不用整什么1.5......
(看来不引用可能会引起误解嘛)

缺省就是1.5吧= =
引用

roozhou@2010-03-22 21:04

缺省1.5是输入端速度远远快于编码时用的。比如双核的机器如果输入端速度慢于编码,就应该用--threads 1 --thread-input
引用

ljwing@2010-03-22 22:04

引用
最初由 roozhou 发布
缺省1.5是输入端速度远远快于编码时用的。比如双核的机器如果输入端速度慢于编码,就应该用--threads 1 --thread-input

问一下"假定输入端慢于编码, --threads auto"会怎样?
引用

翡璃月@2010-03-22 22:47

輸入端 頗難慢於編碼吧....
如果不是把threads拉大
我看還在個位數以下慢慢跑....

且 avs 與 x264 又怎麼個別分配不同的 thread ?
引用

roozhou@2010-03-22 23:52

引用
最初由 翡璃月 发布
輸入端 頗難慢於編碼吧....
如果不是把threads拉大
我看還在個位數以下慢慢跑....

且 avs 與 x264 又怎麼個別分配不同的 thread ?

你那个TNLMeans就能让输入慢于编码。
只要用了--thread-input(默认开启),那avs就和x264跑在不同的thread里了,两者是异步运行的,你可以看成是两个进程,和avs2yuv | x264的效果是一样的。如果avs本身又有多线程,那同时运行的线程数就是两个模块的线程数相加,这是最简单的算术了。

引用
问一下"假定输入端慢于编码, --threads auto"会怎样?

线程过多,很多线程长期处于等待状态,同时线程切换更多导致cache miss增加,性能下降,线程多了也使编码质量下降。
就是说如果--threads 4就能达到极限速度,--threads 6只会降低质量,并且可能使速度更慢。
引用

翡璃月@2010-03-23 00:45

但 avs 的 cpu 使用率非常低
所以我才將他們都設成 threads=12
既然 avs 資源使用不完 何不將他繼續用於 x264 上呢?
引用

roozhou@2010-03-23 02:09

引用
最初由 翡璃月 发布
但 avs 的 cpu 使用率非常低
所以我才將他們都設成 threads=12
既然 avs 資源使用不完 何不將他繼續用於 x264 上呢?

你两句话自相矛盾。你需要的是合理的分配线程数使之达到最高的效率。

最简单的例子,你在你机器上开12个单线程的程序和开24个单线程的程序,结果都是任何时候只有12个线程在运行(实际上是6个)。现在也是一样,你avs开了12个线程,x264开了12线程,但是同一时刻最多只有12个线程在跑,但是如果你知道单线程下avs的速度是x264的两倍,那么你可以avs开4个线程,x264开8个线程,这样也能让CPU吃满,并且没有线程等待(理论最佳情况)。如果线程开得多,总的CPU时间会增加,而且x264的编码效率会下降。

P.S. 做事不要极端,要么单线程,要么threads=12,你就没考虑过2,3,4,5,6,7,8,9,10,11吗?
引用

«123»共3页

| TOP