From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from [87.239.111.99] (localhost [127.0.0.1]) by dev.tarantool.org (Postfix) with ESMTP id 37A8D15FB92D; Fri, 24 Oct 2025 14:04:17 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org 37A8D15FB92D DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=tarantool.org; s=dev; t=1761303857; bh=J8VvlRXZJj7DtjqpuXxG1+QhBTAVJVH1i6bnz8zkdL0=; h=To:Date:In-Reply-To:References:Subject:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=heO4a1BKbYSBWyXVRW4j5l9MnxQOaniI8DLqgrkHKb6Rdl2m9zdCeb7y6rZYn4sRE 8jZ35c72WfcGbb+IqSoEuBWApfOPppZZkxBef/mVX+DkdAdJtjyHwxYc4LbjYZIILD nwI3lMHLvLiYPnJN8RRy4gnc2GCW/6moA09397Nw= Received: from send195.i.mail.ru (send195.i.mail.ru [95.163.59.34]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by dev.tarantool.org (Postfix) with ESMTPS id 136D215D6581 for ; Fri, 24 Oct 2025 13:55:30 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org 136D215D6581 Received: by exim-smtp-855f5997bb-88mr2 with esmtpa (envelope-from ) id 1vCFSD-000000006vv-0bd6; Fri, 24 Oct 2025 13:55:29 +0300 To: Sergey Bronnikov Date: Fri, 24 Oct 2025 13:50:31 +0300 Message-ID: X-Mailer: git-send-email 2.51.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Mailru-Src: smtp X-4EC0790: 10 X-7564579A: B8F34718100C35BD X-77F55803: 4F1203BC0FB41BD9DAB542EDD08389FEE6EA46A9DE6717F30BD70469A4330CCB182A05F538085040680BA0DFBDA775763DE06ABAFEAF6705F8F0ED00FB7629E552E7C6720268728EAE87E38DD37F4ED5 X-7FA49CB5: FF5795518A3D127A4AD6D5ED66289B5278DA827A17800CE7ACA11F7F2395C8CCEA1F7E6F0F101C67BD4B6F7A4D31EC0BCC500DACC3FED6E28638F802B75D45FF8AA50765F7900637AC83A81C8FD4AD23D82A6BABE6F325AC2E85FA5F3EDFCBAA7353EFBB55337566D857902A848E84F8EDCD2D83EC8A18AA282EBDC4CF679BDEE3FE3F3E1A95363C389733CBF5DBD5E913377AFFFEAFD269176DF2183F8FC7C02F11D39E7306DD338941B15DA834481FCF19DD082D7633A0EF3E4896CB9E6436389733CBF5DBD5E9D5E8D9A59859A8B68BFD6B1B042489ACCC7F00164DA146DA6F5DAA56C3B73B237318B6A418E8EAB86D1867E19FE14079C09775C1D3CA48CF3D321E7403792E342EB15956EA79C166A417C69337E82CC275ECD9A6C639B01B78DA827A17800CE778B471BB9634AD8A731C566533BA786AA5CC5B56E945C8DA X-C1DE0DAB: 0D63561A33F958A580A10C4F086F09FF5002B1117B3ED696221224CD2D2C54CF7E0012C66AE17B00823CB91A9FED034534781492E4B8EEAD9F68E8F4EDE74A9DC79554A2A72441328621D336A7BC284946AD531847A6065A535571D14F44ED41 X-C8649E89: 1C3962B70DF3F0ADE00A9FD3E00BEEDF3FED46C3ACD6F73ED3581295AF09D3DF87807E0823442EA2ED31085941D9CD0AF7F820E7B07EA4CFC01E662A054805A2C3F7EB9EEF10BF14777D0055D97FB47B29FE26A2B19234C0A53151558601347D6EB503EC62A3E87F3C678744DD445846E2422C6CC32E61FEB9BA2CD0FA45B81E5F4332CA8FE04980913E6812662D5F2A5EAB5682573093F7837F15F2B5E4A70B33F2C28C22F508233FCF178C6DD14203 X-D57D3AED: 3ZO7eAau8CL7WIMRKs4sN3D3tLDjz0dLbV79QFUyzQ2Ujvy7cMT6pYYqY16iZVKkSc3dCLJ7zSJH7+u4VD18S7Vl4ZUrpaVfd2+vE6kuoey4m4VkSEu53w8ahmwBjZKM/YPHZyZHvz5uv+WouB9+ObcCpyrx6l7KImUglyhkEat/+ysWwi0gdhEs0JGjl6ggRWTy1haxBpVdbIX1nthFXMZebaIdHP2ghjoIc/363UZI6Kf1ptIMVRN2q9QiacRuiJ6JKoaRMtA= X-DA7885C5: 9A8F164773BAFB22F255D290C0D534F9CBA8D38CECB3AB2BB649A7E444DAB388B5B4D6191B1259275B1A4C17EAA7BC4BEF2421ABFA55128DAF83EF9164C44C7E X-Mailru-Sender: 689FA8AB762F7393DDD5FD59B456EAD2BD53AF98B112042911988E4495A63B6E70E7C500ED8C1CD5E49D44BB4BD9522A059A1ED8796F048DB274557F927329BE89D5A3BC2B10C37545BD1C3CC395C826B4A721A3011E896F X-Mras: Ok Subject: [Tarantool-patches] [PATCH v1 luajit 27/41] perf: adjust scimark-2010-12-20 in LuaJIT-benches X-BeenThere: tarantool-patches@dev.tarantool.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Sergey Kaplun via Tarantool-patches Reply-To: Sergey Kaplun Cc: tarantool-patches@dev.tarantool.org Errors-To: tarantool-patches-bounces@dev.tarantool.org Sender: "Tarantool-patches" This patch adjusts the aforementioned test to use the benchmark framework introduced before. The default arguments are adjusted according to the file. The arguments to the script still can be provided in the command line run. The time for each subsequent benchmark is increased up to 4 seconds, accoring the defaults in the "bench" framework. The main difference between this test and others that will be added in next commits is the usage of FFI arrays instead of plain Lua tables. --- perf/LuaJIT-benches/scimark-2010-12-20.lua | 93 +++++++++++++--------- 1 file changed, 54 insertions(+), 39 deletions(-) diff --git a/perf/LuaJIT-benches/scimark-2010-12-20.lua b/perf/LuaJIT-benches/scimark-2010-12-20.lua index 353acb7c..3fb627fa 100644 --- a/perf/LuaJIT-benches/scimark-2010-12-20.lua +++ b/perf/LuaJIT-benches/scimark-2010-12-20.lua @@ -9,25 +9,26 @@ local SCIMARK_VERSION = "2010-12-10" local SCIMARK_COPYRIGHT = "Copyright (C) 2006-2010 Mike Pall" -local MIN_TIME = 2.0 +local bench = require("bench").new(arg) + local RANDOM_SEED = 101009 -- Must be odd. local SIZE_SELECT = "small" local benchmarks = { "FFT", "SOR", "MC", "SPARSE", "LU", small = { - FFT = { 1024 }, - SOR = { 100 }, - MC = { }, - SPARSE = { 1000, 5000 }, - LU = { 100 }, + FFT = { params = { 1024 }, cycles = 50000, }, + SOR = { params = { 100 }, cycles = 50000, }, + MC = { params = { }, cycles = 15e7, }, + SPARSE = { params = { 1000, 5000 }, cycles = 15e4, }, + LU = { params = { 100 }, cycles = 5000, }, }, large = { - FFT = { 1048576 }, - SOR = { 1000 }, - MC = { }, - SPARSE = { 100000, 1000000 }, - LU = { 1000 }, + FFT = { params = { 1048576 }, cycles = 25, }, + SOR = { params = { 1000 }, cycles = 500, }, + MC = { params = { }, cycles = 15e7, }, + SPARSE = { params = { 100000, 1000000 }, cycles = 1500, }, + LU = { params = { 1000 }, cycles = 50, }, }, } @@ -342,48 +343,51 @@ local function fmtparams(p1, p2) return "" end -local function measure(min_time, name, ...) +local function measure(name, cycles, ...) array_init() rand_init(RANDOM_SEED) local run = benchmarks[name](...) - local cycles = 1 - repeat - local tm = clock() - local flops = run(cycles, ...) - tm = clock() - tm - if tm >= min_time then - local res = flops / tm * 1.0e-6 - local p1, p2 = ... - printf("%-7s %8.2f %s\n", name, res, fmtparams(...)) - return res - end - cycles = cycles * 2 - until false + local flops = run(cycles, ...) + return flops end -printf("Lua SciMark %s based on SciMark 2.0a. %s.\n\n", - SCIMARK_VERSION, SCIMARK_COPYRIGHT) +-- printf("Lua SciMark %s based on SciMark 2.0a. %s.\n\n", +-- SCIMARK_VERSION, SCIMARK_COPYRIGHT) while arg and arg[1] do local a = table.remove(arg, 1) - if a == "-noffi" then + if a == "noffi" then package.preload.ffi = nil - elseif a == "-small" then + elseif a == "small" then SIZE_SELECT = "small" - elseif a == "-large" then + elseif a == "large" then SIZE_SELECT = "large" elseif benchmarks[a] then - local p = benchmarks[SIZE_SELECT][a] - measure(MIN_TIME, a, tonumber(arg[1]) or p[1], tonumber(arg[2]) or p[2]) + local cycles = benchmarks[SIZE_SELECT][a].cycles + local p = benchmarks[SIZE_SELECT][a].params + local b + b = { + name = a, + -- XXX: The description of tests for each function is too + -- inconvenient. + skip_check = true, + payload = function() + local flops = measure(a, cycles, tonumber(arg[1]) or p[1], + tonumber(arg[2]) or p[2]) + b.items = flops + end, + } + bench:add(b) + bench:run_and_report() return else - printf("Usage: scimark [-noffi] [-small|-large] [BENCH params...]\n\n") - printf("BENCH -small -large\n") + printf("Usage: scimark [noffi] [small|large] [BENCH params...]\n\n") + printf("BENCH small large\n") printf("---------------------------------------\n") for _,name in ipairs(benchmarks) do printf("%-7s %-13s %s\n", name, - fmtparams(unpack(benchmarks.small[name])), - fmtparams(unpack(benchmarks.large[name]))) + fmtparams(unpack(benchmarks.small[name].params)), + fmtparams(unpack(benchmarks.large[name].params))) end printf("\n") os.exit(1) @@ -393,8 +397,19 @@ end local params = benchmarks[SIZE_SELECT] local sum = 0 for _,name in ipairs(benchmarks) do - sum = sum + measure(MIN_TIME, name, unpack(params[name])) + local cycles = params[name].cycles + local b + b = { + name = name, + -- XXX: The description of tests for each function is too + -- inconvenient. + skip_check = true, + payload = function() + local flops = measure(name, cycles, unpack(params[name].params)) + b.items = flops + end, + } + bench:add(b) end -printf("\nSciMark %8.2f [%s problem sizes]\n", sum / #benchmarks, SIZE_SELECT) -io.flush() +bench:run_and_report() -- 2.51.0