Вернуться   Биткоин Форум > Добыча
2 августа 2011, 8:39:34 PM   # 1
 
 
Сообщений: 70
Цитировать по имени
цитировать ответ
по умолчанию Re: Теоретический предел скорости хеширования

Взлом Биткоин адресов.
500 Биткоинов взломаны в "мозговом кошельке" с паролем "bitcoin is awesome"
Адрес кошелька: 14NWDXkQwcGN1Pd9fboL8npVynD5SfyJAE
Приватный ключ: 5J64pq77XjeacCezwmAr2V1s7snvvJkuAz8sENxw7xCkikceV6e
подробнее...


Всем кто хочет заработать Биткоины без вложений - рекомендую сайт http://bitcoin-zarabotat.ru
Я был первоначально в надежде улучшить на последних ядрах, но мне кажется, что они очень близки к теоретическому пределу, который может поддерживать аппаратное обеспечение.

Мои расчеты следующим образом:
Для «наивных» реализации, которая не использует избыточность ввода, вычисления W [16] через W [63] принимает:
6 гниль
4 исключающее
-Добавить (3 плюс один, если вы включаете в себя добавление в значении K)
Это составляет 14 OPS раз 48 значений или 672 операций

Тогда для раундов сами «наивный» или общий алгоритм требует
6 гниль
4 исключающее
1 Maj ()
1 ч ()
6 добавить (предполагая, что W и К уже добавлены)
В общей сложности 18 OPS раз 64 раундов в общей сложности 1152 операций.

Тогда 8 значения должно быть добавлено в текущих итоги, что занимает больше 8 операций

Итог для одного SHA256 составляет 672 + 1152 + 8 = 1832 операций. Для двойного SHA256, он требует в два раза это, или 3664 операций.

На всех, кроме нескольких карт, каждый потоковый процессор может выполнять до 5 операций за такт. В зависимости от того, насколько умный компилятор, он может получить менее 5 операций за такт. На 6950 и 6970, каждый потоковый процессор может выполнять не более 4 операций за один такт.

У меня есть 6750, который имеет 144 потоковых процессоров, и я часами это на 870 МГц. Значение может выполнять 870M * 144 * 5 = 626,4 млрд алу операций в секунду.

Если я делю эту пропускную способность 626,4 G со стороны 3664 операций, необходимых, я получаю 170.96 MH / с. Сейчас я получаю 165, используя ядро, которое не особенно сложной.

На бумаге, используя избыточность ввода, я думаю, что я могу найти экономию 150 операций из первого расчета круглых W и 75 операций из второго расчета круглых Вт и более 46 операций с первых раундов первого хэша. Добавление 8 значений в текущем итоговых в конце первого хэша может быть объединено в значения K для второго хэша, и в конце второго хэша, они могут быть устранены также. А окончательное значение е может быть пропущено.

Общая экономия для обоих раундах составляет 150 + 75 + 46 + 8 + 8 + 1 = 288, который приносит двойной SHA256 от 3664 вплоть до 3376, что составляет около 7,9 процентов экономии. Я думаю, что современные передовые ядра воспользоваться все или почти все из этих сбережений.

Это означало бы, мои теоретические 626,4 млрд операций будет ограничено 185,5 MH / с.

Это хорошо, потому что это означает, что использование очень хорошо, и это плохо, что есть едва ли возможности для улучшения, не выходя на различное оборудование.
vector76 сейчас офлайн Пожаловаться на vector76   Ответить с цитированием Мультицитирование сообщения от vector76 Быстрый ответ на сообщение vector76


Как заработать Биткоины?
Без вложений. Не майнинг.


2 августа 2011, 11:24:51 PM   # 2
 
 
Сообщения: 130
Цитировать по имени
цитировать ответ
по умолчанию Re: Теоретический предел скорости хеширования

Получил 1806 Биткоинов
Реальная история.





Хороший пост !
forexmasterja сейчас офлайн Пожаловаться на forexmasterja   Ответить с цитированием Мультицитирование сообщения от forexmasterja Быстрый ответ на сообщение forexmasterja

3 августа 2011, 1:19:17 AM   # 3
 
 
Сообщения: 656
Цитировать по имени
цитировать ответ
по умолчанию Re: Теоретический предел скорости хеширования

