Re[3]: 2D-Linq и оптимизация цифровых фильтров - 4
От: VladCore  
Дата: 06.08.20 11:15
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Здравствуйте, VladCore, Вы писали:

VC>>я не смотрел исходники но возможно требуется AVX2 (целочисленный)? но тогда непонятно почему вешается а не падает с ошибкой?

S>Перепроверь на новой версии — там не будет векторизованных операций, но интересно посмотреть скалярную статистику на твоих железках.


ok. сегодня проверю.
Re[3]: 2D-Linq и оптимизация цифровых фильтров - 4
От: VladCore  
Дата: 06.08.20 18:56
Оценка: 78 (1)
Здравствуйте, Sinclair, Вы писали:

S>Перепроверь на новой версии — там не будет векторизованных операций, но интересно посмотреть скалярную статистику на твоих железках.


не вешается https://paste.c-net.org/GunnedPointing

но еще остались NullReferenceException-ы
Re[16]: 2D-Linq и оптимизация цифровых фильтров - 4
От: Mystic Artifact  
Дата: 07.08.20 03:07
Оценка: 105 (1)
Здравствуйте, Sinclair, Вы писали:

Пропустил ответ.

MA>> Я не знаю, но в том асме, что я видел — куча short-forward бранчей. Это то что почти все процессоры понимают, но я х.з.

S>Ну да — собственно каждый if или ?: — это short-forward branch.
Так и есть, но для циклов это может быть несколько наивно, т.к. в циклах можно нехило выиграть за счёт оптимального "code layout". К примеру, не помню в каком версии дотнета уже это добавили, но бранч с throw автоматом считается маловероятным (unlikely) и код для него отправляется в самый самый низ метода. Но, конечно когда у тебя цикл на 40Кб кода тут по моему уже пофигу... (Add: я понимаю, что тут вообще зависимость от данных которые по-честному могут быть любыми, так что такого рода оптимизации как бы и не имеют смысла, но кто знает...)

S>Ага. Можешь ещё выложить статистику по C4 бенчмарку?

Первый тест не знаю почему имеет чуть лучшие цифры, пересобрал потом всё на чистую и повторил два раза.


BenchmarkDotNet=v0.12.1, OS=Windows 10.0.19041.388 (2004/?/20H1)
Intel Core i7-4770 CPU 3.40GHz (Haswell), 1 CPU, 8 logical and 4 physical cores
.NET Core SDK=5.0.100-preview.6.20318.15
  [Host]     : .NET Core 3.1.6 (CoreCLR 4.700.20.26901, CoreFX 4.700.20.31603), X64 RyuJIT
  DefaultJob : .NET Core 3.1.6 (CoreCLR 4.700.20.26901, CoreFX 4.700.20.31603), X64 RyuJIT


|             Method |   FileName |      Mean |    Error |   StdDev | Ratio | RatioSD | BranchInstructions/Op | BranchMispredictions/Op |
|------------------- |----------- |----------:|---------:|---------:|------:|--------:|----------------------:|------------------------:|
|          NaturalC4 | p00743.bmp | 211.81 ms | 0.435 ms | 0.340 ms |  2.36 |    0.02 |           164,655,559 |                 454,239 |
|           UnsafeC4 | p00743.bmp |  89.84 ms | 0.838 ms | 0.784 ms |  1.00 |    0.00 |            22,160,318 |                  89,828 |
|             LinqC4 | p00743.bmp |  87.73 ms | 0.333 ms | 0.312 ms |  0.98 |    0.01 |            25,311,413 |                 157,601 |
| LinqC4VectorCached | p00743.bmp |  44.92 ms | 0.696 ms | 0.651 ms |  0.50 |    0.01 |             9,687,699 |                  51,875 |


BenchmarkDotNet=v0.12.1, OS=Windows 10.0.19041.388 (2004/?/20H1)
Intel Core i7-4770 CPU 3.40GHz (Haswell), 1 CPU, 8 logical and 4 physical cores
.NET Core SDK=5.0.100-preview.6.20318.15
  [Host]     : .NET Core 3.1.6 (CoreCLR 4.700.20.26901, CoreFX 4.700.20.31603), X64 RyuJIT
  DefaultJob : .NET Core 3.1.6 (CoreCLR 4.700.20.26901, CoreFX 4.700.20.31603), X64 RyuJIT


|             Method |   FileName |      Mean |    Error |   StdDev | Ratio | RatioSD |
|------------------- |----------- |----------:|---------:|---------:|------:|--------:|
|          NaturalC4 | p00743.bmp | 222.25 ms | 1.920 ms | 1.702 ms |  2.21 |    0.03 |
|           UnsafeC4 | p00743.bmp | 100.75 ms | 1.391 ms | 1.301 ms |  1.00 |    0.00 |
|             LinqC4 | p00743.bmp |  99.11 ms | 0.449 ms | 0.398 ms |  0.98 |    0.01 |
| LinqC4VectorCached | p00743.bmp |  55.95 ms | 1.084 ms | 1.014 ms |  0.56 |    0.01 |


BenchmarkDotNet=v0.12.1, OS=Windows 10.0.19041.388 (2004/?/20H1)
Intel Core i7-4770 CPU 3.40GHz (Haswell), 1 CPU, 8 logical and 4 physical cores
.NET Core SDK=5.0.100-preview.6.20318.15
  [Host]     : .NET Core 3.1.6 (CoreCLR 4.700.20.26901, CoreFX 4.700.20.31603), X64 RyuJIT
  DefaultJob : .NET Core 3.1.6 (CoreCLR 4.700.20.26901, CoreFX 4.700.20.31603), X64 RyuJIT


|             Method |   FileName |      Mean |    Error |   StdDev | Ratio | RatioSD |
|------------------- |----------- |----------:|---------:|---------:|------:|--------:|
|          NaturalC4 | p00743.bmp | 221.45 ms | 1.154 ms | 1.023 ms |  2.21 |    0.03 |
|           UnsafeC4 | p00743.bmp | 100.28 ms | 1.354 ms | 1.201 ms |  1.00 |    0.00 |
|             LinqC4 | p00743.bmp |  98.88 ms | 1.926 ms | 1.708 ms |  0.99 |    0.02 |
| LinqC4VectorCached | p00743.bmp |  56.09 ms | 0.936 ms | 0.876 ms |  0.56 |    0.01 |
Отредактировано 07.08.2020 3:23 Mystic Artifact . Предыдущая версия .
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.