Реализованы две функции, вычисляющие произведение Кронекера двух булевых матриц над булевым полукольцом с диагональной маской и без (kron_prod_with_mask, kron_prod_no_mask). Также в репозитории есть несколько примеров матриц для этих функций.
Собрать примеры можно с помощью команды
make examples
Исполняемые файлы будут собраны в ./build/examples по умолчанию.
Запустить проверку линтером можно с помощью команды
make lint
Удалить все результаты сборки и объектные файлы можно командой
make clean
Запустить все примеры:
make run_examples
Эксперимент проводился на машине со следующими характеристиками: Arch Linux, Intel Core i3-7020U (4), 2.30 GHz, DDR4 8GB RAM и Intel HD Graphics 620, 1.00 GHz.
Данные получены с помощью Valgrind, Massif и heaptrack.
| Без маски | С маской | |
|---|---|---|
| Allocations | 76 | 109 |
| Allocated bytes | 1,875,199 | 1,917,545 |
| Без маски | С маской | |
|---|---|---|
| Allocations | 76 | 111 |
| Allocated bytes | 1,875,211 | 1,919,133 |
| Без маски | С маской | |
|---|---|---|
| Allocations | 132 | 150 |
| Allocated bytes | 1,955,901 | 1,991,087 |
| Без маски | С маской | |
|---|---|---|
| Allocations | 17,760 | 17,782 |
| Allocated bytes | 36,640,113 | 36,684,419 |
| Mib used in peak | 2.1 | 2.1 |
| Без маски | С маской | |
|---|---|---|
| Allocations | 487239 | 487252 |
| Mib used in peak | 25.9 | 26.4 |
| Total runtime, seconds | 17 | 18 |