|
8 | 8 | <head> |
9 | 9 | <meta charset="utf-8" /> |
10 | 10 | <meta name="viewport" content="width=device-width, initial-scale=1.0" /> |
11 | | - <title>brevitas.core.function_wrapper.clamp — Brevitas 0.11.0 documentation</title> |
| 11 | + <title>brevitas.core.function_wrapper.clamp — Brevitas 0.12.0 documentation</title> |
12 | 12 |
|
13 | 13 |
|
14 | 14 |
|
|
123 | 123 |
|
124 | 124 |
|
125 | 125 |
|
126 | | - <img src="../../../../_static/brevitas_logo_black.svg" class="logo__image only-light" alt="Brevitas 0.11.0 documentation - Home"/> |
127 | | - <script>document.write(`<img src="../../../../_static/brevitas_logo_white.svg" class="logo__image only-dark" alt="Brevitas 0.11.0 documentation - Home"/>`);</script> |
| 126 | + <img src="../../../../_static/brevitas_logo_black.svg" class="logo__image only-light" alt="Brevitas 0.12.0 documentation - Home"/> |
| 127 | + <script>document.write(`<img src="../../../../_static/brevitas_logo_white.svg" class="logo__image only-dark" alt="Brevitas 0.12.0 documentation - Home"/>`);</script> |
128 | 128 |
|
129 | 129 |
|
130 | 130 | </a></div> |
|
180 | 180 |
|
181 | 181 |
|
182 | 182 | <li class="nav-item"> |
183 | | - <a class="nav-link nav-internal" href="../../../../architecture.html"> |
184 | | - Architecture |
| 183 | + <a class="nav-link nav-internal" href="../../../../user_guide/index.html"> |
| 184 | + User Guides |
185 | 185 | </a> |
186 | 186 | </li> |
187 | 187 |
|
|
312 | 312 |
|
313 | 313 |
|
314 | 314 | <li class="nav-item"> |
315 | | - <a class="nav-link nav-internal" href="../../../../architecture.html"> |
316 | | - Architecture |
| 315 | + <a class="nav-link nav-internal" href="../../../../user_guide/index.html"> |
| 316 | + User Guides |
317 | 317 | </a> |
318 | 318 | </li> |
319 | 319 |
|
@@ -551,18 +551,18 @@ <h1>Source code for brevitas.core.function_wrapper.clamp</h1><div class="highlig |
551 | 551 | <span class="bp">self</span><span class="p">,</span> |
552 | 552 | <span class="n">x</span><span class="p">:</span> <span class="n">Tensor</span><span class="p">,</span> |
553 | 553 | <span class="n">exponent_bit_width</span><span class="p">:</span> <span class="n">Tensor</span><span class="p">,</span> |
554 | | - <span class="n">mantissa_bit_width</span><span class="p">:</span> <span class="n">Tensor</span><span class="p">,</span> |
| 554 | + <span class="n">pre_compute_max_mantissa</span><span class="p">:</span> <span class="n">Tensor</span><span class="p">,</span> |
555 | 555 | <span class="n">exponent_bias</span><span class="p">:</span> <span class="n">Tensor</span><span class="p">):</span> |
556 | 556 |
|
557 | | - <span class="n">max_value</span> <span class="o">=</span> <span class="n">max_float</span><span class="p">(</span><span class="n">exponent_bit_width</span><span class="p">,</span> <span class="n">mantissa_bit_width</span><span class="p">,</span> <span class="n">exponent_bias</span><span class="p">)</span> |
| 557 | + <span class="n">max_value</span> <span class="o">=</span> <span class="n">max_float</span><span class="p">(</span><span class="n">exponent_bit_width</span><span class="p">,</span> <span class="n">pre_compute_max_mantissa</span><span class="p">,</span> <span class="n">exponent_bias</span><span class="p">)</span> |
558 | 558 | <span class="n">max_value</span> <span class="o">=</span> <span class="n">max_value</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">max_available_float</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">torch</span><span class="o">.</span><span class="n">min</span><span class="p">(</span> |
559 | 559 | <span class="n">max_value</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">max_available_float</span><span class="p">())</span> |
560 | 560 | <span class="n">min_value</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">tensor</span><span class="p">(</span><span class="mf">0.</span><span class="p">)</span> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">signed</span> <span class="k">else</span> <span class="o">-</span><span class="n">max_value</span> |
561 | 561 |
|
562 | 562 | <span class="c1"># Compute masks</span> |
563 | 563 | <span class="n">inf_mask</span> <span class="o">=</span> <span class="n">x</span><span class="o">.</span><span class="n">isinf</span><span class="p">()</span> |
564 | 564 | <span class="n">p_max_val_mask</span> <span class="o">=</span> <span class="n">x</span> <span class="o">></span> <span class="n">max_value</span> |
565 | | - <span class="n">n_max_val_mask</span> <span class="o">=</span> <span class="o">-</span><span class="n">x</span> <span class="o">></span> <span class="n">max_value</span> |
| 565 | + <span class="n">n_max_val_mask</span> <span class="o">=</span> <span class="n">x</span> <span class="o"><</span> <span class="n">min_value</span> |
566 | 566 |
|
567 | 567 | <span class="c1"># first clamp everything to +- max_value, basically the saturating case</span> |
568 | 568 | <span class="n">x</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">saturating_clamp</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">max_value</span><span class="p">,</span> <span class="n">min_value</span><span class="p">)</span> |
|
0 commit comments