Комментарии 8
прочитал «лайккоинов», задумался
-5
Пойду посчитаю лайткоины.
-7
Теперь осталось на гитхаб выложить, с разными ветками для разных версий драйверов. Удачи в дальнейших исследованиях!
+5
А можно в общих чертах, что за алгоритм этот Scrypt, в чем его соль? Слышал, что он очень требователен к памяти, и из-за этого не так подвержен гонке мегагерц, как биткоиновский SHA — типа, для того и задумывался. Но означает ли это, что комп с 64 гигами на борту будет майнить быстрее, чем с двумя? Вообще, как там память используется? Влияет ли частота memory clock? Расскажите плиз, что знаете.
0
что происходит при замене i*2 на rotl(i,1U)
Во первых, rotl() это циклический сдвиг и работает он медленее чем обычный сдвиг (в который оптимизируется i*2).
Во вторых, как это вы так заменили? Это же ошибка! Если у вас слева будет единица, то она появится справа. Конечно, если такое значение умножить на 2 будет выход за пределы регистра и установкой Флага Переноса, но ошибка от этого не перестает быть ошибкой!
+5
Но ведь с моими оптимизациями функции scrypt_core и этой заменой общая скорость растёт, а без замены — даже падает. Значит не всё так просто?
А i изменяется в пределах от 0 до 3, значит у нас еще 29 «лишних» бит и за пределы регистра мы не выйдем ну никак.
А i изменяется в пределах от 0 до 3, значит у нас еще 29 «лишних» бит и за пределы регистра мы не выйдем ну никак.
0
Для начала:
Во вторых, да, все вот так просто. Как-бы в мире существует не одна «железка», их множество и на каждой все по разному работает. Поэтому оставьте i*2, компилятор сам сделает что нужно (только если вы заранее не компилируете). А что до «упавшей» скорости, возможно вы что-то не то сделали.
Это не отменяет того, что это ошибка, а про «выход за пределы» я говорил о простом сдвиге. Если уж так хотели «заоптимизировать», написали бы i<<2.
Обнаружил, что падение производительности вызывает та самая загадочная замена i*2 на rotl(i,1U)
Во вторых, да, все вот так просто. Как-бы в мире существует не одна «железка», их множество и на каждой все по разному работает. Поэтому оставьте i*2, компилятор сам сделает что нужно (только если вы заранее не компилируете). А что до «упавшей» скорости, возможно вы что-то не то сделали.
А i изменяется в пределах от 0 до 3, значит у нас еще 29 «лишних» бит и за пределы регистра мы не выйдем ну никак.
Это не отменяет того, что это ошибка, а про «выход за пределы» я говорил о простом сдвиге. Если уж так хотели «заоптимизировать», написали бы i<<2.
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Оптимизация майнинга лайткоинов