From fee3b461af0f9c3d9b654c585104ee466a9e07ce Mon Sep 17 00:00:00 2001 From: Ben Harshbarger Date: Thu, 10 Sep 2026 16:04:12 -0700 Subject: [PATCH 1/2] Make sparse benchmark problem size scale with numNodes --- benchmarks/sparse.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/benchmarks/sparse.py b/benchmarks/sparse.py index c927018d1f4..5628ec1ef89 100644 --- a/benchmarks/sparse.py +++ b/benchmarks/sparse.py @@ -28,7 +28,9 @@ def compare_scipy(left, right, rtol=1e-9, atol=0.0, equal_nan=False): return True -def time_ak_sparse(N, trials, dtype, seed): +def time_ak_sparse(N_per_locale, trials, dtype, seed): + N = N_per_locale * cfg["numNodes"] + print(">>> arkouda {} sparse".format(dtype)) cfg = ak.get_config() print("numLocales = {}, numNodes {}, N = {:,}".format(cfg["numLocales"], cfg["numNodes"], N)) @@ -66,7 +68,8 @@ def time_ak_sparse(N, trials, dtype, seed): print("Average CSCxCSR time = {:.4f} seconds".format(np.mean(multiplication_times))) -def time_np_sparse(N, trials, dtype, seed): +def time_np_sparse(N_per_locale, trials, dtype, seed): + N = N_per_locale * cfg["numNodes"] print(">>> numpy {} sparse".format(dtype)) print("N = {:,}".format(N)) @@ -145,7 +148,7 @@ def create_parser(): parser = argparse.ArgumentParser(description="Benchmark sparse matrix creation and multiplication.") parser.add_argument("hostname", type=str, help="Name of the Arkouda server") parser.add_argument("port", type=int, help="Port of the Arkouda server") - parser.add_argument("-n", "--size", type=int, default=(10**6), help="Size of the sparse matrices") + parser.add_argument("-n", "--size", type=int, default=62500, help="Size of the sparse matrices") parser.add_argument("-t", "--trials", type=int, default=3, help="Number of trials for benchmarking") parser.add_argument( "-d", "--dtype", default="int64", help="Dtype of array ({})".format(", ".join(TYPES)) From 91f9268ea135a88408d3e495a5830278b934fa9e Mon Sep 17 00:00:00 2001 From: Ben Harshbarger Date: Thu, 10 Sep 2026 16:41:56 -0700 Subject: [PATCH 2/2] Correctly get arkouda config before computing problem size --- benchmarks/sparse.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/benchmarks/sparse.py b/benchmarks/sparse.py index 5628ec1ef89..902099ba976 100644 --- a/benchmarks/sparse.py +++ b/benchmarks/sparse.py @@ -29,10 +29,10 @@ def compare_scipy(left, right, rtol=1e-9, atol=0.0, equal_nan=False): def time_ak_sparse(N_per_locale, trials, dtype, seed): + cfg = ak.get_config() N = N_per_locale * cfg["numNodes"] print(">>> arkouda {} sparse".format(dtype)) - cfg = ak.get_config() print("numLocales = {}, numNodes {}, N = {:,}".format(cfg["numLocales"], cfg["numNodes"], N)) nnz = N * 10 @@ -69,7 +69,9 @@ def time_ak_sparse(N_per_locale, trials, dtype, seed): def time_np_sparse(N_per_locale, trials, dtype, seed): + cfg = ak.get_config() N = N_per_locale * cfg["numNodes"] + print(">>> numpy {} sparse".format(dtype)) print("N = {:,}".format(N))