Почему мой алгоритм отбрасывания лица использует битовые операции, а SIMD медленнее, чем наивная версия? [закрыто]C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Почему мой алгоритм отбрасывания лица использует битовые операции, а SIMD медленнее, чем наивная версия? [закрыто]

Сообщение Anonymous »

контекст < /h1>
Я экспериментирую с алгоритмом выхвата лица для создания сетки вокселей и пробовал два оптимизированных подхода: < /p>
  • Код: Выделить всё

    VisibilityCalculatorBinary.GetVisibleFaces()
    - использует битовые маски и операции ручного бита.
  • Код: Выделить всё

    VisibilityCalculatorSimd.GetVisibleFaces()
    -обрабатывает воксели с использованием system.numerics.vector .
code
Репозиторий: https://github.com/nicolas-goyon/voxel- ... on-library> writer:> > > > > > warphors:> warphors-fruy-prainto-com 10-Update-Chunk- и Voxel-Architecture-out-simd-операция < /p>

Код: Выделить всё

[Benchmarks from `ConsoleAppExample/benchmark/VisibilityBenchmark.cs`]
[Code from `VisibilityCalculator.cs`, `VisibilityCalculatorBinary.cs`, and `VisibilityCalculatorSimd.cs` in the folder : `VoxelMeshOptimizerLibrary/examples/ConsoleAppExample/VisibilityCalculators/`]
контрольные результаты
Цифры в ConsoLeaPexample (с использованием BenchmarkDotnet) показывают оба метода, работающие медленнее, чем наивная реализация (

Код: Выделить всё

VisibilityCalculator.GetVisibleFaces
). Например, на сетке Voxel 250 x 250 x 250 базовая линия занимает около 1,4 с, в то время как версии битов и SIMD занимают 4,1 с и 3,2 с соответственно. также выделенное пространство сначала кажется слишком большим. /> error < /th>
stddev < /th>
медиана < /th>
aterio < /th>
Соотношение Alloc < /th>
< /tr>
< /thead>


Naive < /td>
50 < /td>
1,06 < /td>
-< /td>

1,9901 мс < /td>
12,028 MS < /td>
-< /td>

1.03 < /td>
< /tr>

simd < /td>
50 < /td>
0.37 < /td>
-< /td>
-< /td>
-< /td>
0,3471 мс < /td>
0,9848 мс < /td>
3,758 мс < /td>
0.83 < /td>
-< /td>
< /td>
< /tr>

Naive < /td>
250 < /td>
1,404.183 мс < /td>
27,6543 MS>
22000.0000
21000.0000
3000.0000
0.25 < /td>
22000.0000 < /td>
21000.0000 < /td>
610,96 Mb < /td>
1.03 < /td>
< /tr>

simd < /td>
250 < /td>
2,52 < /td>
0.10 < /td>
22000.0000 < /td>
21000.0000
3000.0000
596,05 Mb


Подробнее здесь: https://stackoverflow.com/questions/797 ... than-the-n
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»