Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
プログラミング言語 Tlangの開発
Search
tkclimb
May 05, 2020
Technology
0
630
プログラミング言語 Tlangの開発
2020年のGWハッカソンで発表した内容です。
tkclimb
May 05, 2020
Tweet
Share
More Decks by tkclimb
See All by tkclimb
コンピューティングの基礎と高速化入門
tkclimb
17
9.3k
Other Decks in Technology
See All in Technology
“プロダクトを好きになれるか“も QAエンジニア転職の大事な判断基準だと思ったの
tomodakengo
0
140
生成AIをテストプロセスに活用し"よう"としている話 #jasstnano
makky_tyuyan
0
160
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
5
38k
AIにどこまで任せる?実務で使える(かもしれない)AIエージェント設計の考え方
har1101
3
1.1k
開発効率と信頼性を両立する Ubieのプラットフォームエンジニアリング
teru0x1
0
140
Amplifyとゼロからはじめた AIコーディング 成果と展望
mkdev10
1
230
Data Hubグループ 紹介資料
sansan33
PRO
0
1.8k
QAはソフトウェアエンジニアリングを学んで実践するのが大事なの
ymty
1
390
「伝える」を加速させるCursor術
naomix
0
620
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
7.3k
マルチテナント+マルチプロダクト SaaS への AI Agent の組み込み方
kworkdev
PRO
2
330
IIWレポートからみるID業界で話題のMCP
fujie
0
210
Featured
See All Featured
VelocityConf: Rendering Performance Case Studies
addyosmani
329
24k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3k
Scaling GitHub
holman
459
140k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.4k
Adopting Sorbet at Scale
ufuk
77
9.4k
A Tale of Four Properties
chriscoyier
159
23k
Build your cross-platform service in a week with App Engine
jlugia
231
18k
Into the Great Unknown - MozCon
thekraken
39
1.8k
Side Projects
sachag
454
42k
Typedesign – Prime Four
hannesfritz
42
2.7k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Designing Experiences People Love
moore
142
24k
Transcript
ϓϩάϥϛϯάݴޠ Tlangͷ։ൃ Takato Yamada
͍͖ͳΓͰ͕͢ɺ ϓϩάϥϜΛߴԽେมͰ͢
΅͔͠ॲཧ (ߴԽͳ͠)
΅͔͠ॲཧ (खͰߴԽ)
΅͔͠ॲཧ (HalideͰߴԽ)
΅͔͠ॲཧ (HalideͰߴԽ) ·ͩਓखͰߴԽ (εέδϡʔϦϯά)͕ඞཁ
Tlang (Tensor language) ͱ • ΞϓϦέʔγϣϯࢥߟͳςϯιϧϕʔεɺϓϩάϥϛϯάݴޠ • ΞϧΰϦζϜͱεέδϡʔϦϯάΛͯ͠ॻ͚Δ • εέδϡʔϦϯάΛࣗಈͰߦ͑Δ
(ͪΖΜखॻ͖Ͱ͖Δ) • ϔςϩδχΞεͳڥͰಈ͖ɺϢʔβࠩҟΛҙࣝ͠ͳͯ͘ྑ͍ • ϞμϯͳϓϩάϥϛϯάݴޠͰ࣮͢Δ͜ͱͰՄಡੑɺ։ൃޮΛվળ • هड़ՄೳͳυϝΠϯΛը૾ॲཧσΟʔϓϥʔχϯά͚ͩͰͳͯ͘ɺ HPC·Ͱ͍͛ͨ
ࠩผԽ • Tlang: ։ൃݴޠ͕Ϟμϯ(Swift, Rust)ɺϧʔϓൖґଘ͕هड़ՄೳͳϧʔϓϨϕϧDSL ΦʔτνϡʔχϯάΛࡌ ࢄܭࢉܭࢉΧʔωϧͷඇಉظ࣮ߦʹରԠ͢Δ (શͯئ) • Tensorflow,
Pytorch: ։ൃݴޠ͕C++ ɺϧʔϓϨϕϧهड़Ͱ͖ͳ͍ (XLAՄೳ?) • Halide: ։ൃݴޠ͕C++ɺϧʔϓൖґଘ͕ॻ͚ͳ͍(ϑϩϯτΤϯυͰ)ɺ Φʔτνϡʔχϯάͦ͜·Ͱڧ͘ͳ͍ɺࢄܭࢉͰ͖ͳ͍ • TVM: ։ൃݴޠ͕C++ͱPythonɺϧʔϓൖґଘ͕ॻ͚ͳ͍ɺࢄܭࢉͰ͖ͳ͍ • Tiramisu: ։ൃݴޠ͕C++ɺΦʔτνϡʔχϯά͕ͳ͍
• Tlang: ։ൃݴޠ͕Ϟμϯ(Swift, Rust)ɺϧʔϓൖґଘ͕هड़ՄೳͳϧʔϓϨϕϧDSL ΦʔτνϡʔχϯάΛࡌ ࢄܭࢉܭࢉΧʔωϧͷඇಉظ࣮ߦʹରԠ͢Δ (શͯئ) • Tensorflow, Pytorch:
։ൃݴޠ͕C++ ɺϧʔϓϨϕϧهड़Ͱ͖ͳ͍ (XLAՄೳ?) • Halide: ։ൃݴޠ͕C++ɺϧʔϓൖґଘ͕ॻ͚ͳ͍(ϑϩϯτΤϯυͰ)ɺ Φʔτνϡʔχϯάͦ͜·Ͱڧ͘ͳ͍ɺࢄܭࢉͰ͖ͳ͍ • TVM: ։ൃݴޠ͕C++ͱPythonɺϧʔϓൖґଘ͕ॻ͚ͳ͍ɺࢄܭࢉͰ͖ͳ͍ • Tiramisu: ։ൃݴޠ͕C++ɺΦʔτνϡʔχϯά͕ͳ͍ ࠩผԽ (স) ݸਓͰશͯΛ࣮͢Δ͜ͱ΄΅ෆՄೳ. ݁ہͷॴͳʹ͔࡞Γ͍͚ͨͩস
ϥ ϯ λ Π Ϝ ߏ ؔܕελΠϧ ϑϩϯτΤϯυ ίʔυੜ LLVM
ݴޠϑϩϯτΤϯυ ߴϨϕϧ IR ࠷దԽػ 1 Ϩϕϧ IR ࠷దԽػ 2 GPU CPU ࢄ ୯Ұ ࣗಈ࠷దԽػ ϥ Π ϒ ϥ Ϧ
ؔܕελΠϧ ϑϩϯτΤϯυ ίʔυੜ ݴޠϑϩϯτΤϯυ ߴϨϕϧ IR ࠷దԽػ 1 Ϩϕϧ IR
࠷దԽػ 2 ࣗಈ࠷దԽػ ߏ ϥ ϯ λ Π Ϝ ϥ Π ϒ ϥ Ϧ LLVM GPU CPU ࢄ ୯Ұ
ϥ ϯ λ Π Ϝ ϥ Π ϒ ϥ Ϧ
ؔܕελΠϧ ϑϩϯτΤϯυ ίʔυੜ ݴޠϑϩϯτΤϯυ ߴϨϕϧ IR ࠷దԽػ 1 Ϩϕϧ IR ࠷దԽػ 2 ࣗಈ࠷దԽػ ͜͜ΛՃ͍ͨ͠! ݟੵΓ LLVM GPU CPU ࢄ ୯Ұ
ϥ ϯ λ Π Ϝ ϥ Π ϒ ϥ Ϧ
ؔܕελΠϧ ϑϩϯτΤϯυ ίʔυੜ ݴޠϑϩϯτΤϯυ ߴϨϕϧ IR ࠷దԽػ 1 Ϩϕϧ IR ࠷దԽػ 2 ࣗಈ࠷దԽػ ͕͜͜ݮͬͨ ݁Ռ LLVM GPU CPU ࢄ ୯Ұ
• ࢀߟϓϩδΣΫτΛॻ͖͍ͯͨ͠ॴɺDeep copy͕Ͱ͖ͳ͍͜ͱ ͕͔ͬͨ →ίϯύΠϥͷIRϥϕϧ͖༗ޮάϥϑͰද͞Ε͍ͯΔ͕ɺάϥ ϑΛίϐʔ͢ΔͨΊʹɺઌߦΛશͯίϐʔ͠ͳ͍ͱ͍͚ͳ͍… • ϊʔυͷछྨ͕ଟ͍͠ɺࠓޙ૿͑Δͷख࣮େม ࣗಈͰੜͯ͠Ζ͏! ͑ͬͳʹͬͯͨͷʁ
• ࢀߟϓϩδΣΫτΛॻ͖͍ͯͨ͠ॴɺDeep copy͕Ͱ͖ͳ͍͜ͱ ͕͔ͬͨ →ίϯύΠϥͷIRϥϕϧ͖༗ޮάϥϑͰද͞Ε͍ͯΔ͕ɺάϥ ϑΛίϐʔ͢ΔͨΊʹɺઌߦΛશͯίϐʔ͠ͳ͍ͱ͍͚ͳ͍… • ϊʔυͷछྨ͕ଟ͍͠ɺࠓޙ૿͑Δͷख࣮େม ࣗಈͰੜͯ͠Ζ͏! ͑ͬͳʹͬͯͨͷʁ
ѱເͷ࢝·Γ
ͱΓ͋͑ͣਐḿ D {Add(C[Var(i), Var(j)], {C {Add(A[Var(i), Var(j)], {Input(A)}, B[Var(i), Var(j)],
{Input(B)})}}, IntConst(3))}
ίʔυΛੜ͢ΔͨΊͷίʔυ(ίϯύΠϥ)Λ ੜ͢ΔίʔυΛॻ͘৬ਓʹͳΓ·ͨ͠ ݁