From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: AS17314 8.43.84.0/22 X-Spam-Status: No, score=-3.7 required=3.0 tests=AWL,BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI, PDS_RDNS_DYNAMIC_FP,RCVD_IN_DNSWL_MED,RDNS_DYNAMIC,SPF_HELO_PASS, SPF_PASS shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from sourceware.org (ip-8-43-85-97.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by dcvr.yhbt.net (Postfix) with ESMTPS id F048B1F8C6 for ; Mon, 9 Aug 2021 20:35:48 +0000 (UTC) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 1D9EA393A408 for ; Mon, 9 Aug 2021 20:35:48 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 1D9EA393A408 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1628541348; bh=24qNdVAWKMJR8Bl4tGSWDEeSfqm0N1oeW5iJHiX98gI=; h=References:In-Reply-To:Date:Subject:To:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=IrcmkY/tVzQ4hW/ztKviyTW2VjLHchg3DhHIhFiS7LFnGntxhOFM/mXIgE0MEys8N f4NjyzXb4JNnWYJTWtqiH2lKpm0OeU/Z3RgfdFSN+LF0xyLRoY4K83TFFDALybv3T/ yT4sHcgOBoJ7/IuM0a6h04V5yz47hlBf9+l7QD3Q= Received: from mail-pj1-x1032.google.com (mail-pj1-x1032.google.com [IPv6:2607:f8b0:4864:20::1032]) by sourceware.org (Postfix) with ESMTPS id D40683939C3D for ; Mon, 9 Aug 2021 20:30:32 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org D40683939C3D Received: by mail-pj1-x1032.google.com with SMTP id ca5so29827417pjb.5 for ; Mon, 09 Aug 2021 13:30:32 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=24qNdVAWKMJR8Bl4tGSWDEeSfqm0N1oeW5iJHiX98gI=; b=uL9wMtcQ+mpCU//JLi5N/X48I6T882MKAP9bkTMJr0U5jXwMMLxuBYqLI5rS7trms+ vES4KFwU8AdUKp0uWLak64qBdlGPS9DI57/N1LRMnZ/MayKOvaG/mPDxJsJ3lQxE04Jo 3voXzvjc4QJnVFA9qqHhBOXakO1EvI3whvZRSZUnvtoIKKLr/2ctp2xrin43xgajCDjX zK2ktfYHEmKfmhfMsDkt+jGu7g0ZcAJRRVCuEB6HnWhMEFlcT2bAF1ME/CdhoyCmCcDy 694+ouYZp+4l+1bRTQpzJQwFMycEFUduHbtgnckEUGAJKTgw4F5AOv1SBlxTtjps6KFh Ocpw== X-Gm-Message-State: AOAM531nR+74J+gANZPQcS9LdMZQelvbHMu08nQa+grwQqY8t1t8a+NG F+aPOxX5FYsdXvARTyHRnMKf0iP7jOMKHXZpu6I= X-Google-Smtp-Source: ABdhPJwYw/1pJfQVm0EvFoG0Q3WndrKjtLO5bG1b5s3bUxMFXa4wPiJ0jcn6ng8Ee6utmM/9cO2c9RkumkW4AFRoHWI= X-Received: by 2002:a63:83c1:: with SMTP id h184mr315312pge.37.1628541031883; Mon, 09 Aug 2021 13:30:31 -0700 (PDT) MIME-Version: 1.0 References: <20210730212204.1832487-1-hjl.tools@gmail.com> In-Reply-To: Date: Mon, 9 Aug 2021 13:29:55 -0700 Message-ID: Subject: Re: [PATCH] benchtests: Building benchmarks as static executables To: Noah Goldstein Content-Type: text/plain; charset="UTF-8" X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: "H.J. Lu via Libc-alpha" Reply-To: "H.J. Lu" Cc: GNU C Library Errors-To: libc-alpha-bounces+e=80x24.org@sourceware.org Sender: "Libc-alpha" On Mon, Aug 9, 2021 at 1:07 PM Noah Goldstein wrote: > > > > On Mon, Aug 9, 2021 at 3:34 PM H.J. Lu wrote: >> >> On Mon, Aug 9, 2021 at 12:10 PM Noah Goldstein wrote: >> > >> > >> > >> > On Fri, Jul 30, 2021 at 5:22 PM H.J. Lu via Libc-alpha wrote: >> >> >> >> Building benchmarks as static executables: >> >> ========================================= >> >> >> >> To build benchmarks as static executables, on the build system, run: >> >> >> >> $ make STATIC-BENCHTESTS=yes bench-build >> >> >> > >> > Any chance you could add a -falign option for this? >> >> To build glibc or build a specific bench test? > > > I think the functions being benchmarked are the important ones so > if that's what you mean by a specific bench test then that should be > good. The entire build would be fine as well imho. I do $ BUILD_CC="gcc" CC="gcc" CXX="g++" CFLAGS="-O2 -g -ffoobar" .../configure to pass -ffoobar to glibc build. > >> >> >> >> >> >> You can copy benchmark executables to another machine and run them >> >> without copying the source nor build directories. >> >> --- >> >> benchtests/Makefile | 26 +++++++++++++++++++------- >> >> benchtests/README | 10 ++++++++++ >> >> 2 files changed, 29 insertions(+), 7 deletions(-) >> >> >> >> diff --git a/benchtests/Makefile b/benchtests/Makefile >> >> index 1530939a8c..4fcd73131a 100644 >> >> --- a/benchtests/Makefile >> >> +++ b/benchtests/Makefile >> >> @@ -110,11 +110,23 @@ else >> >> bench-malloc := $(filter malloc-%,${BENCHSET}) >> >> endif >> >> >> >> -$(addprefix $(objpfx)bench-,$(bench-math)): $(libm) >> >> -$(addprefix $(objpfx)bench-,$(math-benchset)): $(libm) >> >> -$(addprefix $(objpfx)bench-,$(bench-pthread)): $(shared-thread-library) >> >> -$(addprefix $(objpfx)bench-,$(bench-malloc)): $(shared-thread-library) >> >> -$(addprefix $(objpfx)bench-,pthread-locks): $(libm) >> >> +ifeq (${STATIC-BENCHTESTS},yes) >> >> ++link-benchtests = $(+link-static-tests) >> >> +link-libc-benchtests = $(link-libc-static) >> >> +libm-benchtests = $(common-objpfx)math/libm.a >> >> +thread-library-benchtests = $(static-thread-library) >> >> +else >> >> +link-libc-benchtests = $(link-libc) >> >> ++link-benchtests = $(+link-tests) >> >> +thread-library-benchtests = $(shared-thread-library) >> >> +libm-benchtests = $(libm) >> >> +endif >> >> + >> >> +$(addprefix $(objpfx)bench-,$(bench-math)): $(libm-benchtests) >> >> +$(addprefix $(objpfx)bench-,$(math-benchset)): $(libm-benchtests) >> >> +$(addprefix $(objpfx)bench-,$(bench-pthread)): $(thread-library-benchtests) >> >> +$(addprefix $(objpfx)bench-,$(bench-malloc)): $(thread-library-benchtests) >> >> +$(addprefix $(objpfx)bench-,pthread-locks): $(libm-benchtests) >> >> >> >> >> >> >> >> @@ -270,9 +282,9 @@ bench-link-targets = $(timing-type) $(binaries-bench) $(binaries-benchset) \ >> >> >> >> $(bench-link-targets): %: %.o $(objpfx)json-lib.o \ >> >> $(link-extra-libs-tests) \ >> >> - $(sort $(filter $(common-objpfx)lib%,$(link-libc))) \ >> >> + $(sort $(filter $(common-objpfx)lib%,$(link-libc-benchtests))) \ >> >> $(addprefix $(csu-objpfx),start.o) $(+preinit) $(+postinit) >> >> - $(+link-tests) >> >> + $(+link-benchtests) >> >> >> >> $(bench-link-targets): LDFLAGS += $(link-bench-bind-now) >> >> >> >> diff --git a/benchtests/README b/benchtests/README >> >> index 44736d7e63..4d83a05b4b 100644 >> >> --- a/benchtests/README >> >> +++ b/benchtests/README >> >> @@ -62,6 +62,16 @@ otherwise the above command may try to build the benchmark again. Benchmarks >> >> that require generated code to be executed during the build are skipped when >> >> cross-building. >> >> >> >> +Building benchmarks as static executables: >> >> +========================================= >> >> + >> >> +To build benchmarks as static executables, on the build system, run: >> >> + >> >> + $ make STATIC-BENCHTESTS=yes bench-build >> >> + >> >> +You can copy benchmark executables to another machine and run them >> >> +without copying the source nor build directories. >> >> + >> >> Running subsets of benchmarks: >> >> ============================== >> >> >> >> -- >> >> 2.31.1 >> >> >> >> >> -- >> H.J. -- H.J.