Skip to content

Падение scimark2/Kernel.lua:35: bad MC result #13

@mixen56

Description

@mixen56

Добрый день.
Примерно раз на 30 запусков ловлю падение бенчмарка lua со стеком:

lua5.1: ./scimark2/Kernel.lua:35: bad MC result
stack traceback:
        [C]: in function 'assert'
        ./scimark2/Kernel.lua:35: in function 'run'
        ./scimark2/scimark2.lua:99: in function 'measure'
        ./scimark2/scimark2.lua:55: in function <./scimark2/scimark2.lua:46>
        (tail call): ?
        ./benchmarkBase.lua:15: in function 'bench'
        main_scimark.lua:60: in main chunk
        [C]: ?

Пример запуска:

.../EntityFX-Bench-master/src/lua $ for i in $(seq 1 100); do echo $i; lua5.1 main_scimark.lua > /dev/null || echo FAIL; done              
                                                    
1                                                   
2                                                   
3                                                   
4                                                   
5                                                   
6                                                                                                                        
lua5.1: ./scimark2/Kernel.lua:35: bad MC result      
stack traceback:                                    
        [C]: in function 'assert'                                             
        ./scimark2/Kernel.lua:35: in function 'run'                        
        ./scimark2/scimark2.lua:99: in function 'measure'                               
        ./scimark2/scimark2.lua:55: in function <./scimark2/scimark2.lua:46>
        (tail call): ?                              
        ./benchmarkBase.lua:15: in function 'bench'          
        main_scimark.lua:60: in main chunk                    
        [C]: ?                                      
FAIL                                                
7                                                   
8

Иногда не проходит assert из src/lua/scimark2/Kernel.lua:

function Kernel.MC()                                                                   
    return function(cycles)                                                            
        local res = MonteCarlo.integrate(cycles)                                       
        assert(math.sqrt(cycles)*math.abs(res-math.pi) < 5.0, "bad MC result")         
        return cycles * 4 -- Way off, but same as SciMark in C/Java.                   
    end                                                                                
end         

Это случается, если выражение внутри assert > 3.03110722, что, как мы видим, вполне вероятно.

Прошу обосновать, почему сделана именно такая проверка. Если можно, прошу проверку сделать более мягкой, чтобы не ловить случайные падения бенчмарка.

Информация о машине

lua5.1 -v
Lua 5.1.5  Copyright (C) 1994-2012 Lua.org, PUC-Rio
cat /etc/os-release 
PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"
NAME="Debian GNU/Linux"
VERSION_ID="12"
VERSION="12 (bookworm)"
VERSION_CODENAME=bookworm
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
uname -a
Linux mongoose 6.1.0-31-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.128-1 (2025-02-07) x86_64 GNU/Linux

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions