nmpp
Структуры данных | Определения типов
Типы векторных данных

Структуры данных

struct  v16nm4s
 
struct  v4nm8s
 
struct  s_v8nm8s
 
struct  s_v16nm8s
 
struct  s_v4nm16s
 
struct  s_v8nm16s
 
struct  s_v16nm16s
 
struct  s_v2nm32s
 
struct  s_v4nm32s
 
struct  s_v8nm32s
 
struct  s_v16nm32s
 
struct  s_v16nm4u
 
struct  s_v4nm8u
 
struct  s_v8nm8u
 
struct  s_v16nm8u
 
struct  s_v4nm16u
 
struct  s_v8nm16u
 
struct  s_v16nm16u
 
struct  s_v2nm32u
 
struct  s_v4nm32u
 
struct  s_v8nm32u
 
struct  s_v16nm32u
 

Определения типов

typedef int nm1
 
typedef void nm2s
 
typedef void nm4s
 
typedef char nm8s
 
typedef nm8s nm8s7b
 
typedef short nm16s
 
typedef nm16s nm16s15b
 
typedef int nm32s
 
typedef int nm32s31b
 
typedef int nm32s30b
 
typedef long long nm64s
 
typedef nm64s nm64s63b
 
typedef void nm2u
 
typedef void nm4u
 
typedef nm4u nm4u3b
 
typedef unsigned char nm8u
 
typedef nm8u nm8u7b
 
typedef unsigned short nm16u
 
typedef nm16u nm16u15b
 
typedef unsigned int nm32u
 
typedef unsigned int nm32u31b
 
typedef unsigned long long nm64u
 
typedef struct s_v8nm8s v8nm8s
 
typedef struct s_v16nm8s v16nm8s
 
typedef struct s_v4nm16s v4nm16s
 
typedef struct s_v8nm16s v8nm16s
 
typedef struct s_v16nm16s v16nm16s
 
typedef struct s_v2nm32s v2nm32s
 
typedef struct s_v4nm32s v4nm32s
 
typedef struct s_v8nm32s v8nm32s
 
typedef struct s_v16nm32s v16nm32s
 
typedef v16nm8s v16nm8s7b
 
typedef struct s_v16nm4u v16nm4u
 
typedef struct s_v4nm8u v4nm8u
 
typedef struct s_v8nm8u v8nm8u
 
typedef struct s_v16nm8u v16nm8u
 
typedef struct s_v4nm16u v4nm16u
 
typedef struct s_v8nm16u v8nm16u
 
typedef struct s_v16nm16u v16nm16u
 
typedef struct s_v2nm32u v2nm32u
 
typedef struct s_v4nm32u v4nm32u
 
typedef struct s_v8nm32u v8nm32u
 
typedef struct s_v16nm32u v16nm32u
 
typedef v16nm4u v16nm4b3u
 

Подробное описание

В данном разделе описываются типы векторных данных с которыми могут работать функции библиотеки, задействующие векторный узел. Также рассматриваюся соглашения о передаче параметров.
Поскольку векторный узел работает с данными произвольной разрядности, упакованными в 64-разрядные слова, то это накладывает следующие ограничения на работу с массивами данных и их типами:

  1. Указатель на векторные данные всегда являтся четным адресом. Т.е. выровнен в памяти по границе 64р. слов.
  2. Размер массива, передаваемый на вход функций, как правило, исчисляется в отдельных элементах, составляющих этот массив.
    Кратность этого размера по умолчанию определяется кол-вом чисел, упакованных в 64р. слово.
    Например:
    для nm8s кратность-8
    для nm16s кратность-4
    для nm32s кратность-2
    для nm64s кратность-1
    Если в описании указаны другие условия крaтности, как например [32,64,96,128...], то это означает, что допустимые размеры могут только из этого диапазона с кратностью 32.
  3. Типы nm8s , nm16s, nm32s... хоть и созданы для обозначания разрядности упакованных данных, но с точки зрения С++ таковыми не являются , так как определяются через typedef как производные от стандартных типов char, short и int, которые все три в свою очередь являются 32-разрядными типами в архитектуре NeuroMatrix. Поэтому эти векторные типы можно использовать только с оператором * (nm8s*,nm16s*,... ). Операции же sizeof() к массивам этих типов будут выполянться некорректно.


Расшифровка мнемоники в названии типа:

  1. Префикс nm - означет что данные являются векторными ,упакованными в 64р слова (nm8s,nm8u,nm16s.... ).
  2. Разрядность данных указывается после префикса nm (nm8s,nm8u - байтовые массивы, nm16s,nm16u - 16р. массивы ).
  3. суфикс s или u оначает знаковый или беззнаковый тип данных.
  4. Для работы некоторых функций во избежании переполнения требуется суженный диапазон возможных значений, чем позволяет разрядность. Такие даные имеют суффикс в виде кол-ва значащих бит в слове и символом b. (nm8s7b)

Типы

◆ nm1

typedef int nm1
\~

Большинство функций библиотеки получают и возвращают массивы упакованных чисел. Обращение к элементам данных массивов должно производится с помощью функций доступа к элементам Getval() and Setval().

\~

Тип характеризует векторные данные как массив одноразрядных чисел.
Начальный адрес массива должен быть выровнен по границе 64р слова.
Предполагается , что размер массива данного типа как минимум кратен 64.

Диапазон значений:

$[-1,0]$

◆ nm16s

typedef short nm16s

Тип характеризует векторные данные как массив 16-ти разрядных чисел со знаком.
Начальный адрес массива должен быть выровнен по границе 64р слова.
Предполагается , что размер массива данного типа как минимум кратен 4.

Диапазон значений:

$[-2^{15},\ldots,^+2^{15}-1]$.

◆ nm16s15b

typedef nm16s nm16s15b

Тип характеризует векторные данные как массив 16-ти разрядных чисел со знаком с ограниченным диапазоном принимаемых значений.
Начальный адрес массива должен быть выровнен по границе 64р слова.
Предполагается , что размер массива данного типа как минимум кратен 4.

Диапазон значений:

$[-2^{14},\ldots,+2^{14}-1]$

◆ nm16u

typedef unsigned short nm16u

Тип характеризует векторные данные как массив 16-ти разрядных чисел без знака.
Начальный адрес массива должен быть выровнен по границе 64р слова.
Предполагается , что размер массива данного типа как минимум кратен 4.

Диапазон значений:

$[0,\ldots,2^{16}-1]$.

◆ nm16u15b

typedef nm16u nm16u15b

Тип характеризует векторные данные как массив 16-ти разрядных чисел без знака.
Начальный адрес массива должен быть выровнен по границе 64р слова.
Предполагается , что размер массива данного типа как минимум кратен 4.

Диапазон значений:

$[-2^{14},\ldots,^+2^{14}-1]$.

◆ nm2s

typedef void nm2s

Тип характеризует векторные данные как массив 2-х разрядных чисел со знаком.
Начальный адрес массива должен быть выровнен по границе 64р слова.
Предполагается , что размер массива данного типа как минимум кратен 32.

Диапазон значений:

$[-2^1,\ldots,+2^1-1]=[-2,\ldots,+1]$

◆ nm2u

typedef void nm2u

Тип характеризует векторные данные как массив 2-х разрядных чисел без знака.
Начальный адрес массива должен быть выровнен по границе 64р слова.
Предполагается , что размер массива данного типа как минимум кратен 32.

Диапазон значений:

$[0,\ldots,+2^2-1]=[0,\ldots,3]$

◆ nm32s

typedef int nm32s

Тип характеризует векторные данные как массив 32-х разрядных чисел со знаком.
Начальный адрес массива должен быть выровнен по границе 64р слова.
Предполагается , что размер массива данного типа как минимум кратен 2.

Диапазон значений:

$[-2^{31},\ldots,+2^{31}-1]$.

◆ nm32s30b

typedef int nm32s30b

Тип характеризует векторные данные как массив 32-х разрядных чисел со знаком.
Начальный адрес массива должен быть выровнен по границе 64р слова.
Предполагается , что размер массива данного типа как минимум кратен 2.

Диапазон значений:

$[-2^{29},\ldots,2^{29}-1]$.

◆ nm32s31b

