Parallel Computing in Rust and C++ part 1

Parallelism in Rust usually means one of three things:

  1. Data-parallel CPU work (split work across cores)
  2. Task parallelism (run independent CPU tasks concurrently)
  3. Async concurrency (lots of I/O, not CPU parallel by default)

When making things go parallel, there are following things to consider. Safe parallel code comes from being …

Sumcheck optimization 2: Quasilinear Time and Square-Root Space old implementation

explanation for this equation:

\(\underbrace{p(r_1, …, r_i, x’)}_{x’\in\{0,1\}^{i-l}}= \sum\limits_{y\in \{0,1\}^l}\widetilde{eq}(r_1, …, r_i, x’,y)\cdot p(y)\)

\(=\sum\limits_{y\in \{0,1\}^l}\underbrace{\widetilde{eq}(r_1, …, r_i, y)}_{y\in \{0,1\}^{i}}\underbrace{\widetilde{eq}(x’,y)}_{y\in \{0,1\}^{l-i}}\cdot \underbrace{p(y)}_{y\in \{0,1\}^l}\)

\(=\sum\limits_{y\in \{0,1\}^i}\underbrace{\widetilde{eq}(r_1, …, r_i, y)}_{y\in \{0,1\}^{i}}\underbrace{\cdot p(y, x’)}_{y\in \{0,1\}^{i}}\)

Coding skills keywords

This post collects the concepts people mentioned for different programming languages, so I can understand what they are talking about.

Rust:

ownership,

lifetimes,

memory safety

Tokio

async await,

event driven Rust systems

asynchronous programming and concurrency patterns

C++:

 template meta-programming, SFINAE, RAII, constexpr, 

 multithreading, web protocol (e.g. websocket, RESTful)

event-driven …

Sumcheck optimization 1: linear space and linear time old implementation

protocol:

Optimization in special case:

linear time, linear space prover:

Analysis:

To what I can think of:

\(d\cdot (d-1) \cdot 2^{l-1}\) small multiplication come from that \(s_1(u)\) is a \(d\) degree polynomial, that means prover needs to send \(d\) points to the verifier(shouldn’t be d+1?), for each points, there will …