Вы понимаете, люди будут платить хорошие деньги, чтобы идти даже на 5%? Конечно, это становится все труднее и труднее оптимизировать, как мы становимся ближе к теоретическому пределу
iopq сейчас офлайн Пожаловаться на iopq   Ответить с цитированием Мультицитирование сообщения от iopq Быстрый ответ на сообщение iopq

3 августа 2011, 1:42:57 AM   # 4
 
 
Сообщения: 1613
Цитировать по имени
цитировать ответ
по умолчанию Re: Теоретический предел скорости хеширования

У меня есть 6750, который имеет 144 потоковых процессоров, и я часами это на 870 МГц. Значение может выполнять 870M * 144 * 5 = 626,4 млрд алу операций в секунду.
На сайте AMDS в HD 6750 спецификации указывают, что он имеет 720 потоковых процессоров. В ваших calcualtions, вы показываете только 144 потоковых процессоров, но позже вы умножив 144 на 5 при расчете теоретических опа в секунду алюминиевые.

Не могли бы вы рассказать немного о разнице в терминологии?
Сорос Shorts сейчас офлайн Пожаловаться на Soros Шорты   Ответить с цитированием Мультицитирование сообщения от Soros шорты Быстрый ответ на сообщение Soros шорты

3 августа 2011, 2:02:39 AM   # 5
 
 
Сообщений: 52
Цитировать по имени
цитировать ответ
по умолчанию Re: Теоретический предел скорости хеширования

Ого, отличный пост, ваш анализ вдохновил меня.

Пара вещей, чтобы добавить к анализу, что ч () требует 2 инструкции. 
Итак, 1 Round = 19 опс

Что касается избыточности входов:

для первого ССЗ, следующие полностью избыточными
W16
W17
Round0
Round1
Раунд 2
Итоговые сбережения = 85 инструкции

Кроме того, следующие раунды имеют частичную избыточность (номера необходимы оп)
Round3 - 2ops
W18 3,5 OPS (2 одноразовые разделить все, но 1 бит так, расчеты могут быть разделены)
W19 1 оп
W20 6 ОПС
W21 6 ОПС
W22 6 ОПС
W23 7 опс
Ьный W24 7 опс
W25 11 ОПС
W26 11 ОПС
W27 11 ОПС
W28 11 ОПС
W28 11 ОПС
W29 11 ОПС
W30 11 ОПС
W31 11 ОПС
W32 11 ОПС
(1 раунд @ 19 и 15 Вт Calcs @ 14 наивных = 229 инструкций)
Итоговые сбережения = 93,5 инструкции

Для второго SHA, следующие имеют частичную избыточность:
Round0 1 оп
W16 2 опс
W17 2 опс
W18 8 опс
W19 8 опс
W20 8 опс
W21 8 опс
W22 5 опс
W23 13 ОПС
W24 11 ОПС
W25 11 ОПС
W26 11 ОПС
W27 11 ОПС
W28 11 ОПС
W29 11 ОПС
W30 11 ОПС
W31 13 ОПС
(1 раунд @ 19 и 16 Вт Calcs на 14 наивных = 243 инструкций)
Итоговые сберегательные = 106 инструкций

Последние 3 раунда и W расчеты могут быть пропущены в конце (Если вы хотите, чтобы проверить, не менее значимый является DWORD 0) также, 4-й последнего е известково может быть пропущен
Общая экономия = 100 инструкций

Как ты сказал, "добавление 8 значений в текущем итоговых в конце первого хэша может быть объединены в значения K для второго хэша" и только значение Н должно быть известно для добычи полезных ископаемых, так что можно пропустить 7 из дополнений после того, как второй хэш.
Общая экономия = 15 инструкции

И, наконец, Ч. () вычисление может быть уменьшена на 1 для каждого из раундов 4 и 5 первого SHA и раундов 1 и 2 второго SHA с момента ч (х, у, г) = Maj (х ^ у, г , у), а х и у являются постоянными для этих раундов

Общая экономия = 4 инструкции

Гранд Общая экономия за счет избыточности = 404 инструкций

Таким образом, делая Calcs снова, 14x48 + 19x64 + 8 = 1896 на SHA
1896 * 2 = 3792 - 404 = 3388 инструкции ...

Последняя версия phatk использует 1358 группы (5 инструкций каждого), 4 из которых выполняются только тогда, когда одноразовый номер найден, который оставляет +1354 * 5 = 6770 для 2 = 3385 одноразовых номеров инструкции Всего в нонс.

Я знаю, что я должен был оставить что-то, так как я даже не реализовали все это, и я знаю, что мое ядро ​​не 100% эффективным, так что если кто-нибудь увидеть больше возможную избыточность, дайте мне знать, и я постараюсь, чтобы добавить его к ядро.

Самая большая часть вашего поста, который заставил меня думать, это значения K добавляется к значениям W и H (Значения могут быть особенно полезны, когда вычисление W уже есть константа).

Если это помогает мое ядро, ожидать пожертвование.


@Soros

AMD использует архитектуру, которая выполняет инструкции в группах по 5 (VLIW5). Это звучит лучше для них, чтобы сказать, что это имеет 720 потоковых процессоров, которые выполняют одиночные инструкции, а не говорят, что это имеет 144 потоковых процессоров, которые выполняют группы по 5 команд, которые технически более точным.
Phateus сейчас офлайн Пожаловаться на Phateus   Ответить с цитированием Мультицитирование сообщения от Phateus Быстрый ответ на сообщение Phateus

3 августа 2011, 6:20:11 AM   # 6
 
 
Сообщений: 70
Цитировать по имени
цитировать ответ
по умолчанию Re: Теоретический предел скорости хеширования

У меня есть 6750, который имеет 144 потоковых процессоров, и я часами это на 870 МГц. Значение может выполнять 870M * 144 * 5 = 626,4 млрд алу операций в секунду.
На сайте AMDS в HD 6750 спецификации указывают, что он имеет 720 потоковых процессоров. В ваших calcualtions, вы показываете только 144 потоковых процессоров, но позже вы умножив 144 на 5 при расчете теоретических опа в секунду алюминиевые.

Не могли бы вы рассказать немного о разнице в терминологии?

Да, я столкнулся с этим, и это смущало меня сначала. Я должен был сказать, 144 потоковых ядер.

Как правило, все карты распределяются следующим образом:
1 GPU имеет несколько единиц Compute
Каждый Compute Unit имеет 16 потоковых ядер (по-видимому, всегда будет 16 на всех своих устройствах)
Каждый поток Ядро имеет либо 4 (69xx) или 5 (все остальные элементы обработки), который позволяет ему выполнять несколько операций в скалярных одной инструкции VLIW.

Их сайт действительно говорит 720 потоковых процессоров, но я думаю, что они имеют в виду элементов обработки, а не поток ядер.

в руководство по программированию в Приложении D они перечисляют Можжевельник LE как имеющий 144 потоковых ядер и каждый поток сердечника имеет 5 элементов обработки. Моя карта показывает, как можжевельник в GUI Miner.
vector76 сейчас офлайн Пожаловаться на vector76   Ответить с цитированием Мультицитирование сообщения от vector76 Быстрый ответ на сообщение vector76

3 августа 2011, 7:25:01 AM   # 7
 
 
Сообщений: 70
Цитировать по имени
цитировать ответ
по умолчанию Re: Теоретический предел скорости хеширования

К сожалению, моя ошибка думать Ch () была одна инструкция.

Я показываю различные номера для оптимизации W, но опять-таки моя «оптимизация» на бумаге, так что может иметь ошибки. Вот как мой ломаются:

S2 () обозначает гниль (Ш [х-2], 15) ^ гнили (Ш [х-2], 13) ^ ((Ш [х-2])>>10U)
S3 () обозначает гниль (Ш [х-15], 25) ^ гнили (Ш [х-15], 14) ^ ((Ш [х-15])>>3U)

