From b40152c440b3dcb7df21fabf6d2a12b96a54187c Mon Sep 17 00:00:00 2001 From: Vladimir Kutuev Date: Tue, 8 Apr 2025 15:18:05 +0300 Subject: [PATCH] gh-229: fix sparse vectors eadd on CPU --- src/cpu/cpu_v_eadd.hpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/cpu/cpu_v_eadd.hpp b/src/cpu/cpu_v_eadd.hpp index 64bb855ee..ad9e9163d 100644 --- a/src/cpu/cpu_v_eadd.hpp +++ b/src/cpu/cpu_v_eadd.hpp @@ -86,6 +86,9 @@ namespace spla { const CpuCooVec* p_v = v->template get>(); const auto& function = op->function; + const T u_fill_value = u->get_fill_value(); + const T v_fill_value = v->get_fill_value(); + assert(p_r->Ax.empty()); const auto u_count = p_u->values; @@ -96,11 +99,11 @@ namespace spla { while (u_iter < u_count && v_iter < v_count) { if (p_u->Ai[u_iter] < p_v->Ai[v_iter]) { p_r->Ai.push_back(p_u->Ai[u_iter]); - p_r->Ax.push_back(p_u->Ax[u_iter]); + p_r->Ax.push_back(function(p_u->Ax[u_iter], v_fill_value)); u_iter += 1; } else if (p_v->Ai[v_iter] < p_u->Ai[u_iter]) { p_r->Ai.push_back(p_v->Ai[v_iter]); - p_r->Ax.push_back(p_v->Ax[v_iter]); + p_r->Ax.push_back(function(u_fill_value, p_v->Ax[v_iter])); v_iter += 1; } else { p_r->Ai.push_back(p_u->Ai[u_iter]); @@ -112,13 +115,13 @@ namespace spla { } while (u_iter < u_count) { p_r->Ai.push_back(p_u->Ai[u_iter]); - p_r->Ax.push_back(p_u->Ax[u_iter]); + p_r->Ax.push_back(function(p_u->Ax[u_iter], v_fill_value)); u_iter += 1; p_r->values += 1; } while (v_iter < v_count) { p_r->Ai.push_back(p_v->Ai[v_iter]); - p_r->Ax.push_back(p_v->Ax[v_iter]); + p_r->Ax.push_back(function(u_fill_value, p_v->Ax[v_iter])); v_iter += 1; p_r->values += 1; }