scality / quadiron

Fast Erasure Coding Library for Large Number of Data and Parities
BSD 3-Clause "New" or "Revised" License
28 stars 5 forks source link

Part1: Radix-2 FFT enhancement by working on two layers per iteration #253

Closed lamphamsy closed 6 years ago

lamphamsy commented 6 years ago

The base branch eh/fft_radix2_and_re_work_sim would be merged into master when two parts are done: #253 #254

Part1

For each quadruple (P, Q, R, S) = (buf[i], buf[i + m], buf[i + 2 * m], buf[i + 3 * m])

First layer: butterfly on (P, Q) and(R, S) for step = 2 * m

      coef r1 = W[start * n / (2 * m)]
      P = P + r1 * Q
      Q = P - r1 * Q
      R = R + r1 * S
      S = R - r1 * S

Second layer: butterfly on (P, R) and (Q, S) for step = 4 * m

      coef r2 = W[start * n / (4 * m)]
      coef r3 = W[(start + m) * n / (4 * m)]
      P = P + r2 * R
      R = P - r2 * R
      Q = Q + r3 * S
      S = Q - r3 * S
slaperche-scality commented 6 years ago

Your explanations are nice, IMHO you should also put them in the message of the relevant commit.

That way they can be accessible directly from Git log (no dependence to github, can dive into the code offline, …).

lamphamsy commented 6 years ago

@slaperche-scality : Comments are addressed. Could you review the PR? Thanks