Первый хэш:
W16: 0
W17: 0
W18: 2, так как в целом, S3 (A XOR B) = S3 (A) исключающее S3 (B), так что если вы вычислить более 2 одноразовые номера в ядре, то вы можете фактор нонса в инвариантного А, а переменная B (скажем, 0-63, например), и вы можете предварительно вычислить S3 (в), 64 во время компиляции констант и вычислить S3 (а) один раз для всей группы. Тогда вам нужно только один XOR и один надстройку для W18. Это в основном обобщение LSB оптимизации.
W19: 1
W20: 6
W21: 6
W22: 6
W23: 6 для вычисления S2 (Вт [21]), который является 5 и добавление ее в W / K. Вт [16] фиксируется и может быть предварительно добавлен в K.
W24: 6 (такой же, как W23)
W25: 7 для вычисления S2 (Вт [23]), который является 5 и добавление его, а также добавление W [18]. S3 (W [10]) фиксируется, так что вы можете уточнить на ваших 11 операций?
W26 - W32: такой же, как W25
W33: 13 Вт, потому что [17] фиксируется и может быть предварительно добавлены в K.
W34 до W63: 14

Общий объем операций: 522 против 672 наивным для экономии 150

Для второго хэша моих расчеты совершенно разные, так что, возможно, я недоразумение как вычисление должно произойти. Моя мысль была о том, что вход был 16 uints, как это: XXXXXXXXFFFFFFFF, другими словами, 8 значений, которые неизвестны и 8 значений, которые фиксированы. W [0] через W [7] непредсказуемы, а W [8] через W [15] являются постоянными.

Исходя из этого, я получаю
Н16: 7 для S3 (Вт [14]) и W [0], но пропуская S2 и W [9]
W17: 7 для S3 (Вт [15]) и W [1], но пропуская S2 (W [15]) и W [10]
W18: 13 все, но пропуск добавления W [11]
W19: 13 такой же, как W18
W20: 13
W21: 13
W22: 13
W23: 8 все, кроме пропуска S3 (W [8])
W24: 7 S2 (W [22]) и добавление W [8], но пропуская S3 (Вт [9]) и добавление W [8]
W25: 7 такой же, как W24
W26: 7
W27: 7
W28: 7
W29: 7
W30: 7
W31: 13 все, кроме добавления W [15]
W32 до W63: 14

Всего операций: 597 против наивных 672 для экономии 75


Я собираюсь придется пересмотреть круглые сбережения, ваш пост высветил ошибку в моей оптимизации, так что я должен вновь сделать эту часть, и я выложу особенности о том, что позже.
vector76 сейчас офлайн Пожаловаться на vector76   Ответить с цитированием Мультицитирование сообщения от vector76 Быстрый ответ на сообщение vector76

3 августа 2011, 9:42:52 AM   # 8
 
 
Сообщений: 70
Цитировать по имени
цитировать ответ
по умолчанию Re: Теоретический предел скорости хеширования

Хорошо, я сделал более подробную разбивку, и вот что я получил.

Во-первых, кажется, я сделал ошибку в сочетании с 8 добавляет в конце первого хэш в K для круглых 2, так как для W [0] через W [7] значения должны быть точными в качестве входных данных для остальной части W , поэтому они должны быть добавлены значения с конца первой хэш и не может включать в себя что-нибудь еще. Но ясно, что 7 из них может быть удалены с конца второго хэша.


Прежде чем я продолжу, позвольте мне представить немного нотации, я надеюсь, не слишком запутанный. Пусть a1 обозначают значение а после того, как раунд 1, а2 величины а после того, как раунд 2, и т.д., и аналогично для Ь, с, д, е, ж, и ч. Начальные значения будут a0, b0, c0, ... По большей части мы будем иметь дело с a1, a2, e1, e2, и т.д ..

Первые три раунда первого хэш может быть пропущен полностью, так как для W [0], Вт [1], и W [2] являются фиксированными. a1, e1, a2, e2, a3, и e3 также фиксированы.

Четвертый раунд первого хэш требует только два добавляет, так как S0 (а3), ма (), S1 (е3) и CH () все фиксируется, и поэтому h3 = е0.

Пятый, шестой и седьмой раунд первого хэша может сохранить одну надстройку, так как h4, h5, и h6 являются е2, е3 и е4, которые закреплены. Они могут быть предварительно добавлены в w4, W5 и W6, и. Я не совсем понимаю, оптимизацию ч (), потому что, по моим расчетам, e4 является переменной, а f4 и g4 фиксированы, поэтому ч (e4, f4, g4) не вписывается в шаблон, который требует е, чтобы быть одним из двух основных входов.

Я что-нибудь еще в первом хэша не видит, поэтому у нас есть в общей сложности 19x3 + 17 + 1 + 1 + 1 = 77 операций сохраненным, не включая W расчетов.


