- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
for (size_t i = 0; i < 4; ++i) {
__m128 x0 = _mm_loadu_ps((const float*)blocks[0] + i * 4);
__m128 x1 = _mm_loadu_ps((const float*)blocks[1] + i * 4);
__m128 x2 = _mm_loadu_ps((const float*)blocks[2] + i * 4);
__m128 x3 = _mm_loadu_ps((const float*)blocks[3] + i * 4);
__m128 t0 = _mm_unpacklo_ps(x0, x1);
__m128 t1 = _mm_unpackhi_ps(x0, x1);
__m128 t2 = _mm_unpacklo_ps(x2, x3);
__m128 t3 = _mm_unpackhi_ps(x2, x3);
x[i * 4 + 0] = _mm_castps_si128(_mm_movelh_ps(t0, t2));
x[i * 4 + 1] = _mm_castps_si128(_mm_movehl_ps(t2, t0));
x[i * 4 + 2] = _mm_castps_si128(_mm_movelh_ps(t1, t3));
x[i * 4 + 3] = _mm_castps_si128(_mm_movehl_ps(t3, t1));
}
bormand 12.09.2021 06:57 # 0
bormand 12.09.2021 07:08 # 0
CEHT9I6PbCKuu_nemyx 12.09.2021 08:35 # 0
Похоже, что там и перебор придётся делать на SIMD, чтобы соответствовать.
bormand 12.09.2021 08:37 # 0
CEHT9I6PbCKuu_nemyx 12.09.2021 08:39 # 0
bormand 12.09.2021 08:40 # +2
CEHT9I6PbCKuu_nemyx 12.09.2021 08:50 # 0
По идее можно стартовать так:
[email protected]
[email protected]
[email protected]
[email protected]
Следующим шагом будет:
[email protected]
[email protected]
[email protected]
[email protected]
Но мы не можем запихать четыре емейла в один регистр. Нужно транспонировать матрицу.
Возьмём другую идею. Стартуем так:
[email protected]
[email protected]
[email protected]
[email protected]
Следующим шагом будет так:
[email protected]
[email protected]
[email protected]
[email protected]
Потом стартовый шаблон меняют.
Всё равно ничего в голову не идёт...
bormand 12.09.2021 08:55 # +1
Код, который я запостила в этом треде именно это и делает )))
Всего 8 команд у тебя на транспонирование 4х4 уйдёт. Ну плюс выгрузки-загрузки если нужны.
CEHT9I6PbCKuu_nemyx 12.09.2021 09:01 # +1
bormand 12.09.2021 09:01 # +2
CEHT9I6PbCKuu_nemyx 12.09.2021 09:08 # +2
g++ -O3: 4 Mh/s;
clang++ -O3: 3,5 MH/s;
cl /O2: 3 MH/s.
Интеловская библиотека по идее не должна давать разные результаты, там большая часть на ассемблере. Значит, оптимизация поиска по мапе разная.
С какими ключами можно выжать самый быстрый код в gcc, в clang и в msvc? PGO чем-нибудь поможет?
JloJle4Ka 12.09.2021 09:18 # +2
Он иногда может делать только хуже, кстати.
CEHT9I6PbCKuu_nemyx 12.09.2021 13:46 # +2
bormand 12.09.2021 13:47 # +1
CEHT9I6PbCKuu_nemyx 13.09.2021 06:55 # +1
Две идеи:
1. Сократил количество вызовов итератора по именам. Заранее нагенерировал несколько префиксов, а потом к каждому префиксу добавлял суффикс, возвращённый итератором (не через strcat, а тупо через memmove, потому что размеры мне известны).
2. Использовал PGO.
Всё-таки, можно что-то выжать, меняя алгоритмы подбора.
bormand 13.09.2021 07:19 # 0
Да можно прям в буфере инкремент делать, чтобы совсем zero copy.
Тебе всё равно надо учиться делить пространство на регионы чтобы треды поддержать. Вот выдай каждому буферу свой регион с конкретным префиксом, суффиксом и диапазоном символов и пусть себе инкрементит.
Заодно suspend/resume можно организовать чтобы не начинать каждый раз с нуля.
CEHT9I6PbCKuu_nemyx 13.09.2021 07:48 # 0
Когда дошли до [email protected], нужно обновить строку до [email protected], т. е. выполнить инкремент одного разряда и сброс шести.
Если мы параллельно считаем суммы для строк с разными префиксами или с разными суффиксами, то мы одновременно будем выполнять одну и ту же рекурсивную проверку с инкрементами. А можно её сделать один раз на все префиксы/суффиксы и расклонировать результат. Так выходит быстрее.
bormand 13.09.2021 07:52 # +1
Да, тоже норм подход.
Хотя инкрементится обычно один символ. Переносы амортизируются, в среднем это О(1).
CEHT9I6PbCKuu_nemyx 13.09.2021 08:03 # +2
Преобразованием системы счисления числового счётчика будет медленно, потому что там нужно выполнять дофига делений с остатком.
1024-- и я додумались только до рекурсивной проверки условия, когда разряд дошёл до последнего символа алфавита. При таком алгоритме проверять все разряды придётся редко.
Только что подумал ещё об одной идее: предварительно сгенерировать массив часто перебираемых подстрок. Например, трёхсимвольных комбинаций букв латинского алфавита всего 17576, трёхсимвольных комбинаций букв латинского алфавита и цифр всего 46656. Их можно закэшировать, тогда проверок будет меньше. Хотя, пожалуй, лучше взять четыре. Тогда каждая кобенация займёт 32-битный регистр.
bormand 13.09.2021 08:40 # +1
Ставлю на инкремент при помощи таблички nextChar (и если старший бит стоит -- значит надо следующий тоже). Перенос амортизируется его редкостью, переход всего один.
j123123 13.09.2021 08:40 # +3
Который я написал в ответ на этот говнокод https://govnokod.ru/20137
guest6 16.09.2021 19:46 # 0
bormand 13.09.2021 09:01 # +2
Но это уже только с самодельной реализацией md5 возможно.
CEHT9I6PbCKuu_nemyx 13.09.2021 09:13 # +2
bormand 13.09.2021 09:32 # 0
Просто входные данные приходится немного препроцессить, чтобы слова упаковать по 8 в регистр (то самое транспонирование).
Если данные будут сразу лежать как надо, можно неплохо сэкономить.
Выходное транспонирование тоже по идее можно выкинуть, просто хеши будет чуть сложнее сравнивать и memcmp уже не прокатит.
bormand 13.09.2021 09:48 # +1
uint8_t data[8][64]
Первый индекс номер блока, второй позиция в блоке.
Как оптимально для avx:
uint32_t data[16][8]
Первый индекс позиция в блоке, второй номер блока.
bormand 12.09.2021 14:47 # +1
CEHT9I6PbCKuu_nemyx 12.09.2021 15:40 # +2
guest6 12.09.2021 14:54 # +1
bormand 12.09.2021 14:59 # +2
Приходишь с утра на работу, открываешь IDE на джаве. К вечеру оно наконец-то прогревается. Ты говоришь "just in time!" и идёшь домой.
guest6 12.09.2021 15:17 # +1
CEHT9I6PbCKuu_nemyx 12.09.2021 15:30 # +1
j123123 10.12.2021 10:28 # 0
guest6 10.12.2021 10:53 # 0
j123123 12.09.2021 14:51 # +3
CEHT9I6PbCKuu_nemyx 15.09.2021 09:05 # 0
Интересная вещь. Компилятор передаёт линкеру метаданные. По сути похоже на то, как выглядит линковка в языках, в которых модульная система была изначально.
Жалко, что на уровне языка модулей нет, а только архаичный препроцессор...
ASD_77 12.09.2021 13:37 # +1
bormand 12.09.2021 10:10 # +1
Блин, почти портировала на AVX, но что-то запуталась в транс-понировании матрицы 8х8... Кручу-верчу запутать хочу.
А подсматривать у интела как-то неспортивно.
CEHT9I6PbCKuu_nemyx 12.09.2021 08:41 # 0
https://github.com/intel/isa-l_crypto/tree/master/md5_mb
bormand 12.09.2021 13:08 # 0
Интересно, а AVX сборка у тебя сравнима с интелом будет? Или их код лучше?
З.Ы. ideone чот криво настроено, avx не умеет.
bormand 12.09.2021 08:37 # +2
std::unordered_set:
15 MH/s (37% на вычисление хеша, 60% на проверку по хешмапе)
std::unordered_set + 20-битная битмапа:
25 MH/s (74% на вычисление хеша, 20% на проверку по хешмапе)
bormand 12.09.2021 09:39 # +1
bormand 12.09.2021 09:06 # 0
Может быть у меня лапки?
ISO 12.09.2021 09:30 # +1
По идее надо подобрать параметры так, чтобы для 68000 вставленных элементов (эталонные хэши) вореатность ложного срабатывания была где-то в районе 1e-6, плюс-минус пара порядков — чтобы на один мегахэш были единицы (помимо реальных совпадений) «выпаданий» из горячего цикла.
bormand 12.09.2021 09:35 # +2
Видимо сама мапа не такая уж тяжёлая, чтобы её защищать ценой лишних кешмиссов.
А фильтр довольно жирный даже для 5% (19 бит).
CEHT9I6PbCKuu_nemyx 12.09.2021 10:58 # +1
В фильтре Блума 6 хэш-функций, размер фильтра — 2 в 19 степени.
Куда крутить?
CEHT9I6PbCKuu_nemyx 12.09.2021 11:21 # 0
С фильтром на 21 бит получил 3 промаха на миллион, а скорость стала только меньше.
ISO 12.09.2021 11:28 # +2
Теория говорит, что для n = 68000 (количество элементов в фильтре) и e = 1e-6 (желаемая вероятность false positive) нужно k = -log2(e) ≈ 20 хэш-функций и m = -1.44*math.log2(e)*68000 ≈ 1951700 бит в фильтре.
CEHT9I6PbCKuu_nemyx 12.09.2021 11:43 # 0
В такой задаче фильтр Блума мешает, потому что тратится время на его расчёт.
CEHT9I6PbCKuu_nemyx 12.09.2021 11:56 # 0
ISO 12.09.2021 12:07 # 0
CEHT9I6PbCKuu_nemyx 12.09.2021 13:34 # 0
guest6 12.09.2021 12:16 # 0
JloJle4Ka 12.09.2021 12:17 # 0
guest6 12.09.2021 12:22 # +1
JloJle4Ka 12.09.2021 12:30 # +2
– Jawa8, чтобы играть в Майнкрафт.
– Jawa16, чтобы играть в Майнкрафт, написанный на новых версиях Jawa (если играть на старых версиях Jawa, то можно соснуть СТРАШНЫЙ EXCEPTION).
– jawa6, если ты работаешь в БАНКЕ.
Т.е. софт, написанный на Jawa8, может не запуститься на Jawa16 и наоборот, какой пиздец! В итоге все россказни про единую виртуальную машину и экосистему оказались ЛОЖЬЮ, ведь нужно иметь ДЕСЯТКИ виртуальных машин... Это всё продиктовано жаждой наживы корпорастов из Jawa-корпорации: засрать всю свободную оперативную и энергонезависимую память виртуальными машинами, чтобы пользователь не установил другие программы.
bormand 12.09.2021 12:23 # +2
Какой анскилл )))
У меня вот в коде ни одной лаллокации после того как инициализация пройдена.
guest6 12.09.2021 12:28 # +2
+ Integer i = new Integer(42);
- int i = 42;
CEHT9I6PbCKuu_nemyx 12.09.2021 12:06 # +2
bormand 13.09.2021 11:55 # 0
Я хочу еще с префетчем поиграться, как пи предлагал.
После вычисления хешей проверять не текущую пачку, которая только закончилась, а прошлую. При этом стратегически расставив префетчи так, что нужные регионы хешмапы к этому моменту окажутся в L1 и проверка пройдёт мгновенно.
З.Ы. Или вообще переплести проверку и рассчёт, не разбивая их на фазы. Во время расчета не нужна память, во время проверки не нужен проц. Вроде должно хорошо сочетаться.
bormand 13.09.2021 14:40 # 0
guest6 13.09.2021 14:44 # 0
j123123 13.09.2021 14:51 # 0
guest6 13.09.2021 14:55 # 0
У тебя для твоих процов нет эмулятора или профайлера умного чотбы показать кешмисы, занятость префетчера, ождание памяти итд
bormand 13.09.2021 14:57 # 0
guest6 13.09.2021 15:02 # 0
Так у тебя есть Витюня, или ты просто знаешь, как это работает?
bormand 13.09.2021 15:08 # 0
arm'ы (Cortex M) безусловно сложнее, но тоже без фанатизма.
ObeseYoung 13.09.2021 16:32 # +2
guest6 13.09.2021 16:35 # 0
У современного камня всё так насрано внутри, что я вообще уже слабо понимаю что там происходит
bormand 13.09.2021 15:05 # 0
CEHT9I6PbCKuu_nemyx 13.09.2021 15:14 # 0
http://bugmenot.com/view/intel.com
nereyex908:bsuL4CQm25AV! подошёл.
bormand 13.09.2021 15:16 # 0
У меня в общем-то была учётка, я там какие-то курсы про fpga слушала. Но они посчитали, что я давно не захожу и ёбнули её.
CEHT9I6PbCKuu_nemyx 13.09.2021 15:17 # 0
CEHT9I6PbCKuu_nemyx 15.09.2021 21:22 # 0
У них на сайте много чего изменилось. Оригинальный «icl» и компилятор «Фортрана» они куда-то убрали, а вместо «icl» теперь предлагают скачать модифицированный «Шланг», правда, с интеловскими библиотеками.
3.14159265 15.09.2021 21:47 # +2
Что он даёт, чего нет в perf?
guest6 15.09.2021 21:51 # +1
Хотя борманд может наверное и с perf справиться.
vtune еще небось умеет читать всякую проприетарную питушню, про которую интел никому не рассказывает
bormand 15.09.2021 22:36 # 0
Блядь, вот я дура... Кто ж прогресс замеряет одним атомарным счётчиком на все 12 тредов.
Заменила на 12 отдельных счётчиков, разнесённых на кешлайн. Сразу 250 Mh/s -> 440 MH/s (64% от теоретических 12 х 57 MH/s)
bormand 15.09.2021 22:50 # 0
Надо std::map std::set всё-таки выкорчевать и заменить на что-то приличное.
CEHT9I6PbCKuu_nemyx 15.09.2021 22:54 # 0
https://github.com/martinus/robin-hood-hashing
А на что заменить упорядоченную карту, пока не знаю.
bormand 15.09.2021 23:06 # 0
Хочется выбить какое-нибудь круглое число в духе 500 MH/s, выложить куда-нибудь и забить.
Soul_re@ver 15.09.2021 23:16 # 0
На Heap
ObeseYoung 15.09.2021 22:57 # 0
А если у штеуда в процах был дебажный бэкдор, то давно уже была атака типа Spectre.
CEHT9I6PbCKuu_nemyx 15.09.2021 22:12 # 0
Напридумывали трёхбуквенных названий, из которых ничего не понятно.
ObeseYoung 15.09.2021 22:47 # 0
CEHT9I6PbCKuu_nemyx 15.09.2021 23:11 # 0
3_dar 12.09.2021 10:20 # +3
bormand 12.09.2021 11:51 # +4
Теперь 54 Mh/s (62% вычисление хеша, 37% генератор и проверка по мапе). 8 хешей параллельно.
bormand 12.09.2021 11:59 # 0
JloJle4Ka 12.09.2021 12:05 # 0
rotoeb 12.09.2021 12:17 # 0
bormand 12.09.2021 12:19 # +1
12 тредов: 170 Mh/s
6 тредов: 125 Mh/s
4 треда: 105 Mh/s
3 треда: 92 Mh/s
2 треда: 77 Mh/s
1 тред: 54 Mh/s
bormand 12.09.2021 12:46 # +1
С одной мапой и одним фильтром на всех 185 Mh/s
bormand 12.09.2021 12:58 # +1
guest6 12.09.2021 13:01 # +1
переодически стопает треды и записывает их стек трейс?
bormand 12.09.2021 13:19 # 0
guest6 12.09.2021 13:21 # +1
ISO 12.09.2021 13:05 # +2
bormand 12.09.2021 13:25 # 0
Отличное занятие для прохладного осеннего вечера...
Правда мне куду лень вспоминать.
j123123 12.09.2021 13:31 # +1
guest6 12.09.2021 13:33 # +1
j123123 12.09.2021 13:35 # +3
bormand 12.09.2021 13:41 # +1
guest6 16.09.2021 20:03 # 0
Казалось бы, если у каждого треда своя питушня, то нет лишних взаимодействий и изолированный код проще писать и компилировать.
guest6 16.09.2021 20:06 # 0
guest6 16.09.2021 20:08 # 0
bormand 16.09.2021 20:28 # 0
С отдельным счётчиком на каждый тред параллелиться стало считай в 2 раза лучше.
Ну и да, обращений в L3 было овердохуя из-за того, что я в очередной раз облажалась с размером кеша (6 х 256К а не 1.5М).
Детские ошибки, в общем.
guest6 16.09.2021 20:30 # +1
какой GIL ))
CEHT9I6PbCKuu_nemyx 15.09.2021 09:41 # +2
https://github.com/1024--/voretions/blob/master/src/md/vorec-hist-2014-09-16.md
Генератор вореций можно обучить на сайте с большим количеством юзеров (я набрал кучу таблиц юзернеймов с разных сайтов). Да, будет неполный перебор, что-то можно пропустить, но зато будет шанс найти длинные логины.
Для начала попробовал тупо выбрать четырёхсимвольные слайсы изо всех юзернеймов «Говнокода». Их оказалось всего 45 тысяч (при полном переборе таких сочетаний было бы два с половиной миллиона).
Тупо сконкатенировав два таких слайса, можно получить два миллиарда восьмисимвольных кобенаций. А если применить вореции (марковские цепи), то можно найти вменяемое количество более длинных кобенаций.
CEHT9I6PbCKuu_nemyx 19.09.2021 15:20 # +2
Какая-то фантастика. Даже неоптимальный алгоритм с использованием std::string вместо сырых массивов даёт 12 Mh/s.
Обучил на юзернеймах «Говнокода». При ограничении на длину вореции 11 символов нашёл 542 емейла за очень короткое время.
Надо будет попробовать на чём-нибудь более сложном обучить.
JloJle4Ka 19.09.2021 15:31 # 0
CEHT9I6PbCKuu_nemyx 19.09.2021 15:36 # +2
А у StertorPidor локальная часть вообще 11-значная. Тупым перебором 11-значные комбинации я бы за год не осилил.
guest6 19.09.2021 16:20 # +2
guest6 19.09.2021 16:23 # 0
guest6 19.09.2021 16:41 # +1
- обезьяны, но вероятность ввода осмысленного текста практически равна нулю
- коты, но они обычно зажимают одну клавишу
- остаются люди или боты, но для бота икарус не похож - выглядит слишком умным
guest6 19.09.2021 16:45 # 0
guest6 19.09.2021 16:55 # 0
Вот можешь почитать: https://acm.timus.ru/problem.aspx?space=1&num=1677&locale=ru
guest6 19.09.2021 17:03 # +1
А есть исследования, доказывающие что петух не в состоянии пользоваться клавиатурой?
Soul_re@ver 19.09.2021 17:48 # +2
ASD_77 12.09.2021 13:39 # +3
guest6 12.09.2021 12:54 # +1
а зачем тебе? ты спиздил базу хешей и брутишь?
bormand 12.09.2021 12:57 # +1
guest6 12.09.2021 13:12 # +1
bormand 12.09.2021 13:14 # +1
CEHT9I6PbCKuu_nemyx 12.09.2021 15:01 # +1
https://youtu.be/ahzyJH-aejU
JloJle4Ka 12.09.2021 13:03 # +1
CEHT9I6PbCKuu_nemyx 12.09.2021 14:10 # +2
CEHT9I6PbCKuu_nemyx 12.09.2021 14:20 # +1
bormand 12.09.2021 14:22 # 0
guest6 12.09.2021 14:24 # 0
CEHT9I6PbCKuu_nemyx 12.09.2021 14:30 # +1
Оказывается, владелец сайта настроил сервер так, что файлы с расширением .rar, .zip и ещё некоторые отдаются как binary/octet-stream или как соответствующий мимими-тип архива, а все остальные отдаются как text/html или text/plain. Сервер тома с расширениями .r01, .r02, .r03 и т. д. посчитал текстовыми и зачем-то заменил в них байты с кодом 0 на байты с кодом 0x20=32 (код пробела). В итоге распаковать такие файлы можно, только набрутив, какие из пробелов нужно поменять на символы с кодом ноль.
guest6 12.09.2021 14:31 # +1
CEHT9I6PbCKuu_nemyx 12.09.2021 14:32 # 0
guest6 12.09.2021 14:40 # +1
guest6 12.09.2021 14:42 # +3
Он на лету перекодировал файлы.
Самое печальное, что он был установлен на серверах шаред хостингов до середины нулевых (когда проблемы кодировок уже и не существовало) и портил файлы
ObeseYoung 16.09.2021 01:01 # 0
guest6 12.09.2021 15:43 # 0
JloJle4Ka 12.09.2021 16:18 # +1
bormand 12.09.2021 23:47 # +1
Это что-то про typescript?
CEHT9I6PbCKuu_nemyx 12.09.2021 23:48 # 0
guest6 12.09.2021 23:50 # 0
CEHT9I6PbCKuu_nemyx 13.09.2021 00:42 # +2
j123123 13.09.2021 03:41 # 0
хотя тут вообще много аутистов
guest6 13.09.2021 03:53 # 0
ASD мне напоминает чувака, который делал TempleOS.
j123123 13.09.2021 03:58 # +2
j123123 13.09.2021 07:00 # 0
guest6 13.09.2021 05:17 # 0
j123123 13.09.2021 05:20 # +1
bormand
CHayT
j123123
JloJle4Ka
gost/ISO/PolinaAksenova (хотя тут под вопросом)
guest6 13.09.2021 05:24 # +1
Вообще-то она няшка.
> JloJle4ka
Да и она тоже ничего.
С остальным согласен, можно утверждать.
j123123 13.09.2021 06:22 # +1
> Да и она тоже ничего.
Да, ставить Gentoo и перебирать всякие полурабочие браузеры для аутистов это вполне норм.
guest6 13.09.2021 06:39 # +3
JloJle4Ka 13.09.2021 07:11 # +1
j123123 13.09.2021 07:22 # 0
JloJle4Ka 13.09.2021 07:23 # 0
j123123 13.09.2021 07:26 # +3
JloJle4Ka 13.09.2021 07:28 # +2
j123123 27.09.2021 16:37 # +1
JloJle4Ka 27.09.2021 18:01 # 0
Сначала нужно написать сайт, чтобы там выложить потом исходные коды: вдруг получится больше 100 строчек и не удастся захостить исходники на говнокоде.
Но я уже нахожусь в процессе, попозже всё будет готово. И можно будет «найти путь к безопасности в графе опасностей».
j123123 27.09.2021 18:11 # +1
Собери еще свой процессор из транзисторов. Зачем: для сервера, на котором тот сайт будет работать.
JloJle4Ka 27.09.2021 18:30 # 0
guest6 27.09.2021 19:03 # 0
CEHT9I6PbCKuu_nemyx 27.09.2021 19:11 # 0
guest6 27.09.2021 19:14 # 0
Потом узнал про клеммы.
А паяю я до сих пор хуёво
bormand 27.09.2021 19:17 # +1
guest6 27.09.2021 19:21 # 0
bormand 27.09.2021 19:18 # 0
А транзисторы из песка?
guest6 27.09.2021 19:20 # 0
ObeseYoung 27.09.2021 19:21 # +1
> макетки с дырками
Это же атсраномически дорого
j123123 27.09.2021 20:50 # 0
Электрон не состоит ни из каких кварков или еще какой-то там хуйни, и кварки ни из чего не состоят. Но есть еще какая-то там теория струн, но это уже хуй знает
CEHT9I6PbCKuu_nemyx 27.09.2021 20:51 # 0
j123123 27.09.2021 20:53 # 0
> наличие цветовой симметpии. Достаточно экспеpиментальных значений
> \alpha_s, явно yказывающих на наличие конфайнмента. Достаточно
> того, что ВСЕ адpонные массы можно паpаметpизовать всего лишь 7ю числами —
> 6 масс кваpков и значение \alpha_s в одной точке. И не только адpонные
> массы, а много чего ещё — пока что все теоpетические зависимости, полyченные
> из QCD, с экспеpиментом совпадают — а, следовательно, пpедставлением о
> кваpках МОЖHО ПОЛЬЗОВАТЬСЯ. Заметь, только подонки-фаллософы пиздят
> пpо «сyществование», «истинности», и томy подобнyю поеботинy. Hаyкy это не волнyет.
bormand 27.09.2021 20:53 # 0
j123123 27.09.2021 20:56 # +2
j123123 12.03.2022 19:42 # 0
Ну так что?
j123123 10.12.2021 10:27 # 0
j123123 13.09.2021 05:25 # 0
guest6 13.09.2021 05:29 # 0
Хороший тест )))
j123123 13.09.2021 05:31 # 0
guest6 13.09.2021 05:32 # 0
j123123 13.09.2021 05:33 # 0
guest6 13.09.2021 05:34 # 0
j123123 13.09.2021 05:36 # 0
Что вообще значит "русскость"?
guest6 13.09.2021 05:38 # 0
CEHT9I6PbCKuu_nemyx 13.09.2021 05:50 # 0
С одной стороны, между поляками, словаками, белорусами, украинцами, русскими нет чёткой границы.
С другой стороны, на западе Украины и на севере России можно встретить гены, свойственные финно-уграм (через территорию Украины в своё время прошли венгры, некоторые остались). На юге Украины и России можно встретить гены, свойственные тюркам. В Польше можно встретить ассимилировавших пруссов.
Ещё с одной стороны, Y-хромосому R1a можно встретить не только у славян, но и у таджиков и у киргизов. Поэтому вообще непонятно, какие гены считать основным признаком.
ObeseYoung 16.09.2021 01:04 # 0
ObeseYoung 16.09.2021 01:03 # +3
CEHT9I6PbCKuu_nemyx 16.09.2021 10:47 # +1
j123123 13.09.2021 09:04 # 0
j123123 27.09.2021 19:19 # 0
bormand 13.09.2021 08:51 # +2
j123123 13.09.2021 09:00 # +1
guest6 12.09.2021 23:52 # 0
Perevedi_na_PHP 13.09.2021 23:23 # 0
bormand 16.09.2021 00:25 # +1
Ну понятно, опять маркетинговое наебалово. L2 тоже "256 KB per core" а не "1.5MB shared". Т.е. надо втиснуть все горячие данные в 256КБ а не в 1.5 метра на самом деле.
Выкинула нахрен std::unordered_set, подтюнила фильтр блума (2 теста по 20 бит).
440 MH/s -> 470 MH/s
Блин, ещё немножко...
guest6 27.09.2021 19:22 # 0
В отношении майора Олега Панова, командира 78 отдельной роты спецназа ГРУ, и его заместителя, капитана Александра Ерушевича заведено уголовное дело о превышении должностных полномочий и насильственных действиях сексуального характера. Материалы дела опубликованы в Telegram-канале правозащитного проекта Gulagu.net.
Основатель проекта Владимир Осечкин уточнил «Тайга.инфо», что преступления происходили в районе Уссурийска в расположении подразделений 14 бригады спецназа Главного управления генштаба (бывшее ГРУ). Арестованы ли подозреваемые — неизвестно.
В обстоятельствах уголовного дела, которые опубликовал Telegram-канал, описываются несколько эпизодов с участием командиров. 6 января 2021 года Панов избил рядового, приказал ему раздеться догола, распорядился поставить военному клизму с водой и заставил приседать. После этого Панов заставил рядового лечь на стол животом и изнасиловал его шваброй. Ерушевич снимал происходящее на видео.
В августе 2020 года Панов, угрожая насилием, водил шваброй с надетой на черенок медицинской перчаткой «в области ягодиц и промежности» ефрейтора, которого к нему привели для «воспитательной беседы».
В период с 8 по 16 ноября 2020 года Панов требовал деньги от рядового «на нужды роты». Тот отказался, и командир приказал ему раздеться догола, связал и подвесил на дереве «в положении стоя с вытянутыми вверх руками». После этого Панов избил рядового веткой дерева, параллельно угрожая «применить к нему физическое насилие в виде прикрепления его полового члена к стволу дерева с использованием строительного степлера»
j123123 27.09.2021 19:24 # 0
bormand 27.09.2021 19:25 # +3
ObeseYoung 27.09.2021 19:29 # 0