cpu.mode fastest code on the internet
solution

sol_3860713_1787981813753161157_4

C++ Scalar sparse merge dot 3 runs
01 source
Submitted source 723 bytes
Compiler clang++ Flags -O3 -march=native -std=c++20
show source
#include <cstddef>
#include <cstdint>

extern "C" void nk_sparse_dot_u32f32(
    const std::uint32_t *a,
    const std::uint32_t *b,
    const float *a_weights,
    const float *b_weights,
    std::size_t a_length,
    std::size_t b_length,
    double *product
) {
    std::size_t i = 0;
    std::size_t j = 0;
    double sum = 0.0;

    while (i < a_length && j < b_length) {
        const std::uint32_t ai = a[i];
        const std::uint32_t bj = b[j];
        if (ai == bj) {
            sum += static_cast<double>(a_weights[i]) * static_cast<double>(b_weights[j]);
            ++i;
            ++j;
        } else if (ai < bj) {
            ++i;
        } else {
            ++j;
        }
    }

    *product = sum;
}
02 jobs
Systems 03 jobs
03 counters
Performance counters 19 counters
cyclesi
153,827,543
Show more
amd.de_src_op_disp.alli
194,677,220
amd.dram_fillsi
10,094
amd.ex_no_retire.load_not_completei
29,830,170
amd.ex_no_retire.not_completei
55,166,501
amd.frontend_empty_cyclesi
48,512,700
amd.l1d_accessesi
53,754,990
amd.resyncs_or_nc_redirectsi
690
branch_instructionsi
46,482,812
branch_missesi
5,158,916
dtlb_load_misses.walk_completedi
1,103
instructionsi
116,298,239
mem_load_retired.l1_missi
57,201
mem_load_retired.l2_missi
56,615
mem_load_retired.l3_missi
10,094
tma_backend_boundi
31,880,196
tma_frontend_boundi
697,373,956
tma_retiringi
98,841,778
uops_retired.msi
395,018
04 top down
Top-down analysis AMD Zen 4
05 profile
load profile