- 1 : 2024/11/11(月) 18:18:58.83 ID:t9CKUigHd1111
ビデオ・オーディオを扱うアプリの多くで採用されているオープンソースライブラリ「FFmpeg」で、驚くべきパフォーマンス向上が達成されました。
アセンブリ言語(assembly)を手書きすることで、94倍も処理速度が向上したとのこと。この試みが行われたのはAV1デコーダー「dav1d」においてですが、もともと約8%がアセンブリなのだそうです。
そのほかはC/C++言語のソースコードとして記述され、CPUが直接理解できる機械語にコンパイル(変換)された上で実行されています。しかし、コンパイラーによる変換に頼らず、人の手でアセンブリを記述し、最新CPUに搭載されている「SSSE3」「AVX2」「AVX-512」といった拡張命令を積極的に活用することで、思った以上の効率化が実現できたのだとか。
コンパイラーもそうした最新のCPU拡張命令を活用するオプションがあり、人手を介さなくてもかなりの最適化を行ってくれるはずですが、細部には改善の余地が多く残されているのかもしれません。
もしかすると、将来バージョンの「FFmpeg」はかなり速くなる……のかも。そうなれば、「FFmpeg」を採用するアプリにも恩恵は大きいでしょう。「FFmpeg」の開発チームは、近いうちにこのアプローチに関するチュートリアルを提供するとしています。
筆者の手には負えそうにありませんが、興味ある方はウォッチしてみるとよいでしょう。マルチメディアライブラリ「FFmpeg」がアセンブリ言語の手書きで爆速になったという報告
https://forest.watch.impress.co.jp/docs/serial/yajiuma/1638345.html- 2 : 2024/11/11(月) 18:20:42.01 ID:arKg2gHU01111
- インストールできるCPU限られるのか?
- 9 : 2024/11/11(月) 18:23:34.26 ID:MBavmrnT01111
- >>2
AVX512は最近のAMD64のCPUにはだいたいついてるだろ
ARM Neon用は別で書いてるだろうけど - 62 : 2024/11/11(月) 18:40:40.61 ID:Q9zAwzNj01111
- >>2
限られないんじゃね?
まだ中身見てないけど普通こういうのは全部のCPUで動くジェネリックな実装があって
特定の CPU 拡張が存在するとき個別のアセンブリ実装に切り替わる - 3 : 2024/11/11(月) 18:21:24.34 ID:arKg2gHU01111
- すべてのコアに対応したアセンブラって書けるの?
- 66 : 2024/11/11(月) 18:41:02.99 ID:Q9zAwzNj01111
- >>3
不可能
個別対応になる - 4 : 2024/11/11(月) 18:21:36.13 ID:UtY5uAwW01111
- コンパイラさん…どうして…
- 5 : 2024/11/11(月) 18:22:07.81 ID:UtY5uAwW01111
- お絵かきソフトのSAIはアセンブラで書かれてたんだよね
- 6 : 2024/11/11(月) 18:22:12.56 ID:aB83Ffv901111
- 天才の所業やな
- 7 : 2024/11/11(月) 18:22:28.32 ID:/LqusvjW01111
- アセンブリ言語ってなに?安倍晋三で例えて
- 10 : 2024/11/11(月) 18:23:35.99 ID:arKg2gHU01111
- >>7
心臓と晋三の間を埋める言語じゃないかな?よーわからんけどw - 44 : 2024/11/11(月) 18:35:57.89 ID:yBLqDHeb01111
- >>7
アベ言語「隠蔽というのはですね、隠蔽というのはー、隠蔽というのはじゃあ、わたくしが隠蔽したんですか」 - 8 : 2024/11/11(月) 18:23:13.13 ID:dIj8TwUGd1111
- っぱ時代はアセンブラよ😤
- 11 : 2024/11/11(月) 18:23:51.58 ID:9fUsHCjj01111
- 開始したら他の全ての処理が止まってマウスすら動かなくなったりしそう
- 12 : 2024/11/11(月) 18:24:25.79 ID:99jn2jtPa1111
- 人の手のぬくもりがあるほうが高速化できる
- 13 : 2024/11/11(月) 18:24:35.21 ID:moVrz2YS01111
- 動画編集ツール作ってるがこれ導入してえ
遅すぎるんよどれも - 17 : 2024/11/11(月) 18:27:09.10 ID:MBavmrnT01111
- >>13
たぶんAV1の動画を読みこむとこしか速くならんけどオープンソースだから使えるは使えると思う - 14 : 2024/11/11(月) 18:26:04.98 ID:8JvAKKUO01111
- Intel CPUはSIMD命令酷使して負荷かけるとクロック下がる欠陥設計なんでおすすめしません(´・ω・`)
- 15 : 2024/11/11(月) 18:26:12.24 ID:ZWqF/AOC01111
- 元々C/C++で書かれてたのをアセンブリ言語に書き直して94倍も速くなるんなら、たぶんコンパイル時の最適化オプションが間違ってただけだと思う。
- 22 : 2024/11/11(月) 18:27:51.59 ID:MBavmrnT01111
- >>15
SIMDの使い方でしょ - 35 : 2024/11/11(月) 18:31:57.80 ID:9t7piVGL01111
- >>15
拡張命令は特殊すぎてコンパイラで最適化できない - 16 : 2024/11/11(月) 18:26:26.95 ID:zZdRyE//01111
- メンテナビリティやばそう
- 18 : 2024/11/11(月) 18:27:12.61 ID:PBgqqz3001111
- 携帯動画変換君とかでお世話になった気がする🤔
- 19 : 2024/11/11(月) 18:27:29.35 ID:MVZU1WB201111
- デコーダかよ高速化して欲しいのはAV1のエンコーダの方なんだけど
- 20 : 2024/11/11(月) 18:27:32.62 ID:MpWy/pFH01111
- 12世代CoreだとPコアはAVX-512に対応できるんだけどEコアが対応してない
そのせいでCPUとしては無効になってる - 21 : 2024/11/11(月) 18:27:38.52 ID:ZWqF/AOC01111
- それか、最適化が下手なコンパイラ使ってたか。
その場合はコンパイラをまともなのに変更すれば解決するだろ。 - 23 : 2024/11/11(月) 18:28:13.83 ID:GFRFZPsz01111
- ベクトル化するだけなら別に難しくないぞ
avx512は並び替えとか柔軟にやってくれる命令が沢山追加されてだいぶやりやすくなってる(面白みも減ったが) - 25 : 2024/11/11(月) 18:29:15.36 ID:MBavmrnT01111
- >>23
とはいえ頭が混乱する感じはあるな俺の場合 - 24 : 2024/11/11(月) 18:29:10.58 ID:s7qGqJpc01111
- まだまだあると思うよ、こういうの
効率化でビジネスのスピードしか優先されてない結果だよ - 26 : 2024/11/11(月) 18:29:20.43 ID:CtfLCisV01111
- コンパイラが信用できんのは今も昔も同じか
- 27 : 2024/11/11(月) 18:29:36.93 ID:lAk9samVH1111
- コボラーおじさんの中に混じってるアセンブリ爺さんの魅力
- 28 : 2024/11/11(月) 18:29:37.29 ID:A9DDTbp001111
- コンパイラの最適も万能ではなくて
ベクトル演算とか複素数演算はハンドアセンブルまでいかなくても
intrinsic使うだけでもかなり早くなるんだよな
メモリアライメントにシビアだからコンパイラ最適化では対応できない場面が多い - 29 : 2024/11/11(月) 18:30:09.03 ID:J/cMqph/H1111
- AVX-512って日本語wikipediaページ無いのかよ
- 30 : 2024/11/11(月) 18:30:10.71 ID:ZWqF/AOC01111
- もしコンパイラの問題だとしたら、たぶん最近の拡張命令にコンパイラのバージョンアップが追いついてないだけだから、アセンブリ言語に書き直すよりもコンパイラのバージョンアップを気長に待ってた方がいいと思う。
- 31 : 2024/11/11(月) 18:30:11.97 ID:Q5UqbqfQ01111
- そりやコンパイラの最適化はどんなソースも変換する前提で冗長度の高い機械語命令を出してフロー最適化とか節穴最適化とか汎用的な最適化をする物だから
仮に効率の良い特定の命令を出力できるとしても、それ専用のソース書き換えが必要だから、アセンブリ言語でパズルするよりは効率悪くて当然だろ - 83 : 2024/11/11(月) 18:46:31.70 ID:W154C/8Zr1111
- >>31
コンピューター・サイエンスの学位持ってるの? - 32 : 2024/11/11(月) 18:30:18.73 ID:UY2kF3Jz01111
- dav1dって強いの?
- 33 : 2024/11/11(月) 18:31:28.37 ID:xaWrjqbY01111
- コンパイラという足かせ。
- 34 : 2024/11/11(月) 18:31:56.18 ID:Q5UqbqfQ01111
- コンパイラのバージョンアップがあっても
特定の機械語の使用条件やCPU内部動作を意識したソースを書かないと冗長になるよね - 36 : 2024/11/11(月) 18:32:06.07 ID:Dp2whBXm01111
- アーキテクチャを設計できるレベルの知能と知識が無いとコンパイラより効率的にするなんて無理でしょ
- 38 : 2024/11/11(月) 18:32:56.79 ID:J/cMqph/H1111
- youtubeの中で再エンコードやってる人とかバリバリに自社製作してるんだろうな
- 39 : 2024/11/11(月) 18:33:25.97 ID:bbjiWwYlH1111
- この手のPC関連スレに必ずやってくる名物の話通じないおっさん今日も来るかな?
- 43 : 2024/11/11(月) 18:35:54.65 ID:99jn2jtPa1111
- >>39
山形大学が~ - 41 : 2024/11/11(月) 18:33:47.94 ID:BFVftqgg01111
- AV1の動画が軽くなるんか?
再生支援無くても再生できる? - 42 : 2024/11/11(月) 18:33:51.57 ID:Im5s/7c501111
- 業務アプリでおんなじ事やったら死後も棺桶に変更依頼書入れられそうで怖いよな
- 51 : 2024/11/11(月) 18:36:37.98 ID:bbjiWwYlH1111
- >>42
本人はエスプリの効いたジョークだと思ってるけど実際にはクソつまらないパソコンの大先生お得意のクソ寒発言やめろ - 46 : 2024/11/11(月) 18:36:15.10 ID:MVZU1WB201111
- ffmpegはgccかclangでコンパイルして使うことを主に想定してるからな
Intelの有償のコンパイラのようにはいかない - 47 : 2024/11/11(月) 18:36:21.10 ID:ZCB2FZ5S01111
- コンパイラさえしっかり作ればすべての言語がチップ性能無駄なく使えるはずなんだけどな
ビルゲイツがなにかやってたはず - 48 : 2024/11/11(月) 18:36:22.98 ID:uS2zrwyY01111
- つまりどういうことだってばよ?
- 49 : 2024/11/11(月) 18:36:26.72 ID:jZs3fpya01111
- とんでもないコストじゃないか
- 50 : 2024/11/11(月) 18:36:27.18 ID:K57/GEXG01111
- でその書き直した版のソフトはどこにあるの?
- 52 : 2024/11/11(月) 18:36:40.95 ID:lBYvoufCM1111
- ダンプリスト松本
- 53 : 2024/11/11(月) 18:37:37.55 ID:zY0gQvVAH1111
- こんなのこそAIにやらせろよ
- 54 : 2024/11/11(月) 18:37:43.54 ID:Q5UqbqfQ01111
- 業務アプリでアセンブリ言語使うって、ハードとソフトの限界まで使うような極端な制約は少ないだろ
FAとか宇宙開発とかチップの世代とか消費電力とかメモリフットプリントとかタイミングがクリティカルなら組むだろうけど、どっちかというと理系の科学技術系分野だろうね - 55 : 2024/11/11(月) 18:37:44.80 ID:cnFUNAld01111
- 要はメモ帳に01の並び何マンと書けば全部できるの?
- 56 : 2024/11/11(月) 18:37:52.96 ID:w8DcWCCjr1111
- 昔の組み込みだとcでタイミングがきついところは
インラインアセンブラで書いたりするな - 57 : 2024/11/11(月) 18:38:30.15 ID:lyMIoT9j01111
- コンパイラーってAIなんかでごりごりに詰めていけば最終的にアセンブリに近づいていったりするのかな将来的には
- 58 : 2024/11/11(月) 18:38:35.74 ID:Oh10JAMH01111
- つまり94秒かかってたのが1秒で終わるってこと?
- 59 : 2024/11/11(月) 18:39:14.78 ID:99jn2jtPa1111
- アセンブリ言語を使った最適化のコンテストに参加したことあるけど
人によって性能に差がめちゃくちゃあるぞ
コンパイラじゃ細かいところが無理だよ - 67 : 2024/11/11(月) 18:41:46.02 ID:JRNBrDCo01111
- >>59
うん
アセンブラ使えばどんなプログラミング言語よりも速い
ただそれだけしか知らずそれだけしか言えないこのスレのアホ共をもっと説教してやってくれ - 71 : 2024/11/11(月) 18:43:08.59 ID:++GQddoT01111
- >>59
凄え
並べ替えるしかわからん - 61 : 2024/11/11(月) 18:40:19.03 ID:J/cMqph/H1111
- 水の女にストーカーしてるおじさんか
- 69 : 2024/11/11(月) 18:42:28.43 ID:Q5UqbqfQ01111
- >>61
キミの言う水の女がストーキングハラスメントで通報されている犯罪常習者だねン!わざわざ毎回幼稚な繰り言を書いて、頭が空っぽすぎる
- 63 : 2024/11/11(月) 18:40:44.57 ID:erCqOnb101111
- アセンブラで直接叩くとか久しぶりに聞いた
ファミコン時代とかはそれでカツカツに処理力を上げてた - 64 : 2024/11/11(月) 18:40:51.77 ID:UY2kF3Jz01111
- みんなパイプラインの動きが頭の中で完全に再現できてるか?
- 65 : 2024/11/11(月) 18:40:59.74 ID:Q5UqbqfQ01111
- なんか嫌儲で職場名や自身の苗字を毎回書いている人の
知能とメンタルが幼稚過ぎて呆れ返るよねまともな雑談もできない幼稚な障碍者
- 68 : 2024/11/11(月) 18:42:08.46 ID:Dp2whBXm01111
- C言語でさえメモリの取り扱いで危険だらけなのに
アセンブリ言語手打ちで脆弱性とか大丈夫なんかね - 76 : 2024/11/11(月) 18:44:54.24 ID:Q9zAwzNj01111
- >>68
もちろん大丈夫ではないし
C で書くより遥かにミスし易い - 70 : 2024/11/11(月) 18:42:35.26 ID:CeWmhiYJ01111
- ytdlpおじさん「いいなこれ」
- 73 : 2024/11/11(月) 18:43:35.80 ID:W154C/8Zr1111
- 何で君達そんなにコンピューターに詳しいの?
CS degree 持ってるの? - 74 : 2024/11/11(月) 18:44:09.92 ID:29iONLkd01111
- オプティマイザーがタコなんだろう
- 75 : 2024/11/11(月) 18:44:10.25 ID:Rm1hZVr801111
- 変態かよw
- 77 : 2024/11/11(月) 18:44:55.85 ID:UY2kF3Jz01111
- キャッシュヒット率とか考えてデータ構造設計してくれよ
- 78 : 2024/11/11(月) 18:45:08.74 ID:Qbq47IrS01111
- OpenCVにも使われてんのかこれ
- 79 : 2024/11/11(月) 18:45:15.98 ID:Q5UqbqfQ01111
- >59
キチガ●ジ本人やん
暗黒通信団のπの人ならその手のコンテスト経験があるだろうけど
トンボの人はプログラムが苦手で学位論文研究未完のまま学位を要求したポンコツでしょ虚言に具体性もなく小学生レベル
- 80 : 2024/11/11(月) 18:45:47.02 ID:pr9gdvAd01111
- 全部とは言わず演算の重いところだけでもアセンブラに切り替えたら早くなりそうよね。絶対やりたくないし出来ないけど
- 81 : 2024/11/11(月) 18:45:52.70 ID:MpWy/pFH01111
- 頭の中でレジスタと演算とパイプラインとキャッシュのシミュレーションができる人間ならコンパイラに勝てる
- 84 : 2024/11/11(月) 18:47:15.12 ID:/O2zLxu701111
- アセンブリ記述で94倍の性能向上ができたということは、元のコードが悪かっただけ。
並列化できるように書いてないとか、キャッシュ構造を理解してないとか、コンパイラのチューニングが悪いとか。 - 85 : 2024/11/11(月) 18:47:22.80 ID:Q9zAwzNj01111
- なんかスレに関係ない人物名とか出して暴れてる奴が居るけど
これ何? - 89 : 2024/11/11(月) 18:48:20.62 ID:A9DDTbp001111
- >>85
皆スルーしてるよ
アカデミックな話題になると涌いてくる私怨拗らせた可哀想な人 - 94 : 2024/11/11(月) 18:49:37.45 ID:W154C/8Zr1111
- >>89
コンピューター・サイエンスの学位持ってるの? - 87 : 2024/11/11(月) 18:47:25.59 ID:bP7BBLrj01111
- av1遅すぎてエンコできない問題解決したの
- 90 : 2024/11/11(月) 18:48:28.87 ID:Q9zAwzNj01111
- >>87
それについては続報を聞かないな
まだじゃないか? - 88 : 2024/11/11(月) 18:48:11.47 ID:3N6xY5g/H1111
- 今どきのアセンブラも命令入れ替えてペアリングとかしてるの?
もはやロストテクニックなのでは - 91 : 2024/11/11(月) 18:48:41.86 ID:erCqOnb101111
- こういう職人芸はパソコンならx68kゲームならPS1が最後か?
- 92 : 2024/11/11(月) 18:49:09.83 ID:6la48I9M01111
- 30年くらい前には16進数の文字の羅列をチラっと眺めて問題点指摘出来る天才がいたってNRIに居た時に聞いたが本当か?
- 93 : 2024/11/11(月) 18:49:10.81 ID:99jn2jtPa1111
- 俺は知らなかったが有名な話で
モジュラー演算はコンパイラで最適化すると
割ってなくてシフト演算してるんだってさ
知ってた?w
コメント