Для второго хэша, первый раунд требует 2 добавляет, так как все фиксировано, за исключением W [0]. Я опять не уверен насчет оптимизации ч () во втором туре, так как e1 является переменной, а f1 и g1 фиксированы. Так что это 17 операций, сохраненных только в первом раунде.

Ближе к концу второго хэша есть много сбережений. Я ошибочно полагал, что A64 должен быть равен нулю, когда на самом деле это х64, который должен быть равен нулю. Последнее вычисление, которое должно быть сделано e61, который, как вы сказали средства округляет 62, 63 и 64 не должны быть рассчитаны на всех, и W [61], W [62], и W [63] также сделать не должны быть вычислены.

Кроме того, A58, A59, A60, A61 и не должны быть вычислены либо, так как они используются только для вычисления последующих значений а. Они не влияют на значения е до a57 в конечном итоге превращается в D60, который вводится в E61. Поэтому 8 операции (S0 (), мо () и 2 добавляет) могут быть сохранены для патронов 58, 59, 60 и 61.

Таким образом, для второй хэш, я показываю 17 операций в первом раунде, и 19x3 = 57 в течение последних трех и 8х4 = 32 для патронов 58-61. Это в общей сложности 106, плюс 3x14 = 42 для вычисления W, что я не включал раньше.

Таким образом, общая сумма моего расчета:
Значения W-первых хеш: 522 по сравнению с наивным 672 (150) сохраняет
Первый хеширования 64 раундов: 1139 vs. наивным 1216 (77) позволяет экономить
Добавить в 8 значений: 8 (экономия 0)
Значения W-вторых хеш: 555 по сравнению с наивным 672 (117) сохраняет
Второй хэш 64 раундов: 1110 против 1216 наивным (экономит 106)
Добавить в 8 значений: 1 по сравнению с наивным 8 (экономия 7)

Всего: 3335 против 3792 наивных опсов в нонс.

У нас есть некоторые расхождения, хотя я склонен поставить много веры в вашу фактическую реализацию против моих каракулеев на бумаге. В конце концов, я думаю, что они должны сходиться к тому же номеру.

Еще одна вещь, я баловаться с AMD KernelAnalyzer и полезно подсчитать фактические строки в листинге дизассемблера, которые представляют собой отдельные скалярные опа, чтобы определить, является ли компилятор выдает 5 опа за одну команду, потому что иногда это становится возможно 4.7 в среднем или 4.9, в зависимости. Я не нашел в VLIW «эффективность» сообщили в любом месте, так что я должен был рассчитывать сам. Я считаю, что причина "ВЕКТОРЫ" повышает производительность настолько, что с двумя независимыми эффективно расчетами он имеет большую гибкость планирования и средние больше OPS за одну команду (ближе к 5,0).
vector76 сейчас офлайн Пожаловаться на vector76   Ответить с цитированием Мультицитирование сообщения от vector76 Быстрый ответ на сообщение vector76

3 августа 2011, 9:52:49 AM   # 9
 
 
Сообщения: 560
Цитировать по имени
цитировать ответ
по умолчанию Re: Теоретический предел скорости хеширования

котировка
Добавить в 8 значений: 1 по сравнению с наивным 8 (экономия 7)
Теоретически вам не нужно, что последняя надстройка либо:

Код:
если (х64 + состояние [7] == 0) // Ура! Деньги!
оптимизированы для -> если (х64 == -state [7]) // Ура! Деньги!

Там, где состояние [7] постоянно. Таким образом, вы экономите 8 опа, а не только 7. Я не знаю, если это применимо к чипам специально (возможно, это дешевле, чем добавить по сравнению с 0 !?), но это оптимизация в целом.
fpgaminer сейчас офлайн Пожаловаться на fpgaminer   Ответить с цитированием Мультицитирование сообщения от fpgaminer Быстрый ответ на сообщение fpgaminer

3 августа 2011, 10:39:29 AM   # 10
 
 
Сообщений: 70
Цитировать по имени
цитировать ответ
по умолчанию Re: Теоретический предел скорости хеширования

Теоретически вам не нужно, что последняя надстройка либо:

Код:
если (х64 + состояние [7] == 0) // Ура! Деньги!
оптимизированы для -> если (х64 == -state [7]) // Ура! Деньги!

Там, где состояние [7] постоянно. Таким образом, вы экономите 8 опа, а не только 7. Я не знаю, если это применимо к чипам специально (возможно, это дешевле, чем добавить по сравнению с 0 !?), но это оптимизация в целом.

Хороший улов, это правда. В некоторых архитектурах, сопоставляя равенство эквивалентно вычитания и тестирования на ноль, но я не думаю, что GPU является одним из них. Проверка равенства, конечно, не будет медленнее. Если сравнивать равно буквальную инструкцию существует (и я думаю, что это делает, "PRED_SETE"), То он сохраняет одну надстройку, а если нет, то это то же самое.
vector76 сейчас офлайн Пожаловаться на vector76   Ответить с цитированием Мультицитирование сообщения от vector76 Быстрый ответ на сообщение vector76

3 августа 2011, 6:24:28 PM   # 11
 
 
Сообщений: 52
Цитировать по имени
цитировать ответ
по умолчанию Re: Теоретический предел скорости хеширования

После попытки включить значения K в W вычислений, я побежал в неприятности ... я не получаю, как это сделать. Допустим, мы первые вычисления W20, который = (constant1 + s0) после этого мы можем вычислить W22 = (constant2 + s0). Теперь, если мы включаем расчет K в расчете W, W20 = (constant1 + K20 + s0) = (constant3 + s0). Теперь мы попробуем вычислить W22 (constant1 + s0), но так как s0 для W22 основан на W20 без добавления К, нам нужно каким-то образом, чтобы получить это значение, которое я хотел бы сказать, что вы можете хранить W20 = (constant1 + s0) и W20K = (W20 + K20), но использует тот же # ФОС, как это делать в раунде плюс использует больше памяти. Дайте мне знать, если я неправильно понял, или я что-то отсутствует.

котировка
Я не совсем понимаю, оптимизацию ч (), потому что, по моим расчетам, e4 является переменной, а f4 и g4 фиксированы, поэтому ч (e4, f4, g4) не вписывается в шаблон, который требует е, чтобы быть одним из двух основных входов.
ой, я перепутала Maj и радиоканалов операции ... ч () принимает 1 инструкцию и Maj (х, у, г) = ч (х ^ у, х, у)
в Mod2 арифметики (и = * и XOR = +)
майор (х, у, г) = (х + хг + уг), вы можете видеть, что порядок не имеет значения в работе Maj и поэтому любые 2 операндов могут быть постоянными, чтобы сохранить команду

О значениях, которые я получил за W Calcs, я отправляюсь .. Я Путаю и ваши ценности являются правильными и то, что я использую в моем ядре (я перепутать, какие значения W имеет гниль и операцию XOR)

котировка
Еще одна вещь, я баловаться с AMD KernelAnalyzer и полезно подсчитать фактические строки в листинге дизассемблера, которые представляют собой отдельные скалярные опа, чтобы определить, является ли компилятор выдает 5 опа за одну команду, потому что иногда это становится возможно 4.7 в среднем или 4.9, в зависимости. Я не нашел в VLIW «эффективность» сообщили в любом месте, так что я должен был рассчитывать сам. Я считаю, что причина "ВЕКТОРЫ" повышает производительность настолько, что с двумя независимыми эффективно расчетами он имеет большую гибкость планирования и средние больше OPS за одну команду (ближе к 5,0).

