Как стать автором
Обновить

Комментарии 8

прочитал «лайккоинов», задумался
Пойду посчитаю лайткоины.
Теперь осталось на гитхаб выложить, с разными ветками для разных версий драйверов. Удачи в дальнейших исследованиях!
А можно в общих чертах, что за алгоритм этот Scrypt, в чем его соль? Слышал, что он очень требователен к памяти, и из-за этого не так подвержен гонке мегагерц, как биткоиновский SHA — типа, для того и задумывался. Но означает ли это, что комп с 64 гигами на борту будет майнить быстрее, чем с двумя? Вообще, как там память используется? Влияет ли частота memory clock? Расскажите плиз, что знаете.
что комп с 64 гигами на борту будет майнить быстрее, чем с двумя?

Нет. Требования по памяти там на самом деле ничтожны — AFAIK, считанные сотни килобайт. Для компьютеров и видеокарт — не проблема. Но вот для создания специализированного чипа вроде Avalon или BitFury — проблема, причем огромная.
что происходит при замене i*2 на rotl(i,1U)

Во первых, rotl() это циклический сдвиг и работает он медленее чем обычный сдвиг (в который оптимизируется i*2).
Во вторых, как это вы так заменили? Это же ошибка! Если у вас слева будет единица, то она появится справа. Конечно, если такое значение умножить на 2 будет выход за пределы регистра и установкой Флага Переноса, но ошибка от этого не перестает быть ошибкой!
Но ведь с моими оптимизациями функции scrypt_core и этой заменой общая скорость растёт, а без замены — даже падает. Значит не всё так просто?
А i изменяется в пределах от 0 до 3, значит у нас еще 29 «лишних» бит и за пределы регистра мы не выйдем ну никак.
Для начала:
Обнаружил, что падение производительности вызывает та самая загадочная замена i*2 на rotl(i,1U)

Во вторых, да, все вот так просто. Как-бы в мире существует не одна «железка», их множество и на каждой все по разному работает. Поэтому оставьте i*2, компилятор сам сделает что нужно (только если вы заранее не компилируете). А что до «упавшей» скорости, возможно вы что-то не то сделали.

А i изменяется в пределах от 0 до 3, значит у нас еще 29 «лишних» бит и за пределы регистра мы не выйдем ну никак.

Это не отменяет того, что это ошибка, а про «выход за пределы» я говорил о простом сдвиге. Если уж так хотели «заоптимизировать», написали бы i<<2.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории