Эффективные методы реализации моделей ИИ
FPU-расширение поверх целочисленного ядра
Кодирование
Операции
Стандарты
| Тип | E | M | Значение |
|---|---|---|---|
| ±0 | 0…0 | 0…0 | ±0 |
| Субнормальные | 0…0 | ≠ 0 | (−1)S · 21−bias · 0.M |
| Нормальные | 1…Emax | любое | (−1)S · 2E−bias · 1.M |
| ±∞ | 1…1 | 0…0 | ±∞ |
| NaN | 1…1 | ≠ 0 | NaN |
| Тип | E | M | Значение |
|---|---|---|---|
| E4M3 · bias = 2e−1−1 · нет ∞ · NaN при E=1…1, M=1…1 | |||
| ±0 | 0000 | 000 | ±0 |
| Субнормальные | 0000 | ≠ 0 | (−1)S · 21−bias · 0.M |
| Нормальные | 0001…1111 | любое | (−1)S · 2E−bias · 1.M |
| ±∞ | — | — | нет |
| NaN | 1111 | 111 | NaN |
| E5M2 · bias = 2e−1−1 · ±∞ как IEEE 754 · NaN при E=1…1, M≠0 | |||
| ±0 | 00000 | 00 | ±0 |
| Субнормальные | 00000 | ≠ 0 | (−1)S · 21−bias · 0.M |
| Нормальные | 00001…11110 | любое | (−1)S · 2E−bias · 1.M |
| ±∞ | 11111 | 00 | ±∞ |
| NaN | 11111 | ≠ 0 | NaN |
3 задания
Скалярное произведение
\(\mathbf{a} \cdot \mathbf{b} = \sum_{i} a_i b_i\)
Вектора хранятся в памяти в формате OFP8 E4M3. Пройдитесь по парам элементов, перемножьте и накопите сумму в acc как float16.
Матрица × вектор
\(\mathbf{y} = W\mathbf{x}\)
Матрица W [m,n] и вектор x [n,1] хранятся в памяти построчно в формате OFP8 E4M3. Реализуйте умножение матрицы на вектор. Результат (float16) запишите в res.
Экспонента
Входное x хранится в памяти как float16. Нет инструкции FEXP — вычислите через ряд Тейлора или тождество ex = 2x/ln 2. Результат запишите в res.