Спасибо за совет, в общем, мое ядро ​​использует 4.946 опа за одну команду (EDIT: после некоторых незначительных кодов настроек, теперь 4,973), так что на самом деле не много возможностей для улучшения там.
EDIT СНОВА: количество операций составит (в моем фактическом ядре) в нонс составляет 3359, включая 5 операций (10 опс для 2 одноразовых номеров: в основном, получая нить #), необходимые для получения временного значения для текущего потока .. поэтому, 3354 для фактически проверка каждой Nonce. Так, кажется, довольно близко к фактическому пределу ...

котировка
Добавить в 8 значений: 1 по сравнению с наивным 8 (экономия 7)
Теоретически вам не нужно, что последняя надстройка либо:

Код:
если (х64 + состояние [7] == 0) // Ура! Деньги!
оптимизированы для -> если (х64 == -state [7]) // Ура! Деньги!

Там, где состояние [7] постоянно. Таким образом, вы экономите 8 опа, а не только 7. Я не знаю, если это применимо к чипам специально (возможно, это дешевле, чем добавить по сравнению с 0 !?), но это оптимизация в целом.


Да, есть еще сравнить инструкции, но это может быть уменьшен путем объединения - (К и Н) в одну константу

конец моего ядра выглядит следующим образом:
Код:
v = W [64 + 53] + W [64 + 44] + Валс [3] + Валс [7] + Р2 (64 + 60) + Р1 (64 + 60) + Ch ((Vals [0] + Валс [ 4]) + (К [59] + W (59 + 64)) + s1 (64 + 59) + CH (59 + 64), Валс [1], Валс [2]);
г = - (К [60] + Н [7]) - S1 ((Vals [0] + Валс [4]) + (К [59] + W (59 + 64)) + s1 (64 + 59) + ч (59 + 64));
        если (v == г) ...
где P1 является s0 для W расч и Р2 S1.
Валс [0] -Vals [7] являются-ч
компилятор оптимизирует константу вместе и эффективно удаляет добавление K
Phateus сейчас офлайн Пожаловаться на Phateus   Ответить с цитированием Мультицитирование сообщения от Phateus Быстрый ответ на сообщение Phateus

4 августа 2011, 1:33:26 AM   # 12
 
 
Сообщений: 70
Цитировать по имени
цитировать ответ
по умолчанию Re: Теоретический предел скорости хеширования

После попытки включить значения K в W вычислений, я побежал в неприятности ... я не получаю, как это сделать. Допустим, мы первые вычисления W20, который = (constant1 + s0) после этого мы можем вычислить W22 = (constant2 + s0). Теперь, если мы включаем расчет K в расчете W, W20 = (constant1 + K20 + s0) = (constant3 + s0). Теперь мы попробуем вычислить W22 (constant1 + s0), но так как s0 для W22 основан на W20 без добавления К, нам нужно каким-то образом, чтобы получить это значение, которое я хотел бы сказать, что вы можете хранить W20 = (constant1 + s0) и W20K = (W20 + K20), но использует тот же # ФОС, как это делать в раунде плюс использует больше памяти. Дайте мне знать, если я неправильно понял, или я что-то отсутствует.
Ах дерьмо, ты прав. Вы не можете сохранить дополнение W + K, потому что вам нужно W в одиночку, чтобы вычислить последующее W. Только при фиксированном W может вы предвычисления W и W + K, так что я должен пересмотреть вверх свою оценку по 16 операций в первый хэш (Вт [18] через W [33]) и 24 для второго хэша (W [0] через W [7] и W [16] через W [32]). Но значения K-прежнему могут быть объединены с ч значений в течение первых четырех раундов второго хэша, так что W + K может быть пропущены для W [0] через W [3] в конце концов.

Что касается ма () и ч (), я сделал таблицу истинности для тройной проверки, и я думаю, что я, наконец, понять его. Похоже, что это может быть применен в 5-м раунде первого хэша и 2-м раунде второго хэша, так что 2 операции.

Удаление окончательной надстройки, новый итог является:
Значения W-первых хеш: 538 по сравнению с наивным 672 (134) сохраняет
Во-первых хеш-64 раундов: 1138 по сравнению с наивным 1216 (экономит 78)
Добавить в 8 значений: 8 (экономия 0)
Значения W-вторых хеш: 575 по сравнению с наивным 672 (97) сохраняет
Второй хэш 64 раундов: 1109 против 1216 наивным (экономит 107)
Добавить в 8 значениях: 0 против наивных 8 (экономия

Всего: 3368 против 3792 наивных опсов в нонс.

vector76 сейчас офлайн Пожаловаться на vector76   Ответить с цитированием Мультицитирование сообщения от vector76 Быстрый ответ на сообщение vector76



Как заработать Биткоины?

Bitcoin Wallet * Portefeuille Bitcoin * Monedero Bitcoin * Carteira Bitcoin * Portafoglio Bitcoin * Bitcoin Cüzdan * 比特币钱包

bitcoin-zarabotat.ru
Почта для связи: bitcoin-zarabotat.ru@yandex.ru

3HmAQ9FkRFk6HZGuwExYxL62y7C1B9MwPW