Loopy is slow in make_kernel, preprocess_kernel and codegen
- Dominant language
- Python
- Stars
- 636
- Forks
- 81
- Avg merge
- 1d 19h
- Merged PRs (30d)
- 7
Description
Thanks to @kaushikcfd, scheduling is now super fast compared to other parts of loopy. Still, `make_kernel, preprocess_kernel, codegen` take so much time that some sumpy kernels are unusable.
Here's a small example with https://github.com/isuruf/sumpy/tree/derivtaker
```python
import numpy as np
import sys
import loopy as lp
import pyopencl as cl
from sumpy.expansion.multipole import LaplaceConformingVolumeTaylorMultipoleExpansion
from sumpy.expansion.local import LaplaceConformingVolumeTaylorLocalExpansion
from sumpy.kernel import LaplaceKernel
import sumpy.symbolic as sym
import logging
logger = logging.getLogger(__name__)
try:
import faulthandler
except ImportError:
pass
else:
faulthandler.enable()
knl = LaplaceKernel(3)
local_expn_class = LaplaceConformingVolumeTaylorLocalExpansion
mpole_expn_class = LaplaceConformingVolumeTaylorMultipoleExpansion
order = 12
ctx_factory = cl._csc
logging.basicConfig(level=logging.INFO)
from sympy.core.cache import clear_cache
clear_cache()
ctx = ctx_factory()
queue = cl.CommandQueue(ctx, properties=cl.command_queue_properties.PROFILING_ENABLE)
np.random.seed(17)
target_kernels = [knl]
m_expn = mpole_expn_class(knl, order=order)
l_expn = local_expn_class(knl, order=order)
from sumpy import P2EFromSingleBox, E2PFromSingleBox, P2P, E2EFromCSR
m2l = E2EFromCSR(ctx, m_expn, l_expn)
loopy_knl = m2l.get_optimized_kernel()
loopy_knl = lp.add_and_infer_dtypes(
loopy_knl,
dict(
tgt_ibox=np.int32,
centers=np.float64,
tgt_center=np.float64,
target_boxes=np.int32,
src_ibox=np.int32,
src_expansions=np.float64,
tgt_rscale=np.float64,
src_rscale=np.float64,
src_box_starts=np.int32,
src_box_lists=np.int32,
),
)
lp.generate_code_v2(loopy_knl)
```
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.