From 6a01e0dbd75c3e86ee509cbfad3f1b368adf1cb8 Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner Date: Thu, 2 Mar 2017 02:58:38 -0500 Subject: [PATCH] Complexity gathering: Helmholtz [ci skip] --- examples/sym-exp-complexity.py | 35 +++++++++++++++++++++++++--------- 1 file changed, 26 insertions(+), 9 deletions(-) diff --git a/examples/sym-exp-complexity.py b/examples/sym-exp-complexity.py index 6c4de3a6..bde21c42 100644 --- a/examples/sym-exp-complexity.py +++ b/examples/sym-exp-complexity.py @@ -1,12 +1,14 @@ import numpy as np import pyopencl as cl import loopy as lp -from sumpy.kernel import LaplaceKernel +from sumpy.kernel import LaplaceKernel, HelmholtzKernel from sumpy.expansion.local import ( LaplaceConformingVolumeTaylorLocalExpansion, + HelmholtzConformingVolumeTaylorLocalExpansion, ) from sumpy.expansion.multipole import ( LaplaceConformingVolumeTaylorMultipoleExpansion, + HelmholtzConformingVolumeTaylorMultipoleExpansion, ) from sumpy.e2e import E2EFromCSR @@ -14,14 +16,23 @@ from sumpy.e2e import E2EFromCSR def find_flops(): ctx = cl.create_some_context() - knl = LaplaceKernel(2) + if 0: + knl = LaplaceKernel(2) + m_expn_cls = LaplaceConformingVolumeTaylorMultipoleExpansion + l_expn_cls = LaplaceConformingVolumeTaylorLocalExpansion + flop_type = np.float64 + else: + knl = HelmholtzKernel(2) + m_expn_cls = HelmholtzConformingVolumeTaylorMultipoleExpansion + l_expn_cls = HelmholtzConformingVolumeTaylorLocalExpansion + flop_type = np.complex128 - orders = list(range(1, 21, 1)) + orders = list(range(1, 11, 1)) flop_counts = [] for order in orders: print(order) - m_expn = LaplaceConformingVolumeTaylorMultipoleExpansion(knl, order) - l_expn = LaplaceConformingVolumeTaylorLocalExpansion(knl, order) + m_expn = m_expn_cls(knl, order) + l_expn = l_expn_cls(knl, order) m2l = E2EFromCSR(ctx, m_expn, l_expn) loopy_knl = m2l.get_kernel() @@ -32,7 +43,7 @@ def find_flops(): "centers,src_expansions": np.float64, }) - flops = lp.get_op_map(loopy_knl).filter_by(dtype=[np.float64]).sum() + flops = lp.get_op_map(loopy_knl).filter_by(dtype=[flop_type]).sum() flop_counts.append( flops.eval_with_dict( dict(isrc_start=0, isrc_stop=1, ntgt_boxes=1))) @@ -46,13 +57,20 @@ def plot_flops(): case = "3D Laplace M2L" orders = [1, 2, 3, 4, 5, 6, 7, 8, 9] flops = [62, 300, 914, 2221, 4567, 8405, 14172, 22538, 34113] + filename = "laplace-m2l-complexity-3d.pdf" - elif 1: + elif 0: case = "2D Laplace M2L" orders = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20] flops = [36, 99, 193, 319, 476, 665, 889, 1143, 1429, 1747, 2097, 2479, 2893, 3339, 3817, 4327, 4869, 5443, 6049, 6687] + filename = "laplace-m2l-complexity-2d.pdf" + elif 1: + case = "2D Helmholtz M2L" + orders = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] + flops = [45, 194, 474, 931, 1650, 2632, 3925, 5591, 7706, 10272] + filename = "helmholtz-m2l-complexity-2d.pdf" import matplotlib.pyplot as plt plt.rc("font", size=16) @@ -62,8 +80,7 @@ def plot_flops(): plt.loglog(orders, flops, "o-") plt.grid() plt.tight_layout() - plt.savefig("laplace-m2l-complexity-2d.pdf") - + plt.savefig(filename) if __name__ == "__main__": -- GitLab