Skip to content

Commit 3f0f158

Browse files
committed
optimize recode branch performance
1 parent e500fa3 commit 3f0f158

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
@@ -958,9 +958,11 @@ bool nanorq_repair_block(nanorq *rq, struct ioctx *io, uint8_t sbn) {
958958
repair_sym rs = dec->repair_bin.a[rep_idx++];
959959
#ifdef NANORQ_USE_UNIFIED_SOLVER
960960
if (rs.coefs) {
961-
nanorq_core_replace_symbol_explicit(&dec->core, dec->core.P.Kprime + extra, rs.coefs);
961+
nanorq_core_replace_symbol_explicit(&dec->core,
962+
dec->core.P.Kprime + extra, rs.coefs);
962963
} else {
963-
nanorq_core_replace_symbol(&dec->core, dec->core.P.Kprime + extra, rs.esi);
964+
nanorq_core_replace_symbol(&dec->core, dec->core.P.Kprime + extra,
965+
rs.esi);
964966
}
965967
#else
966968
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)