SBPF Syscall Extensions #454
Replies: 3 comments 12 replies
-
|
Did SIMD-0377 actually disable the PQR opcode class? The SIMD text only says "It reverts past ISA changes" in the summary, but does not come back to this point anywhere in the detailed design section neither directly, nor by referencing the SIMDs to be reverted, nor by referencing the relevant instruction classes AFAICT. |
Beta Was this translation helpful? Give feedback.
-
|
@Lichtso from discussion with @deanmlittle I'd like to see AVX libraries for things like single-CU pubkey compares AVX2 is already required for validators: https://www.solanahcl.org/category/agave AVX512f is also recommended, and would likely enable pubkey tuple compares at < 10% the cost compared with using chained sol_memcmp |
Beta Was this translation helpful? Give feedback.
-
|
Sorry, we won’t be rebranding Blueshift’s original work on JIT intrinsics to satisfy your confusion about the interpreter targeting the JIT. Speculating on which intrinsics we should add without relevant performance metrics is not a productive approach. Either come to the table with concrete evidence of performance gains as we have, or put in the work to demonstrate them. This is not a guessing game. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
A topic which came up during Breakpoint Singapore 2024 in a core dev meeting at the Jump office was the idea of putting additional instructions in the encoding space of the syscall opcode, an ISA extension so to speak. (Not to be confused with opcode prefix / suffix extensions)
This idea recently regained interest (referred to as "JIT Intrinsics") evident in an article by Blueshift:
https://blueshift.gg/research/accelerating-u128-math-with-libcalls-and-jit-intrinsics
I personally would not call it "JIT Intrinsics", because while they are intrinsics from the Rust front-end perspective down to LLVM they are not from the ISA / protocol perspective. Once lowered to SBPF in ELF they are indistinguishable from any other syscall.
Furthermore, the JIT is not the only execution mechanism, these syscalls need to be handled by the interpreter likewise. The fact that the codegen can be optimized for these is an implementation detail. Implementation wise I would not even implement them in the JIT directly but have them be syscalls which additionally register a codegen callback.
This discussion should revolve around which specific new syscalls we would want to introduce this way. Some ideas to kick off the discussion are:
Beta Was this translation helpful? Give feedback.
All reactions