Coelacanth's Dream

AMD RDNA 2 のコードネーム良し悪し

AMD RDNA 2 GPU 以前のコードネームは、Vega10Vega12Vega20Navi10Navi12Navi14 と、星と数字を組み合わせた、短く、シンプルでわかりやすいものだった。
しかし RDNA 2 からは一転、Sienna CichlidNavy Flounder のように色と硬骨魚を組み合わせた、長くはあるが、キャラクター性のあるものとなった。
Arcturus なんかは、星ではあるがコードネームとして末尾に数字は使われておらず、それでいて少し長い。中間的なコードネームと言えるかもしれない。

AMD が RDNA 2 にこうしたコードネームを付けるようになった理由は想像でき、それによる良い点はあるが、悪い点もある。

Index

避けたい名前の混同

ソースコード中では、関数名や変数名にコードネームをさらに縮めたものを使うことがある。
その時、例えば Vega10vg10Vega20vg20Navi10nv10Navi12nv12 という風になる。

しかし vg10 のような表記には問題があり、Navi1x 世代で顕在化した。
ピクセルフォーマットとの混同だ。
ピクセルフォーマットには NV12 というものが存在し、これが Navi12 の略称 nv12 と被り、混同が発生する。
ディスプレイコントローラに関連したコードでは、よく見ればわかりはするものの、1つのファイル上にピクセルフォーマットを意味する nv12Navi12 を意味する nv12 が同時に存在しており、まあややこしい。1

そして、ピクセルフォーマットには NV21 というものも存在する。
そのため、引き続き Navi21nv21 のように略しコード中で使うと、 nv12 同様の問題が起こってしまう。
かといって、同パターンのコードネームであるのに略し方を変えてしまうと、それはそれでややこしい。
そんならと新たに付けたコードネームが、「色+硬骨魚」な Sienna CichlidNavy Flounder ではないか、というのが想像した理由。

nv12 の混同による影響は実際にあり、同ファイル上ではないが、あるパッチに記述された nv12Navi12 と勘違いし、「Navi12 は APU」なんて記事を書いた海外サイトもある。
Is the AMD Navi 12 GPU actually powering the Ryzen 4000 APUs after all? | PCGamesN Sienna Cichlid のパッチが初めて投稿された時にも思ったが2、オープンソースコードを読むのって自分含めたオタクだけで、あまり読まれないものなのだろうか。
自分も誤解釈をしない訳ではないため、あまり人のことを言えないが。

RDNA 2 のコードネームをどう略しているのかについては、 Sienna Cichlid だと自分が見たことあるものでは、頭文字を取って SC とは略さず、前の節である色の部分を使っている。3
Arcturusarct 等のように略されているが、Architecture を略した arch と混同しやすいように思え、適切かどうかは判断しかねる。

襲いかかる Typo

上記のような混同を避けられるのが RDNA 2 のコードネームの利点ではあるが、欠点も存在する。
文字数の長さから来る誤字脱字、Typo だ。他名称混同と比べれば小さいが、出会う頻度は高い。

自分もそれを予感し、気を付けてはいたが、つい先日に一ヶ月半近く前の誤字を発見した。4まだまだ潜んでいる気がしてならない。

誤字脱字、Typo は誰にでも襲いかかるものであり、オープンソース Vulkan ドライバー、RADVSienna Cichlid をサポートした時も、マージリクエストのタイトルが Sienna Sichild -> Sienna Cichild -> Sienna Cichlid と修正され、移り変わっている。5

コード中に誤字脱字が出ることが多くなるかもしれないが、ほとんどはコンパイラが出力するメッセージとコードレビューの時点で気付けるはずだ。

よって、混同から来る概念的なズレよりも、単純な誤字脱字の方がマシ、なはず。