|
5 | 5 | <meta name="color-scheme" content="light dark"><link rel="index" title="Index" href="../../genindex.html" /><link rel="search" title="Search" href="../../search.html" />
|
6 | 6 |
|
7 | 7 | <!-- Generated with Sphinx 7.2.6 and Furo 2024.01.29 -->
|
8 |
| - <title>delayedarray.BinaryIsometricOp - DelayedArray 0.4.0 documentation</title> |
| 8 | + <title>delayedarray.BinaryIsometricOp - DelayedArray 0.5.0 documentation</title> |
9 | 9 | <link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=fa44fd50" />
|
10 | 10 | <link rel="stylesheet" type="text/css" href="../../_static/styles/furo.css?v=135e06be" />
|
11 | 11 | <link rel="stylesheet" type="text/css" href="../../_static/styles/furo-extensions.css?v=36a5483c" />
|
|
122 | 122 | </label>
|
123 | 123 | </div>
|
124 | 124 | <div class="header-center">
|
125 |
| - <a href="../../index.html"><div class="brand">DelayedArray 0.4.0 documentation</div></a> |
| 125 | + <a href="../../index.html"><div class="brand">DelayedArray 0.5.0 documentation</div></a> |
126 | 126 | </div>
|
127 | 127 | <div class="header-right">
|
128 | 128 | <div class="theme-toggle-container theme-toggle-header">
|
|
145 | 145 | <div class="sidebar-sticky"><a class="sidebar-brand" href="../../index.html">
|
146 | 146 |
|
147 | 147 |
|
148 |
| - <span class="sidebar-brand-text">DelayedArray 0.4.0 documentation</span> |
| 148 | + <span class="sidebar-brand-text">DelayedArray 0.5.0 documentation</span> |
149 | 149 |
|
150 | 150 | </a><form class="sidebar-search-container" method="get" action="../../search.html" role="search">
|
151 | 151 | <input class="sidebar-search" placeholder="Search" name="q" aria-label="Search">
|
@@ -207,7 +207,7 @@ <h1>Source code for delayedarray.BinaryIsometricOp</h1><div class="highlight"><p
|
207 | 207 | <span class="kn">from</span> <span class="nn">.extract_dense_array</span> <span class="kn">import</span> <span class="n">extract_dense_array</span>
|
208 | 208 | <span class="kn">from</span> <span class="nn">.extract_sparse_array</span> <span class="kn">import</span> <span class="n">extract_sparse_array</span>
|
209 | 209 | <span class="kn">from</span> <span class="nn">.create_dask_array</span> <span class="kn">import</span> <span class="n">create_dask_array</span>
|
210 |
| -<span class="kn">from</span> <span class="nn">.chunk_shape</span> <span class="kn">import</span> <span class="n">chunk_shape</span> |
| 210 | +<span class="kn">from</span> <span class="nn">.chunk_grid</span> <span class="kn">import</span> <span class="n">chunk_grid</span> |
211 | 211 | <span class="kn">from</span> <span class="nn">.is_sparse</span> <span class="kn">import</span> <span class="n">is_sparse</span>
|
212 | 212 | <span class="kn">from</span> <span class="nn">.is_masked</span> <span class="kn">import</span> <span class="n">is_masked</span>
|
213 | 213 |
|
@@ -345,24 +345,30 @@ <h1>Source code for delayedarray.BinaryIsometricOp</h1><div class="highlight"><p
|
345 | 345 |
|
346 | 346 |
|
347 | 347 |
|
348 |
| -<div class="viewcode-block" id="chunk_shape_BinaryIsometricOp"> |
349 |
| -<a class="viewcode-back" href="../../api/delayedarray.html#delayedarray.BinaryIsometricOp.chunk_shape_BinaryIsometricOp">[docs]</a> |
350 |
| -<span class="nd">@chunk_shape</span><span class="o">.</span><span class="n">register</span> |
351 |
| -<span class="k">def</span> <span class="nf">chunk_shape_BinaryIsometricOp</span><span class="p">(</span><span class="n">x</span><span class="p">:</span> <span class="n">BinaryIsometricOp</span><span class="p">):</span> |
352 |
| -<span class="w"> </span><span class="sd">"""See :py:meth:`~delayedarray.chunk_shape.chunk_shape`."""</span> |
353 |
| - <span class="n">lchunk</span> <span class="o">=</span> <span class="n">chunk_shape</span><span class="p">(</span><span class="n">x</span><span class="o">.</span><span class="n">_left</span><span class="p">)</span> |
354 |
| - <span class="n">rchunk</span> <span class="o">=</span> <span class="n">chunk_shape</span><span class="p">(</span><span class="n">x</span><span class="o">.</span><span class="n">_right</span><span class="p">)</span> |
| 348 | +<div class="viewcode-block" id="chunk_grid_BinaryIsometricOp"> |
| 349 | +<a class="viewcode-back" href="../../api/delayedarray.html#delayedarray.BinaryIsometricOp.chunk_grid_BinaryIsometricOp">[docs]</a> |
| 350 | +<span class="nd">@chunk_grid</span><span class="o">.</span><span class="n">register</span> |
| 351 | +<span class="k">def</span> <span class="nf">chunk_grid_BinaryIsometricOp</span><span class="p">(</span><span class="n">x</span><span class="p">:</span> <span class="n">BinaryIsometricOp</span><span class="p">):</span> |
| 352 | +<span class="w"> </span><span class="sd">"""See :py:meth:`~delayedarray.chunk_grid.chunk_grid`."""</span> |
| 353 | + <span class="n">lchunk</span> <span class="o">=</span> <span class="n">chunk_grid</span><span class="p">(</span><span class="n">x</span><span class="o">.</span><span class="n">_left</span><span class="p">)</span> |
| 354 | + <span class="n">rchunk</span> <span class="o">=</span> <span class="n">chunk_grid</span><span class="p">(</span><span class="n">x</span><span class="o">.</span><span class="n">_right</span><span class="p">)</span> |
355 | 355 |
|
356 |
| - <span class="c1"># Not bothering with taking the lowest common denominator, as that</span> |
357 |
| - <span class="c1"># might be too aggressive and expanding to the entire matrix size.</span> |
358 |
| - <span class="c1"># We instead use the maximum chunk size (which might also expand, e.g.,</span> |
359 |
| - <span class="c1"># if you're combining column-major and row-major matrices; oh well).</span> |
360 |
| - <span class="c1"># Just accept that we'll probably need to break chunks during iteration.</span> |
361 |
| - <span class="n">output</span> <span class="o">=</span> <span class="p">[]</span> |
362 |
| - <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">lchunk</span><span class="p">)):</span> |
363 |
| - <span class="n">output</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="nb">max</span><span class="p">(</span><span class="n">lchunk</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">rchunk</span><span class="p">[</span><span class="n">i</span><span class="p">]))</span> |
364 |
| - |
365 |
| - <span class="k">return</span> <span class="p">(</span><span class="o">*</span><span class="n">output</span><span class="p">,)</span> </div> |
| 356 | + <span class="c1"># Favor the chunking for the more expensive grid, to avoid being penalized</span> |
| 357 | + <span class="c1"># heavily from suboptimal chunking for that array. </span> |
| 358 | + <span class="c1">#</span> |
| 359 | + <span class="c1"># Technically, we could optimize for the case where multiple dimensions</span> |
| 360 | + <span class="c1"># have the same boundaries, in which case we should favor full extraction</span> |
| 361 | + <span class="c1"># of the other dimensions and just iterate over the common dimensions.</span> |
| 362 | + <span class="c1"># This avoids any chunk discrepancies but seems like a pretty unlikely case</span> |
| 363 | + <span class="c1"># - if two arrays of the same shape disagree on the chunk boundaries of one</span> |
| 364 | + <span class="c1"># dimension, they'd probably disagree on the others as well.</span> |
| 365 | + <span class="c1"># </span> |
| 366 | + <span class="c1"># The other solution is to figure out some high-dimensional caching scheme</span> |
| 367 | + <span class="c1"># for the partially consumed chunks. Sounds like a royal pain.</span> |
| 368 | + <span class="k">if</span> <span class="n">lchunk</span><span class="o">.</span><span class="n">cost</span> <span class="o">></span> <span class="n">rchunk</span><span class="o">.</span><span class="n">cost</span><span class="p">:</span> |
| 369 | + <span class="k">return</span> <span class="n">lchunk</span> |
| 370 | + <span class="k">else</span><span class="p">:</span> |
| 371 | + <span class="k">return</span> <span class="n">rchunk</span></div> |
366 | 372 |
|
367 | 373 |
|
368 | 374 |
|
@@ -414,7 +420,7 @@ <h1>Source code for delayedarray.BinaryIsometricOp</h1><div class="highlight"><p
|
414 | 420 |
|
415 | 421 | </aside>
|
416 | 422 | </div>
|
417 |
| -</div><script src="../../_static/documentation_options.js?v=6c02275b"></script> |
| 423 | +</div><script src="../../_static/documentation_options.js?v=1dd76d02"></script> |
418 | 424 | <script src="../../_static/doctools.js?v=888ff710"></script>
|
419 | 425 | <script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
420 | 426 | <script src="../../_static/scripts/furo.js?v=32e29ea5"></script>
|
|
0 commit comments