PLCOMP Telegram 95
πŸ“š Breno Campos, Ferreira GuimarΓ£es
"Lazy Evaluation for the Lazy: Automatically Transforming Call-by-Value into Call-by-Need"
Proceedings of the 32nd ACM SIGPLAN International Conference on Compiler Construction. February 2023: 239–249


Π›Π΅Π½ΠΈΠ²Ρ‹ΠΌΠΈ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΈΠ΅ вычислСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ сразу, Π° ΠΎΡ‚ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅Ρ‚, ΠΏΠΎΠΊΠ° Π½Π΅ потрСбуСтся ΠΈΡ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. Если Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ€Π΅Π΄ΠΊΠΈΠ΅ вычислСния Π»Π΅Π½ΠΈΠ²ΠΎ, срСдняя ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠΎΠΆΠ΅Ρ‚ вырасти.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ вычислСния Π²Ρ‹Π³ΠΎΠ΄Π½ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π»Π΅Π½ΠΈΠ²ΠΎ, программист Π΄Π΅Π»Π°Π΅Ρ‚ прСдполоТСния ΠΎ сцСнариях выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ Π΅Ρ‘. Π’ языках с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Π»Π΅Π½ΠΈΠ²Ρ‹Ρ… вычислСний ΠΌΠΎΠΆΠ½ΠΎ просто ΠΏΠΎΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΊΠ°ΠΊ lazy, Π½ΠΎ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ…, особСнно Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Ρ… языках, Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ лСнивости слоТнСС, ΠΈ это ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ сущСствСнной ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π°.

ЦСль Π°Π²Ρ‚ΠΎΡ€ΠΎΠ² β€” Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒ компиляторы Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ вычислСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π»Π΅Π½ΠΈΠ²Ρ‹ΠΌΠΈ, Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π°Π½Π½ΠΎΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ lazy Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΈ Π΄Π°ΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ лСнивости со стороны языка. Для этого ΠΎΠ½ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ LLVM ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ profile-guided ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ, Π΄Π΅Π»Π°ΡŽΡ‰ΡƒΡŽ вычислСниС Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π»Π΅Π½ΠΈΠ²Ρ‹ΠΌ. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ происходит Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ LLVM IR Π² SSA Ρ„ΠΎΡ€ΠΌΠ΅.

Π‘Ρ‚Π°Ρ‚ΡŒΡ описываСт Π΄Π²Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°:
1) ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ Value Slicing, которая строит Π·Π°ΠΌΡ‹ΠΊΠ°Π½ΠΈΠ΅ для вычислСния ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ значСния Π² SSA IR.
2) Lazification ΠΏΠΎ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΡ‚ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠ° замСняСт call-by-value Π½Π° call-by-need.

Π’Ρ‹Π±ΠΎΡ€ вычислСний для lazification ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ описаны Π² Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π½Π½Π΅ΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅:
Chang, Stephen. "Laziness by need." Programming Languages and Systems: 22nd European Symposium on Programming, ESOP 2013

Авторы добились роста ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° C ΠΈ C++ ΠΎΡ‚ 1% Π΄ΠΎ ~10% Π·Π° счСт увСличСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° ~10%; тСсты Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π² сСбя SPEC CPU 2017.

#optimization #profiling #lazy #llvm



tgoop.com/plcomp/95
Create:
Last Update:

πŸ“š Breno Campos, Ferreira GuimarΓ£es
"Lazy Evaluation for the Lazy: Automatically Transforming Call-by-Value into Call-by-Need"
Proceedings of the 32nd ACM SIGPLAN International Conference on Compiler Construction. February 2023: 239–249


Π›Π΅Π½ΠΈΠ²Ρ‹ΠΌΠΈ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΈΠ΅ вычислСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ сразу, Π° ΠΎΡ‚ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅Ρ‚, ΠΏΠΎΠΊΠ° Π½Π΅ потрСбуСтся ΠΈΡ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. Если Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ€Π΅Π΄ΠΊΠΈΠ΅ вычислСния Π»Π΅Π½ΠΈΠ²ΠΎ, срСдняя ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠΎΠΆΠ΅Ρ‚ вырасти.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ вычислСния Π²Ρ‹Π³ΠΎΠ΄Π½ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π»Π΅Π½ΠΈΠ²ΠΎ, программист Π΄Π΅Π»Π°Π΅Ρ‚ прСдполоТСния ΠΎ сцСнариях выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ Π΅Ρ‘. Π’ языках с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Π»Π΅Π½ΠΈΠ²Ρ‹Ρ… вычислСний ΠΌΠΎΠΆΠ½ΠΎ просто ΠΏΠΎΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΊΠ°ΠΊ lazy, Π½ΠΎ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ…, особСнно Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Ρ… языках, Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ лСнивости слоТнСС, ΠΈ это ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ сущСствСнной ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π°.

ЦСль Π°Π²Ρ‚ΠΎΡ€ΠΎΠ² β€” Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒ компиляторы Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ вычислСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π»Π΅Π½ΠΈΠ²Ρ‹ΠΌΠΈ, Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π°Π½Π½ΠΎΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ lazy Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΈ Π΄Π°ΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ лСнивости со стороны языка. Для этого ΠΎΠ½ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ LLVM ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ profile-guided ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ, Π΄Π΅Π»Π°ΡŽΡ‰ΡƒΡŽ вычислСниС Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π»Π΅Π½ΠΈΠ²Ρ‹ΠΌ. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ происходит Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ LLVM IR Π² SSA Ρ„ΠΎΡ€ΠΌΠ΅.

Π‘Ρ‚Π°Ρ‚ΡŒΡ описываСт Π΄Π²Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°:
1) ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ Value Slicing, которая строит Π·Π°ΠΌΡ‹ΠΊΠ°Π½ΠΈΠ΅ для вычислСния ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ значСния Π² SSA IR.
2) Lazification ΠΏΠΎ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΡ‚ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠ° замСняСт call-by-value Π½Π° call-by-need.

Π’Ρ‹Π±ΠΎΡ€ вычислСний для lazification ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ описаны Π² Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π½Π½Π΅ΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅:
Chang, Stephen. "Laziness by need." Programming Languages and Systems: 22nd European Symposium on Programming, ESOP 2013

Авторы добились роста ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° C ΠΈ C++ ΠΎΡ‚ 1% Π΄ΠΎ ~10% Π·Π° счСт увСличСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° ~10%; тСсты Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π² сСбя SPEC CPU 2017.

#optimization #profiling #lazy #llvm

BY PLComp


Share with your friend now:
tgoop.com/plcomp/95

View MORE
Open in Telegram


Telegram News

Date: |

Hashtags are a fast way to find the correct information on social media. To put your content out there, be sure to add hashtags to each post. We have two intelligent tips to give you: Co-founder of NFT renting protocol Rentable World emiliano.eth shared the group Tuesday morning on Twitter, calling out the "degenerate" community, or crypto obsessives that engage in high-risk trading. According to media reports, the privacy watchdog was considering β€œblacklisting” some online platforms that have repeatedly posted doxxing information, with sources saying most messages were shared on Telegram. Users are more open to new information on workdays rather than weekends. bank east asia october 20 kowloon
from us


Telegram PLComp
FROM American