Evaluation of std::chrono

If you have a look around in the web, a solution to correctly measure time is to use a new C++ package: std::chrono , which is part of the standard C++ library. So the aim of this article is to investigate if this solution can be used to have a very high resolution...

Shuffle in SSE

#include #include void test(int32_t *Y, int32_t *X) { __m128i *v1 __attribute__((aligned (16))); __m128i *v2 __attribute__((aligned (16))); __m128i v3 __attribute__((aligned (16))); __m128i v4 __attribute__((aligned (16))); int32_t * rslt; int64_t * rslt64; v1 =...

SHA3

Preimage attack on Keccak-512 reduced to 8 rounds, requiring 2511.5 time and 2508 memory[2] Zero-sum distinguishers exist for the full 24-round Keccak-f[1600], though they cannot be used to attack the hash function itself[3] SHA-3 (Secure Hash Algorithm 3) is the...

SSE usage Tutorial

Hi all, SSE usage is a bit tricky You have to see see registers as vectorial not a linear and their size is depending of the context. For instance xmm0 (a SSE 128 bytes register)can be seen as 2*64 bits register or 4*32 bits register or 8*16  bits register or 16*8...

Ethminer Optimization part 2

In the previous article we started  sha* functions optimizations, now as we previously seen a large bottleneck performance is in internal.c. /* This file is part of ethash. ethash is free software: you can redistribute it and/or modify it under the terms of the GNU...

Etherminer Optimization

People often ask me what is the best way to optimize code and cope which is the best way to optimize code. The best way to understand how to do that is to take an example. I’m gonna show you how to optimize the  implementation of the ethereum algorithm. This...