LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Programming (https://www.linuxquestions.org/questions/programming-9/)
-   -   C code to test CPU performances / benchmarking? (https://www.linuxquestions.org/questions/programming-9/c-code-to-test-cpu-performances-benchmarking-4175581626/)

patrick295767 06-07-2016 12:39 AM

C code to test CPU performances / benchmarking?
 
Hello,

Which short C code would do a good test for CPU performances / benchmarking.

You may avoid this type of loop which has some drawbacks:
http://www.brendangregg.com/blog/201...benchmark.html

Best regards

dijetlo 06-08-2016 11:25 AM

Floating point calculations, Pi to the Nth digit seems a likely choice.
CPU performance is dependent on a lot of variables your not considering here, but that would give you some base numbers on processing capacity.

sundialsvcs 06-09-2016 05:59 PM

Actually, it is very difficult if not impossible for any user-mode program to calculate the "performance of" any CPU, because the process is at the mercy of the operating system. Furthermore, "the presence of the experimenter changes the experiment."

Generally speaking, I suggest that the best way to measure such things is by statistical methods. Run an experiment, under different real-world conditions judged to be representative. Collect several hundred or thousand data-points. Then, offline-analyze them.

One strategy that I find useful is to establish some kind of "definite goal." Such as, "at least 95% of all requests must complete within X milliseconds, and the standard-deviation of the completion times must be less than Y." Or: "There must be at least 98% probability that all requests completed with any 3-second sample window will be completed." And so on. Choose goals that are meaningful to the people, or to the companies or workgroups, that are interested in using the computing-machine, and be certain that you can provide results which are relevant to: "I want to use the computing-machine to reliably handle this duty for me."

Take samples in all sorts of representative conditions, taking careful note of the conditions that prevailed when each sample was taken. "Sometimes, the sample has the system all to itself. Sometimes, the system's getting slammed."

patrick295767 06-12-2016 11:42 AM

It is not so easy to build a reliable benchmarking tool

https://miteshpatekar.wordpress.com/...ing-tool-in-c/

sundialsvcs 06-13-2016 03:15 PM

My counter to that might be: "well, who cares about MFLOPS [Millions of FLoating-point Operations per Second], anyway?"

This rarefied statistic is only of interest if your hardware environment is so ##CLASSIFIED## exotic that you can realistically expect your job to predictably, actually have(!) access to the hardware, without any sort of competition, for a significant amount of time.

... and if you do, what you actually wind up measuring is "the overhead of the operating system." :rolleyes:

If your hardware environment is realistic, then there are so many other factors ... factors which might well consume milli-seconds, and do so "unpredictably(!!)" ... that: "MFLOPS ... just ... don't ... matter!" :jawa:

Thus, my admonition to use classical statistical measuring techniques. "You are 'taking a sample,' and you are doing it many times, under real world(!) conditions."

Furthermore, "what you are sampling," just like "the result-statistic that you intend to produce," is strictly focused upon "the payoff" of the experiment process that you are observing.

Instead of "fixating on 'MFLOPS, or what-have-you,'" and therefore being totally lead-around-by-the-nose by their (inevitable ...) unpredictability, you are doing precisely the opposite: you are constructing a test which seeks to extinguish the influence of "that unpredictability, along with every other 'environmental factor.'"

"Just sample the Black Box.™ If you do this a sufficient number of times, you don't have to care how the Black Box works."

(And, by the way, you can also predict just how many samples you need ...)

(And, also 'by the way,' that number is quite small.) :eek:

suicidaleggroll 06-13-2016 03:42 PM

Testing raw CPU power alone is rarely very helpful, since any real-world application of that processing power would depend on many other factors as well, such as memory bandwidth/latency, I/O speed, etc.

For example, many years ago I had a machine that ran process X in Y minutes. A few years later I was tasked with building a replacement machine that would run process X faster. I ran some experiments and built a machine that actually had a _significantly_ slower clock speed (on the order of 20%), with an associated 10-15% reduction in raw CPU performance, but it had a MUCH faster memory interface, and it ended up running process X quite a bit faster than the previous machine. Process X was actually being bottlenecked by the memory bandwidth on the older system, and opening that up sped up the process significantly, even though the CPU was slower.

Similar stories can be told for cache size differences, hard drive random/sequential access differences, etc.

In order for a performance metric to be of _any_ use, it needs to measure what you're actually going to use the computer for, rather than some random, unrelated, number crunching algorithm.

patrick295767 06-18-2016 02:30 PM

Quote:

Originally Posted by suicidaleggroll (Post 5560354)
Testing raw CPU power alone is rarely very helpful, ...

not necessarily

smallpond 06-24-2016 05:20 PM

Any short benchmark will fit entirely in cache so won't represent the performance of a real-world program.

Sanmayce 07-05-2016 07:31 AM

1 Attachment(s)
Quote:

Originally Posted by patrick295767 (Post 5557087)

Which short C code would do a good test for CPU performances / benchmarking.

Indeed, despite its deceptive simplicity writing a reliable CPU-RAM sub-system benchmarker is not trivial, at least I know no such tool, open-sourced.
Yet, my proposition is to try Knight-Tour's simplistic mainloop - it generates billions of lines 128 bytes long - unique of course, which is a nice bonus output helping in testing special cases of hashing and searching. If you want to play with my KT-dumper it is attached, its main loop looks like (MinGW used):

Code:

        .seh_proc        play
play:
        pushq        %r13
        .seh_pushreg        %r13
        pushq        %r12
        .seh_pushreg        %r12
        pushq        %rbp
        .seh_pushreg        %rbp
        pushq        %rdi
        .seh_pushreg        %rdi
        pushq        %rsi
        .seh_pushreg        %rsi
        pushq        %rbx
        .seh_pushreg        %rbx
        subq        $40, %rsp
        .seh_stackalloc        40
        .seh_endprologue
        movl        nTrys_Low(%rip), %esi
        leaq        moves(%rip), %r8
        movslq        k(%rip), %rdx
        leaq        board(%rip), %rdi
        addq        $1, Jumps(%rip)
        leal        1(%rdx), %eax
        movl        %ecx, (%r8,%rdx,4)
        leal        1(%rsi), %edx
        movslq        %ecx, %r12
        movl        %edx, nTrys_Low(%rip)
        andl        $268435455, %edx
        cmpl        $268435455, %edx
        movl        $1, (%rdi,%r12,4)
        movl        %eax, k(%rip)
        je        .L359
.L339:
        cmpl        $64, %eax
        je        .L341
        leaq        (%r12,%r12,8), %rbp
        leaq        list(%rip), %r13
        leaq        0(,%rbp,4), %rdx
        movl        0(%r13,%rdx), %ecx
        testl        %ecx, %ecx
        je        .L342
        leaq        4(%r13,%rdx), %rbx
        movl        $1, %esi
        .p2align 4,,10
.L343:
        movslq        %ecx, %rax
        movl        (%rdi,%rax,4), %eax
        testl        %eax, %eax
        je        .L360
        movl        (%rbx), %ecx
        testl        %ecx, %ecx
        jne        .L352
        addq        $1, Sequences(%rip)
        cmpl        $2, Verbose(%rip)
        je        .L361
.L358:
        movl        k(%rip), %eax
.L342:
        subl        $1, %eax
        movl        $0, (%rdi,%r12,4)
        movl        %eax, k(%rip)
        addq        $40, %rsp
        popq        %rbx
        popq        %rsi
        popq        %rdi
        popq        %rbp
        popq        %r12
        popq        %r13
        ret
        .p2align 4,,10
.L360:
        call        play
.L351:
        movslq        %esi, %rax
        addq        %rbp, %rax
        movl        0(%r13,%rax,4), %ecx
        testl        %ecx, %ecx
        je        .L358
.L352:
        addl        $1, %esi
        addq        $4, %rbx
        jmp        .L343
        .p2align 4,,10
.L361:
        call        winner
        jmp        .L351
        .p2align 4,,10
.L341:
        addq        $1, wincount(%rip)
        call        clock
        pxor        %xmm0, %xmm0
        movl        %eax, finish(%rip)
        subl        start(%rip), %eax
        cvtsi2sd        %eax, %xmm0
        movl        Verbose(%rip), %eax
        divsd        .LC35(%rip), %xmm0
        movsd        %xmm0, duration(%rip)
        cmpl        $1, %eax
        je        .L362
        cmpl        $3, %eax
        je        .L363
        cmpl        $2, %eax
        je        .L364
.L345:
        subl        $1, k(%rip)
        movl        $0, (%rdi,%r12,4)
        addq        $40, %rsp
        popq        %rbx
        popq        %rsi
        popq        %rdi
        popq        %rbp
        popq        %r12
        popq        %r13
        ret
        .p2align 4,,10
.L359:
        call        clock
        pxor        %xmm0, %xmm0
        movl        %eax, finish(%rip)
        subl        start(%rip), %eax
        cmpl        $1, Verbose(%rip)
        cvtsi2sd        %eax, %xmm0
        divsd        .LC35(%rip), %xmm0
        movsd        %xmm0, duration(%rip)
        je        .L365
.L357:
        movl        k(%rip), %eax
        jmp        .L339
.L364:
        call        winner
        jmp        .L345
.L362:
        movq        Jumps(%rip), %rcx
        call        _ui64toaKAZEzerocomma.constprop.3
        movq        Sequences(%rip), %rcx
        movq        %rax, %rbx
        call        _ui64toaKAZEzerocomma.constprop.4
        leaq        .LC36(%rip), %rcx
        movq        %rbx, %r8
        movapd        %xmm0, %xmm3
        movq        %xmm0, %r9
        movq        %rax, %rdx
        call        printf
        call        winner
        jmp        .L345
.L365:
        movq        Jumps(%rip), %rcx
        call        _ui64toaKAZEzerocomma.constprop.3
        movq        Sequences(%rip), %rcx
        movq        %rax, %rbx
        call        _ui64toaKAZEzerocomma.constprop.4
        leaq        .LC36(%rip), %rcx
        movq        %rbx, %r8
        movapd        %xmm0, %xmm3
        movq        %xmm0, %r9
        movq        %rax, %rdx
        call        printf
        jmp        .L357
.L363:
        call        winner
        movq        KT(%rip), %rax
        cmpq        %rax, wincount(%rip)
        jne        .L345
        movl        $1, %ecx
        call        exit
        nop
        .seh_endproc

You may try these excellent etudes as a start for creating multi-threaded checksumer/benchmarker:
https://www.nayuki.io/page/fast-sha1...n-x86-assembly

On a SHA1 note, you can see how AMD has made good in that important segment in their incoming Zen, 1GB/s per thread - NOT CORE but per thread:
http://www.overclock.net/t/1579520/z...#post_25147419

http://cdn.overclock.net/a/a3/a31774...nchmarks-1.png

The output of KT-dumper is like this:
Code:


C:\Program Files\mingw-w64\x86_64-5.1.0-posix-seh-rt_v4-rev0>echo off
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\>d:

D:\>cd D:\WorkTemp\Knight-tour_r8dump_YoshimitsuTRIAD_CRC8_BRUTUS+

D:\WorkTemp\Knight-tour_r8dump_YoshimitsuTRIAD_CRC8_BRUTUS+>dir
 Volume in drive D is S640_Vol5
 Volume Serial Number is 5861-9E6C

 Directory of D:\WorkTemp\Knight-tour_r8dump_YoshimitsuTRIAD_CRC8_BRUTUS+

07/05/2016  03:23 PM    <DIR>          .
07/05/2016  03:23 PM    <DIR>          ..
10/16/2012  05:46 AM          581,225 dsn02_koopman.pdf
07/05/2016  03:22 PM            68,343 Knight-tour_r8dump_YoshimitsuTRIAD_CRC8_BRUTUS+.c
10/16/2012  05:46 AM          969,457 KoopmanCRCWebinar9May2012.pdf
07/05/2016  02:23 PM              283 MAKE_EXE.bat
10/16/2012  05:46 AM            1,590 Yorikke prompt.lnk
              5 File(s)      1,620,898 bytes
              2 Dir(s)  6,888,382,464 bytes free

D:\WorkTemp\Knight-tour_r8dump_YoshimitsuTRIAD_CRC8_BRUTUS+>MAKE_EXE.bat

D:\WorkTemp\Knight-tour_r8dump_YoshimitsuTRIAD_CRC8_BRUTUS+>gcc -O3 -m64 -fomit-frame-pointer -S Knight-tour_r8dump_YoshimitsuTRIAD_CRC8_BRUTUS+.c -o Knight-tour_r8dump_Y
oshimitsuTRIAD_CRC8_BRUTUS+.S

D:\WorkTemp\Knight-tour_r8dump_YoshimitsuTRIAD_CRC8_BRUTUS+>gcc -O3 -m64 -fomit-frame-pointer Knight-tour_r8dump_YoshimitsuTRIAD_CRC8_BRUTUS+.c -o Knight-tour_r8dump_Yosh
imitsuTRIAD_CRC8_BRUTUS+.exe
D:\WorkTemp\Knight-tour_r8dump_YoshimitsuTRIAD_CRC8_BRUTUS+>"Knight-tour_r8dump_YoshimitsuTRIAD_CRC8_BRUTUS+.exe" a8 2000000
Knight-tour_r8dump_YoshimitsuTRIAD, subrevision D (Brutus+), written by Kaze (based on Kurt White's code), downloadable at www.sanmayce.com/Fastest_Hash
Purpose: to compare FNV1A_YoshimitsuTRIAD and CRC32 by giving the highest number of collisions i.e. the deepest nest/layer, the-lesser-the-better.
Note: In this subrevision a KT is transformed to lowercase at each position ONCE i.e. all the 64 combinations.
      thus excluding the original KT we can hash 1+ trillion 1Kb UNIQUE chunks by having only 16 billion KTs.
Polynomials used:
CRC32C1_8slice: 0x82F63B78
CRC32C2_8slice: 0x8F6E37A0
CRC32K1_8slice: 0xBA0DC66B
CRC32K2_8slice: 0x90022004
KT to be hashed = 128,000,000
HashSizeInBits = 26
ReportAtEvery = 67,108,863
Allocating HASH memory 256MB ... OK
Allocating HASH memory 256MB ... OK
Allocating HASH memory 256MB ... OK
Allocating HASH memory 256MB ... OK
Allocating HASH memory 256MB ... OK
The first KT:
A8C7E8G7H5G3H1F2H3G1E2C1A2B4A6B8D7F8H7G5F7H8G6H4G2E1C2A1B3A5B7D8C6A7C8E7G8H6G4H2F1D2B1A3B5D6F5D4F3E5C4B2D3F4E6C5A4B6D5F6E4C3D1E3
gives following 64 UNIQUE derivatives:
a8C7E8G7H5G3H1F2H3G1E2C1A2B4A6B8D7F8H7G5F7H8G6H4G2E1C2A1B3A5B7D8C6A7C8E7G8H6G4H2F1D2B1A3B5D6F5D4F3E5C4B2D3F4E6C5A4B6D5F6E4C3D1E3
A8c7E8G7H5G3H1F2H3G1E2C1A2B4A6B8D7F8H7G5F7H8G6H4G2E1C2A1B3A5B7D8C6A7C8E7G8H6G4H2F1D2B1A3B5D6F5D4F3E5C4B2D3F4E6C5A4B6D5F6E4C3D1E3
A8C7e8G7H5G3H1F2H3G1E2C1A2B4A6B8D7F8H7G5F7H8G6H4G2E1C2A1B3A5B7D8C6A7C8E7G8H6G4H2F1D2B1A3B5D6F5D4F3E5C4B2D3F4E6C5A4B6D5F6E4C3D1E3
A8C7E8g7H5G3H1F2H3G1E2C1A2B4A6B8D7F8H7G5F7H8G6H4G2E1C2A1B3A5B7D8C6A7C8E7G8H6G4H2F1D2B1A3B5D6F5D4F3E5C4B2D3F4E6C5A4B6D5F6E4C3D1E3
A8C7E8G7h5G3H1F2H3G1E2C1A2B4A6B8D7F8H7G5F7H8G6H4G2E1C2A1B3A5B7D8C6A7C8E7G8H6G4H2F1D2B1A3B5D6F5D4F3E5C4B2D3F4E6C5A4B6D5F6E4C3D1E3
A8C7E8G7H5g3H1F2H3G1E2C1A2B4A6B8D7F8H7G5F7H8G6H4G2E1C2A1B3A5B7D8C6A7C8E7G8H6G4H2F1D2B1A3B5D6F5D4F3E5C4B2D3F4E6C5A4B6D5F6E4C3D1E3
A8C7E8G7H5G3h1F2H3G1E2C1A2B4A6B8D7F8H7G5F7H8G6H4G2E1C2A1B3A5B7D8C6A7C8E7G8H6G4H2F1D2B1A3B5D6F5D4F3E5C4B2D3F4E6C5A4B6D5F6E4C3D1E3
A8C7E8G7H5G3H1f2H3G1E2C1A2B4A6B8D7F8H7G5F7H8G6H4G2E1C2A1B3A5B7D8C6A7C8E7G8H6G4H2F1D2B1A3B5D6F5D4F3E5C4B2D3F4E6C5A4B6D5F6E4C3D1E3
A8C7E8G7H5G3H1F2h3G1E2C1A2B4A6B8D7F8H7G5F7H8G6H4G2E1C2A1B3A5B7D8C6A7C8E7G8H6G4H2F1D2B1A3B5D6F5D4F3E5C4B2D3F4E6C5A4B6D5F6E4C3D1E3
A8C7E8G7H5G3H1F2H3g1E2C1A2B4A6B8D7F8H7G5F7H8G6H4G2E1C2A1B3A5B7D8C6A7C8E7G8H6G4H2F1D2B1A3B5D6F5D4F3E5C4B2D3F4E6C5A4B6D5F6E4C3D1E3
A8C7E8G7H5G3H1F2H3G1e2C1A2B4A6B8D7F8H7G5F7H8G6H4G2E1C2A1B3A5B7D8C6A7C8E7G8H6G4H2F1D2B1A3B5D6F5D4F3E5C4B2D3F4E6C5A4B6D5F6E4C3D1E3
A8C7E8G7H5G3H1F2H3G1E2c1A2B4A6B8D7F8H7G5F7H8G6H4G2E1C2A1B3A5B7D8C6A7C8E7G8H6G4H2F1D2B1A3B5D6F5D4F3E5C4B2D3F4E6C5A4B6D5F6E4C3D1E3
A8C7E8G7H5G3H1F2H3G1E2C1a2B4A6B8D7F8H7G5F7H8G6H4G2E1C2A1B3A5B7D8C6A7C8E7G8H6G4H2F1D2B1A3B5D6F5D4F3E5C4B2D3F4E6C5A4B6D5F6E4C3D1E3
A8C7E8G7H5G3H1F2H3G1E2C1A2b4A6B8D7F8H7G5F7H8G6H4G2E1C2A1B3A5B7D8C6A7C8E7G8H6G4H2F1D2B1A3B5D6F5D4F3E5C4B2D3F4E6C5A4B6D5F6E4C3D1E3
A8C7E8G7H5G3H1F2H3G1E2C1A2B4a6B8D7F8H7G5F7H8G6H4G2E1C2A1B3A5B7D8C6A7C8E7G8H6G4H2F1D2B1A3B5D6F5D4F3E5C4B2D3F4E6C5A4B6D5F6E4C3D1E3
A8C7E8G7H5G3H1F2H3G1E2C1A2B4A6b8D7F8H7G5F7H8G6H4G2E1C2A1B3A5B7D8C6A7C8E7G8H6G4H2F1D2B1A3B5D6F5D4F3E5C4B2D3F4E6C5A4B6D5F6E4C3D1E3
A8C7E8G7H5G3H1F2H3G1E2C1A2B4A6B8d7F8H7G5F7H8G6H4G2E1C2A1B3A5B7D8C6A7C8E7G8H6G4H2F1D2B1A3B5D6F5D4F3E5C4B2D3F4E6C5A4B6D5F6E4C3D1E3
A8C7E8G7H5G3H1F2H3G1E2C1A2B4A6B8D7f8H7G5F7H8G6H4G2E1C2A1B3A5B7D8C6A7C8E7G8H6G4H2F1D2B1A3B5D6F5D4F3E5C4B2D3F4E6C5A4B6D5F6E4C3D1E3
A8C7E8G7H5G3H1F2H3G1E2C1A2B4A6B8D7F8h7G5F7H8G6H4G2E1C2A1B3A5B7D8C6A7C8E7G8H6G4H2F1D2B1A3B5D6F5D4F3E5C4B2D3F4E6C5A4B6D5F6E4C3D1E3
A8C7E8G7H5G3H1F2H3G1E2C1A2B4A6B8D7F8H7g5F7H8G6H4G2E1C2A1B3A5B7D8C6A7C8E7G8H6G4H2F1D2B1A3B5D6F5D4F3E5C4B2D3F4E6C5A4B6D5F6E4C3D1E3
A8C7E8G7H5G3H1F2H3G1E2C1A2B4A6B8D7F8H7G5f7H8G6H4G2E1C2A1B3A5B7D8C6A7C8E7G8H6G4H2F1D2B1A3B5D6F5D4F3E5C4B2D3F4E6C5A4B6D5F6E4C3D1E3
A8C7E8G7H5G3H1F2H3G1E2C1A2B4A6B8D7F8H7G5F7h8G6H4G2E1C2A1B3A5B7D8C6A7C8E7G8H6G4H2F1D2B1A3B5D6F5D4F3E5C4B2D3F4E6C5A4B6D5F6E4C3D1E3
A8C7E8G7H5G3H1F2H3G1E2C1A2B4A6B8D7F8H7G5F7H8g6H4G2E1C2A1B3A5B7D8C6A7C8E7G8H6G4H2F1D2B1A3B5D6F5D4F3E5C4B2D3F4E6C5A4B6D5F6E4C3D1E3
A8C7E8G7H5G3H1F2H3G1E2C1A2B4A6B8D7F8H7G5F7H8G6h4G2E1C2A1B3A5B7D8C6A7C8E7G8H6G4H2F1D2B1A3B5D6F5D4F3E5C4B2D3F4E6C5A4B6D5F6E4C3D1E3
A8C7E8G7H5G3H1F2H3G1E2C1A2B4A6B8D7F8H7G5F7H8G6H4g2E1C2A1B3A5B7D8C6A7C8E7G8H6G4H2F1D2B1A3B5D6F5D4F3E5C4B2D3F4E6C5A4B6D5F6E4C3D1E3
A8C7E8G7H5G3H1F2H3G1E2C1A2B4A6B8D7F8H7G5F7H8G6H4G2e1C2A1B3A5B7D8C6A7C8E7G8H6G4H2F1D2B1A3B5D6F5D4F3E5C4B2D3F4E6C5A4B6D5F6E4C3D1E3
A8C7E8G7H5G3H1F2H3G1E2C1A2B4A6B8D7F8H7G5F7H8G6H4G2E1c2A1B3A5B7D8C6A7C8E7G8H6G4H2F1D2B1A3B5D6F5D4F3E5C4B2D3F4E6C5A4B6D5F6E4C3D1E3
A8C7E8G7H5G3H1F2H3G1E2C1A2B4A6B8D7F8H7G5F7H8G6H4G2E1C2a1B3A5B7D8C6A7C8E7G8H6G4H2F1D2B1A3B5D6F5D4F3E5C4B2D3F4E6C5A4B6D5F6E4C3D1E3
A8C7E8G7H5G3H1F2H3G1E2C1A2B4A6B8D7F8H7G5F7H8G6H4G2E1C2A1b3A5B7D8C6A7C8E7G8H6G4H2F1D2B1A3B5D6F5D4F3E5C4B2D3F4E6C5A4B6D5F6E4C3D1E3
A8C7E8G7H5G3H1F2H3G1E2C1A2B4A6B8D7F8H7G5F7H8G6H4G2E1C2A1B3a5B7D8C6A7C8E7G8H6G4H2F1D2B1A3B5D6F5D4F3E5C4B2D3F4E6C5A4B6D5F6E4C3D1E3
A8C7E8G7H5G3H1F2H3G1E2C1A2B4A6B8D7F8H7G5F7H8G6H4G2E1C2A1B3A5b7D8C6A7C8E7G8H6G4H2F1D2B1A3B5D6F5D4F3E5C4B2D3F4E6C5A4B6D5F6E4C3D1E3
A8C7E8G7H5G3H1F2H3G1E2C1A2B4A6B8D7F8H7G5F7H8G6H4G2E1C2A1B3A5B7d8C6A7C8E7G8H6G4H2F1D2B1A3B5D6F5D4F3E5C4B2D3F4E6C5A4B6D5F6E4C3D1E3
A8C7E8G7H5G3H1F2H3G1E2C1A2B4A6B8D7F8H7G5F7H8G6H4G2E1C2A1B3A5B7D8c6A7C8E7G8H6G4H2F1D2B1A3B5D6F5D4F3E5C4B2D3F4E6C5A4B6D5F6E4C3D1E3
A8C7E8G7H5G3H1F2H3G1E2C1A2B4A6B8D7F8H7G5F7H8G6H4G2E1C2A1B3A5B7D8C6a7C8E7G8H6G4H2F1D2B1A3B5D6F5D4F3E5C4B2D3F4E6C5A4B6D5F6E4C3D1E3
A8C7E8G7H5G3H1F2H3G1E2C1A2B4A6B8D7F8H7G5F7H8G6H4G2E1C2A1B3A5B7D8C6A7c8E7G8H6G4H2F1D2B1A3B5D6F5D4F3E5C4B2D3F4E6C5A4B6D5F6E4C3D1E3
A8C7E8G7H5G3H1F2H3G1E2C1A2B4A6B8D7F8H7G5F7H8G6H4G2E1C2A1B3A5B7D8C6A7C8e7G8H6G4H2F1D2B1A3B5D6F5D4F3E5C4B2D3F4E6C5A4B6D5F6E4C3D1E3
A8C7E8G7H5G3H1F2H3G1E2C1A2B4A6B8D7F8H7G5F7H8G6H4G2E1C2A1B3A5B7D8C6A7C8E7g8H6G4H2F1D2B1A3B5D6F5D4F3E5C4B2D3F4E6C5A4B6D5F6E4C3D1E3
A8C7E8G7H5G3H1F2H3G1E2C1A2B4A6B8D7F8H7G5F7H8G6H4G2E1C2A1B3A5B7D8C6A7C8E7G8h6G4H2F1D2B1A3B5D6F5D4F3E5C4B2D3F4E6C5A4B6D5F6E4C3D1E3
A8C7E8G7H5G3H1F2H3G1E2C1A2B4A6B8D7F8H7G5F7H8G6H4G2E1C2A1B3A5B7D8C6A7C8E7G8H6g4H2F1D2B1A3B5D6F5D4F3E5C4B2D3F4E6C5A4B6D5F6E4C3D1E3
A8C7E8G7H5G3H1F2H3G1E2C1A2B4A6B8D7F8H7G5F7H8G6H4G2E1C2A1B3A5B7D8C6A7C8E7G8H6G4h2F1D2B1A3B5D6F5D4F3E5C4B2D3F4E6C5A4B6D5F6E4C3D1E3
A8C7E8G7H5G3H1F2H3G1E2C1A2B4A6B8D7F8H7G5F7H8G6H4G2E1C2A1B3A5B7D8C6A7C8E7G8H6G4H2f1D2B1A3B5D6F5D4F3E5C4B2D3F4E6C5A4B6D5F6E4C3D1E3
A8C7E8G7H5G3H1F2H3G1E2C1A2B4A6B8D7F8H7G5F7H8G6H4G2E1C2A1B3A5B7D8C6A7C8E7G8H6G4H2F1d2B1A3B5D6F5D4F3E5C4B2D3F4E6C5A4B6D5F6E4C3D1E3
A8C7E8G7H5G3H1F2H3G1E2C1A2B4A6B8D7F8H7G5F7H8G6H4G2E1C2A1B3A5B7D8C6A7C8E7G8H6G4H2F1D2b1A3B5D6F5D4F3E5C4B2D3F4E6C5A4B6D5F6E4C3D1E3
A8C7E8G7H5G3H1F2H3G1E2C1A2B4A6B8D7F8H7G5F7H8G6H4G2E1C2A1B3A5B7D8C6A7C8E7G8H6G4H2F1D2B1a3B5D6F5D4F3E5C4B2D3F4E6C5A4B6D5F6E4C3D1E3
A8C7E8G7H5G3H1F2H3G1E2C1A2B4A6B8D7F8H7G5F7H8G6H4G2E1C2A1B3A5B7D8C6A7C8E7G8H6G4H2F1D2B1A3b5D6F5D4F3E5C4B2D3F4E6C5A4B6D5F6E4C3D1E3
A8C7E8G7H5G3H1F2H3G1E2C1A2B4A6B8D7F8H7G5F7H8G6H4G2E1C2A1B3A5B7D8C6A7C8E7G8H6G4H2F1D2B1A3B5d6F5D4F3E5C4B2D3F4E6C5A4B6D5F6E4C3D1E3
A8C7E8G7H5G3H1F2H3G1E2C1A2B4A6B8D7F8H7G5F7H8G6H4G2E1C2A1B3A5B7D8C6A7C8E7G8H6G4H2F1D2B1A3B5D6f5D4F3E5C4B2D3F4E6C5A4B6D5F6E4C3D1E3
A8C7E8G7H5G3H1F2H3G1E2C1A2B4A6B8D7F8H7G5F7H8G6H4G2E1C2A1B3A5B7D8C6A7C8E7G8H6G4H2F1D2B1A3B5D6F5d4F3E5C4B2D3F4E6C5A4B6D5F6E4C3D1E3
A8C7E8G7H5G3H1F2H3G1E2C1A2B4A6B8D7F8H7G5F7H8G6H4G2E1C2A1B3A5B7D8C6A7C8E7G8H6G4H2F1D2B1A3B5D6F5D4f3E5C4B2D3F4E6C5A4B6D5F6E4C3D1E3
A8C7E8G7H5G3H1F2H3G1E2C1A2B4A6B8D7F8H7G5F7H8G6H4G2E1C2A1B3A5B7D8C6A7C8E7G8H6G4H2F1D2B1A3B5D6F5D4F3e5C4B2D3F4E6C5A4B6D5F6E4C3D1E3
A8C7E8G7H5G3H1F2H3G1E2C1A2B4A6B8D7F8H7G5F7H8G6H4G2E1C2A1B3A5B7D8C6A7C8E7G8H6G4H2F1D2B1A3B5D6F5D4F3E5c4B2D3F4E6C5A4B6D5F6E4C3D1E3
A8C7E8G7H5G3H1F2H3G1E2C1A2B4A6B8D7F8H7G5F7H8G6H4G2E1C2A1B3A5B7D8C6A7C8E7G8H6G4H2F1D2B1A3B5D6F5D4F3E5C4b2D3F4E6C5A4B6D5F6E4C3D1E3
A8C7E8G7H5G3H1F2H3G1E2C1A2B4A6B8D7F8H7G5F7H8G6H4G2E1C2A1B3A5B7D8C6A7C8E7G8H6G4H2F1D2B1A3B5D6F5D4F3E5C4B2d3F4E6C5A4B6D5F6E4C3D1E3
A8C7E8G7H5G3H1F2H3G1E2C1A2B4A6B8D7F8H7G5F7H8G6H4G2E1C2A1B3A5B7D8C6A7C8E7G8H6G4H2F1D2B1A3B5D6F5D4F3E5C4B2D3f4E6C5A4B6D5F6E4C3D1E3
A8C7E8G7H5G3H1F2H3G1E2C1A2B4A6B8D7F8H7G5F7H8G6H4G2E1C2A1B3A5B7D8C6A7C8E7G8H6G4H2F1D2B1A3B5D6F5D4F3E5C4B2D3F4e6C5A4B6D5F6E4C3D1E3
A8C7E8G7H5G3H1F2H3G1E2C1A2B4A6B8D7F8H7G5F7H8G6H4G2E1C2A1B3A5B7D8C6A7C8E7G8H6G4H2F1D2B1A3B5D6F5D4F3E5C4B2D3F4E6c5A4B6D5F6E4C3D1E3
A8C7E8G7H5G3H1F2H3G1E2C1A2B4A6B8D7F8H7G5F7H8G6H4G2E1C2A1B3A5B7D8C6A7C8E7G8H6G4H2F1D2B1A3B5D6F5D4F3E5C4B2D3F4E6C5a4B6D5F6E4C3D1E3
A8C7E8G7H5G3H1F2H3G1E2C1A2B4A6B8D7F8H7G5F7H8G6H4G2E1C2A1B3A5B7D8C6A7C8E7G8H6G4H2F1D2B1A3B5D6F5D4F3E5C4B2D3F4E6C5A4b6D5F6E4C3D1E3
A8C7E8G7H5G3H1F2H3G1E2C1A2B4A6B8D7F8H7G5F7H8G6H4G2E1C2A1B3A5B7D8C6A7C8E7G8H6G4H2F1D2B1A3B5D6F5D4F3E5C4B2D3F4E6C5A4B6d5F6E4C3D1E3
A8C7E8G7H5G3H1F2H3G1E2C1A2B4A6B8D7F8H7G5F7H8G6H4G2E1C2A1B3A5B7D8C6A7C8E7G8H6G4H2F1D2B1A3B5D6F5D4F3E5C4B2D3F4E6C5A4B6D5f6E4C3D1E3
A8C7E8G7H5G3H1F2H3G1E2C1A2B4A6B8D7F8H7G5F7H8G6H4G2E1C2A1B3A5B7D8C6A7C8E7G8H6G4H2F1D2B1A3B5D6F5D4F3E5C4B2D3F4E6C5A4B6D5F6e4C3D1E3
A8C7E8G7H5G3H1F2H3G1E2C1A2B4A6B8D7F8H7G5F7H8G6H4G2E1C2A1B3A5B7D8C6A7C8E7G8H6G4H2F1D2B1A3B5D6F5D4F3E5C4B2D3F4E6C5A4B6D5F6E4c3D1E3
A8C7E8G7H5G3H1F2H3G1E2C1A2B4A6B8D7F8H7G5F7H8G6H4G2E1C2A1B3A5B7D8C6A7C8E7G8H6G4H2F1D2B1A3B5D6F5D4F3E5C4B2D3F4E6C5A4B6D5F6E4C3d1E3
A8C7E8G7H5G3H1F2H3G1E2C1A2B4A6B8D7F8H7G5F7H8G6H4G2E1C2A1B3A5B7D8C6A7C8E7G8H6G4H2F1D2B1A3B5D6F5D4F3E5C4B2D3F4E6C5A4B6D5F6E4C3D1e3
FNV1A_YoshimitsuTRIAD: KT_derivatives = 00,000,067,108,865; 000,000,005 x MAXcollisionsAtSomeSlots = 000,011; HASHfreeSLOTS = 0,025,228,150; HashUtilization = 062%
CRC32K1_8slice      : KT_derivatives = 00,000,067,108,865; 000,000,001 x MAXcollisionsAtSomeSlots = 000,011; HASHfreeSLOTS = 0,024,687,907; HashUtilization = 063%
CRC32K2_8slice      : KT_derivatives = 00,000,067,108,865; 000,000,005 x MAXcollisionsAtSomeSlots = 000,010; HASHfreeSLOTS = 0,024,680,327; HashUtilization = 063%
CRC32C1_8slice      : KT_derivatives = 00,000,067,108,865; 000,000,002 x MAXcollisionsAtSomeSlots = 000,011; HASHfreeSLOTS = 0,024,689,921; HashUtilization = 063%
CRC32C2_8slice      : KT_derivatives = 00,000,067,108,865; 000,000,006 x MAXcollisionsAtSomeSlots = 000,010; HASHfreeSLOTS = 0,024,688,174; HashUtilization = 063%
FNV1A_YoshimitsuTRIAD: KT_derivatives = 00,000,134,217,729; 000,000,007 x MAXcollisionsAtSomeSlots = 000,014; HASHfreeSLOTS = 0,009,480,991; HashUtilization = 085%
CRC32K1_8slice      : KT_derivatives = 00,000,134,217,729; 000,000,001 x MAXcollisionsAtSomeSlots = 000,014; HASHfreeSLOTS = 0,009,081,624; HashUtilization = 086%
CRC32K2_8slice      : KT_derivatives = 00,000,134,217,729; 000,000,008 x MAXcollisionsAtSomeSlots = 000,013; HASHfreeSLOTS = 0,009,076,286; HashUtilization = 086%
CRC32C1_8slice      : KT_derivatives = 00,000,134,217,729; 000,000,001 x MAXcollisionsAtSomeSlots = 000,014; HASHfreeSLOTS = 0,009,084,738; HashUtilization = 086%
CRC32C2_8slice      : KT_derivatives = 00,000,134,217,729; 000,000,001 x MAXcollisionsAtSomeSlots = 000,014; HASHfreeSLOTS = 0,009,084,554; HashUtilization = 086%

D:\WorkTemp\Knight-tour_r8dump_YoshimitsuTRIAD_CRC8_BRUTUS+>



All times are GMT -5. The time now is 09:48 AM.