typedef int nm32s31b

Тип характеризует векторные данные как массив 32-х разрядных чисел со знаком.
Начальный адрес массива должен быть выровнен по границе 64р слова.
Предполагается , что размер массива данного типа как минимум кратен 2.

Диапазон значений:

$[-2^{30},\ldots,2^{30}-1]$.

◆ nm32u

typedef unsigned int nm32u

Тип характеризует векторные данные как массив 32-х разрядных чисел без знака.
Начальный адрес массива должен быть выровнен по границе 64р слова.
Предполагается , что размер массива данного типа как минимум кратен 2.

Диапазон значений

$[0,\ldots,2^{32}-1]$.

◆ nm32u31b

typedef unsigned int nm32u31b

Тип характеризует векторные данные как массив 32-х разрядных чисел без знака.
Начальный адрес массива должен быть выровнен по границе 64р слова.
Предполагается , что размер массива данного типа как минимум кратен 2.

Диапазон значений

$[0,\ldots,2^{31}-1]$.

◆ nm4s

typedef void nm4s

Тип характеризует векторные данные как массив 4-х разрядных чисел со знаком.
Начальный адрес массива должен быть выровнен по границе 64р слова.
Предполагается , что размер массива данного типа как минимум кратен 16.

Диапазон значений:

$[-2^3,\ldots,+2^3-1]=[-8,\ldots,+7]$

◆ nm4u

typedef void nm4u

Тип характеризует векторные данные как массив 4-х разрядных чисел без знака.
Начальный адрес массива должен быть выровнен по границе 64р слова.
Предполагается , что размер массива данного типа как минимум кратен 16.

Диапазон значений:

$[0,\ldots,+2^4-1]=[0,\ldots,15]$

◆ nm4u3b

typedef nm4u nm4u3b

Тип характеризует векторные данные как массив 4-х разрядных чисел без знака.
Начальный адрес массива должен быть выровнен по границе 64р слова.
Предполагается , что размер массива данного типа как минимум кратен 16.

Диапазон значений:

$[0,\ldots,+2^3-1]=[0,\ldots,7]$

◆ nm64s

typedef long long nm64s

Тип характеризует векторные данные как массив 64-х разрядных чисел со знаком.
Начальный адрес массива должен быть выровнен по границе 64р слова.
По умолчанию размер массива произвольный .

Диапазон значений:

$[-2^{63},\ldots,^+2^{63}-1]$

◆ nm64s63b

typedef nm64s nm64s63b

Тип характеризует векторные данные как массив 64-х разрядных чисел со знаком.
Начальный адрес массива должен быть выровнен по границе 64р слова.
По умолчанию размер массива произвольный .

Диапазон значений:

$[-2^{62},\ldots,+2^{62}-1]$

◆ nm64u

typedef unsigned long long nm64u

Тип характеризует векторные данные как массив 64-х разрядных чисел без знака.
Начальный адрес массива должен быть выровнен по границе 64р слова.
По умолчанию размер массива произвольный .

Диапазон значений

$[0,\ldots,2^{64}-1]$.

◆ nm8s

typedef char nm8s

Тип характеризует векторные данные как массив 8-ми разрядных чисел со знаком.
Начальный адрес массива должен быть выровнен по границе 64р слова.
Предполагается , что размер массива данного типа как минимум кратен 8.

Диапазон значений:

$[-2^7,\ldots,+2^7-1]=[-128,\ldots,+127]$

◆ nm8s7b

typedef nm8s nm8s7b

Тип характеризует векторные данные как массив 8-ми разрядных чисел со знаком.
Начальный адрес массива должен быть выровнен по границе 64р слова.
Предполагается , что размер массива данного типа как минимум кратен 8.

Диапазон значений:

$[-2^6,\ldots,+2^6-1]=[-64,\ldots,+63]$

◆ nm8u

typedef unsigned char nm8u

Тип характеризует векторные данные как массив 8-ми разрядных чисел без знака.
Начальный адрес массива должен быть выровнен по границе 64р слова.
Предполагается , что размер массива данного типа как минимум кратен 8.

Диапазон значений:

$[0,\ldots,+2^8-1]=[0,\ldots,255]$

◆ nm8u7b

typedef nm8u nm8u7b

Тип характеризует векторные данные как массив 8-ми разрядных чисел без знака.
Начальный адрес массива должен быть выровнен по границе 64р слова.
Предполагается , что размер массива данного типа как минимум кратен 8.

Диапазон значений:

$[0,\ldots,+2^7-1]=[0,\ldots,127]$

◆ v16nm16s

typedef struct s_v16nm16s v16nm16s
\~

Тип векторной структуры, состоящей из 16-ти 16р. чисел со знаком.

◆ v16nm16u

typedef struct s_v16nm16u v16nm16u
\~

Тип векторной структуры, состоящей из 16-ти 16р. чисел без знака.

◆ v16nm32s

typedef struct s_v16nm32s v16nm32s
\~

Тип векторной структуры, состоящей из 16-ти 32р. чисел со знаком.

◆ v16nm32u

typedef struct s_v16nm32u v16nm32u
\~

Тип векторной структуры, состоящей из 16-ти 32р. чисел без знака.

◆ v16nm4b3u

typedef v16nm4u v16nm4b3u
\~

Тип векторной структуры, состоящей из 16-ти 32р. чисел со знаком.

Диапазон значений элементов структуры:

$[0,\ldots,7]$

◆ v16nm4u

typedef struct s_v16nm4u v16nm4u

Тип векторной структуры, состоящей из 16-ти 4-р. чисел без знака.

◆ v16nm8s

typedef struct s_v16nm8s v16nm8s
\~

Тип векторной структуры, состоящей из 16-ти 8р. чисел со знаком.

◆ v16nm8s7b

typedef v16nm8s v16nm8s7b
\~

Тип векторной структуры, состоящей из 16-ти 32р. чисел со знаком.

Диапазон значений элементов структуры:

$[-64,\ldots,+63]$

◆ v16nm8u

typedef struct s_v16nm8u v16nm8u
\~

Тип векторной структуры, состоящей из 16-ти 8р. чисел без знака.

◆ v2nm32s

typedef struct s_v2nm32s v2nm32s
\~

Тип векторной структуры, состоящей из 2-х 32р. чисел со знаком.

◆ v2nm32u

typedef struct s_v2nm32u v2nm32u
\~

Тип векторной структуры, состоящей из 2-х 32р. чисел без знака.

◆ v4nm16s

typedef struct s_v4nm16s v4nm16s
\~

Тип векторной структуры, состоящей из 4-х 16р. чисел со знаком.

◆ v4nm16u

typedef struct s_v4nm16u v4nm16u
\~

Тип векторной структуры, состоящей из 4-х 16р. чисел без знака.

◆ v4nm32s

typedef struct s_v4nm32s v4nm32s
\~

Тип векторной структуры, состоящей из 4-х 32р. чисел со знаком.

◆ v4nm32u

typedef struct s_v4nm32u v4nm32u
\~

Тип векторной структуры, состоящей из 4-х 32р. чисел без знака.

◆ v4nm8u

typedef struct s_v4nm8u v4nm8u
\~

Тип векторной структуры, состоящей из 4-х 8р. чисел без знака.

◆ v8nm16s

typedef struct s_v8nm16s v8nm16s
\~

Тип векторной структуры, состоящей из 8-ми 16р. чисел со знаком.

◆ v8nm16u

typedef struct s_v8nm16u v8nm16u
\~

Тип векторной структуры, состоящей из 8-ми 16р. чисел без знака.

◆ v8nm32s

typedef struct s_v8nm32s v8nm32s
\~

Тип векторной структуры, состоящей из 8-ми 32р. чисел со знаком.

◆ v8nm32u

typedef struct s_v8nm32u v8nm32u
\~

Тип векторной структуры, состоящей из 8-ми 32р. чисел без знака.

◆ v8nm8s

typedef struct s_v8nm8s v8nm8s
\~

Тип векторной структуры, состоящей из 8-ми 8р. чисел со знаком.

◆ v8nm8u

typedef struct s_v8nm8u v8nm8u
\~

Тип векторной структуры, состоящей из 8-ми 8р. чисел без знака.