搜索 社区服务 统计排行 帮助
  • 5813阅读
  • 39回复

[求助] 關於 MT版 AVS

楼层直达
级别: 新手上路
注册时间:
2007-04-16
在线时间:
0小时
发帖:
69
只看该作者 30楼 发表于: 2010-03-22
x264 threads=12 都已經是個位數fps的速度了...
TNLMeans 如果不是 threads=12 fps根本就連個位數都不到...

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

级别: 精灵王
注册时间:
2008-04-08
在线时间:
44小时
发帖:
2855
只看该作者 31楼 发表于: 2010-03-22
引用
最初由 翡璃月 发布
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线程。
级别: 工作组
注册时间:
2003-11-07
在线时间:
1小时
发帖:
7032
只看该作者 32楼 发表于: 2010-03-22
x264项目组自己建议,线程数最好不要突破12,否则对画面效果有明显影响

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

嗯想起来顺便说说而已

青空が眩しい 君がいる風景は
幸せのオーラ 溢れ出すの とまらないよ
駅前の噴水 虹を作っているよ
君を待つ時間さえも かけがえない プレシャスな時

=========================

FANSUB的历史,又翻过了新的一页
级别: 新手上路
注册时间:
2005-06-30
在线时间:
1小时
发帖:
529
只看该作者 33楼 发表于: 2010-03-22
引用
最初由 wolfsoft 发布
还是老老实实地跑缺省线程好了,不用整什么1.5......
(看来不引用可能会引起误解嘛)

缺省就是1.5吧= =

级别: 精灵王
注册时间:
2008-04-08
在线时间:
44小时
发帖:
2855
只看该作者 34楼 发表于: 2010-03-22
缺省1.5是输入端速度远远快于编码时用的。比如双核的机器如果输入端速度慢于编码,就应该用--threads 1 --thread-input
级别: 风云使者
注册时间:
2009-03-17
在线时间:
552小时
发帖:
1255
只看该作者 35楼 发表于: 2010-03-22
引用
最初由 roozhou 发布
缺省1.5是输入端速度远远快于编码时用的。比如双核的机器如果输入端速度慢于编码,就应该用--threads 1 --thread-input

问一下"假定输入端慢于编码, --threads auto"会怎样?
级别: 新手上路
注册时间:
2007-04-16
在线时间:
0小时
发帖:
69
只看该作者 36楼 发表于: 2010-03-22
輸入端 頗難慢於編碼吧....
如果不是把threads拉大
我看還在個位數以下慢慢跑....

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

级别: 精灵王
注册时间:
2008-04-08
在线时间:
44小时
发帖:
2855
只看该作者 37楼 发表于: 2010-03-22
引用
最初由 翡璃月 发布
輸入端 頗難慢於編碼吧....
如果不是把threads拉大
我看還在個位數以下慢慢跑....

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

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

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

线程过多,很多线程长期处于等待状态,同时线程切换更多导致cache miss增加,性能下降,线程多了也使编码质量下降。
就是说如果--threads 4就能达到极限速度,--threads 6只会降低质量,并且可能使速度更慢。
级别: 新手上路
注册时间:
2007-04-16
在线时间:
0小时
发帖:
69
只看该作者 38楼 发表于: 2010-03-23
但 avs 的 cpu 使用率非常低
所以我才將他們都設成 threads=12
既然 avs 資源使用不完 何不將他繼續用於 x264 上呢?

级别: 精灵王
注册时间:
2008-04-08
在线时间:
44小时
发帖:
2855
只看该作者 39楼 发表于: 2010-03-23
引用
最初由 翡璃月 发布
但 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吗?
快速回复

限150 字节
上一个 下一个