Skip to content

Commit b69a965

Browse files
committed
optimize recode branch performance
1 parent 75a8399 commit b69a965

4 files changed

Lines changed: 8 additions & 10 deletions

File tree

Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ examples/blockchain_gossip
3737
CPPFLAGS = -D_DEFAULT_SOURCE -D_FILE_OFFSET_BITS=64
3838
CFLAGS = -O3 -g -std=c11 -Wall -I. -Iinclude -Ideps/
3939
CFLAGS += -march=native -funroll-loops -ftree-vectorize -fno-inline -fstack-protector-all -Wno-unused -Wno-sequence-point
40+
CFLAGS += -DNANORQ_USE_UNIFIED_SOLVER
4041

4142
all: test libnanorq.a libnanorq_core.a $(EXAMPLES)
4243

lib/nanorq.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -969,9 +969,11 @@ bool nanorq_repair_block(nanorq *rq, struct ioctx *io, uint8_t sbn) {
969969
repair_sym rs = dec->repair_bin.a[rep_idx++];
970970
#ifdef NANORQ_USE_UNIFIED_SOLVER
971971
if (rs.coefs) {
972-
nanorq_core_replace_symbol_explicit(&dec->core, dec->core.P.Kprime + extra, rs.coefs);
972+
nanorq_core_replace_symbol_explicit(&dec->core,
973+
dec->core.P.Kprime + extra, rs.coefs);
973974
} else {
974-
nanorq_core_replace_symbol(&dec->core, dec->core.P.Kprime + extra, rs.esi);
975+
nanorq_core_replace_symbol(&dec->core, dec->core.P.Kprime + extra,
976+
rs.esi);
975977
}
976978
#else
977979
nanorq_core_replace_symbol(&dec->core, dec->core.P.Kprime + extra, rs.esi);

lib/nanorq_core.c

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -287,13 +287,8 @@ void nanorq_core_replace_symbol_explicit(nanorq_core *rq, uint32_t row,
287287
if (coefs[i] == 0)
288288
continue;
289289

290-
u32 X = i;
291-
u32 cols[GENC_MAX];
292-
u32_vec src_row;
293-
src_row.a = cols;
294-
src_row.n = 0;
295-
src_row.m = GENC_MAX;
296-
params_set_idxs(P, X, &src_row);
290+
u32 src_idx = P->S + P->H + i;
291+
u32_vec src_row = W->A[src_idx];
297292

298293
for (u32 it = 0; it < uv_size(src_row); it++) {
299294
u32 col = uv_A(src_row, it);

lib/precode.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -274,7 +274,7 @@ static void precode_matrix_fill_HDPC(params *P, pc *W) {
274274
W->cb.on_op(W->cb.on_op_arg, phys_row, drow, beta);
275275
u8 *a = (u8 *)&uv_E(W->UL, uv_A(W->F.rowmap, phys_row), 0);
276276
u32 *b = &uv_E(W->U, drow, 0);
277-
nanorq_oblas.axpyb32(a, b, beta, W->u);
277+
nanorq_oblas.axpyb32(a, b, beta, W->UL.s);
278278
}
279279
}
280280
}

0 commit comments

Comments
 (0)