[PATCH] rtems-examples: Add CoreMark Benchmark

Gedare Bloom gedare at rtems.org
Mon Mar 15 20:36:46 UTC 2021


On Mon, Mar 15, 2021 at 6:02 AM Joel Sherrill <joel at rtems.org> wrote:
>
>
>
> On Mon, Mar 15, 2021, 5:53 AM Hesham Almatary <hesham.almatary at cl.cam.ac.uk> wrote:
>>
>> Hello Gedare,
>>
>> Yeah adding Make support should be straightforward. I just assumed
>> Make will be deprecated soon based on [1] and haven't bothered
>> supporting it.
>>
>> [1] https://github.com/RTEMS/rtems-examples/blob/983926a7e519be85f630c620430e7e1ac3e0f4ea/README.Makefile#L32
>
>
> There are projects that use it. Although it is old and it would be nice to go to something else, that something else isn't there. It's there.foenthe foreseeable future.
>

Makefile will always be an option for users (application level) to
compile, and we should continue to provide/test that in our examples
repo. It would be best to show a variety of build systems in examples,
but limited bandwidth means we should at least show make and waf
approaches.

> --joel
>
>>
>>
>>
>>
>> On Sun, 14 Mar 2021 at 18:47, Gedare Bloom <gedare at rtems.org> wrote:
>> >
>> > Hi Hesham,
>> >
>> > Nice work getting this integrated in the upstream. I guess that the
>> > git submodule instructions for building with waf will work for this,
>> > but not Make. How hard would it be for you to integrate the submodule
>> > with Make?
>> >
>> > This is fine with me as-is, I just want to know if we can keep it
>> > supporting both build systems.
>> >
>> > On Sat, Mar 13, 2021 at 12:50 AM Hesham Almatary
>> > <hesham.almatary at cl.cam.ac.uk> wrote:
>> > >
>> > > CoreMark's primary goals are simplicity and providing a method for
>> > > testing only a processor's core features. It is used primarily here as
>> > > a performance benchmark.
>> > >
>> > > Built and tested for RISC-V rv64imafdc_medany on QEMU and HW
>> > > ---
>> > >  .gitmodules                  |  3 +++
>> > >  benchmarks/coremark/coremark |  1 +
>> > >  benchmarks/coremark/wscript  | 50 ++++++++++++++++++++++++++++++++++++
>> > >  benchmarks/wscript           |  2 +-
>> > >  4 files changed, 55 insertions(+), 1 deletion(-)
>> > >  create mode 160000 benchmarks/coremark/coremark
>> > >  create mode 100644 benchmarks/coremark/wscript
>> > >
>> > > diff --git a/.gitmodules b/.gitmodules
>> > > index ae86e49..d7e52b9 100644
>> > > --- a/.gitmodules
>> > > +++ b/.gitmodules
>> > > @@ -1,3 +1,6 @@
>> > >  [submodule "rtems_waf"]
>> > >         path = rtems_waf
>> > >         url = git://git.rtems.org/rtems_waf.git
>> > > +[submodule "benchmarks/coremark/coremark"]
>> > > +       path = benchmarks/coremark/coremark
>> > > +       url = git at github.com:eembc/coremark.git
>> > > diff --git a/benchmarks/coremark/coremark b/benchmarks/coremark/coremark
>> > > new file mode 160000
>> > > index 0000000..1541482
>> > > --- /dev/null
>> > > +++ b/benchmarks/coremark/coremark
>> > > @@ -0,0 +1 @@
>> > > +Subproject commit 1541482bf3e6ef7f5c69f5be76b14537b60833d0
>> > > diff --git a/benchmarks/coremark/wscript b/benchmarks/coremark/wscript
>> > > new file mode 100644
>> > > index 0000000..2ec5f1e
>> > > --- /dev/null
>> > > +++ b/benchmarks/coremark/wscript
>> > > @@ -0,0 +1,50 @@
>> > > +#-
>> > > +# SPDX-License-Identifier: BSD-2-Clause
>> > > +#
>> > > +# Copyright (c) 2021 Hesham Almatary
>> > > +#
>> > > +# This software was developed by SRI International and the University of
>> > > +# Cambridge Computer Laboratory (Department of Computer Science and
>> > > +# Technology) under DARPA contract HR0011-18-C-0016 ("ECATS"), as part of the
>> > > +# DARPA SSITH research programme.
>> > > +#
>> > > +# Redistribution and use in source and binary forms, with or without
>> > > +# modification, are permitted provided that the following conditions
>> > > +# are met:
>> > > +# 1. Redistributions of source code must retain the above copyright
>> > > +#    notice, this list of conditions and the following disclaimer.
>> > > +# 2. Redistributions in binary form must reproduce the above copyright
>> > > +#    notice, this list of conditions and the following disclaimer in the
>> > > +#    documentation and/or other materials provided with the distribution.
>> > > +#
>> > > +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
>> > > +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
>> > > +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
>> > > +# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
>> > > +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
>> > > +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
>> > > +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
>> > > +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
>> > > +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
>> > > +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
>> > > +# SUCH DAMAGE.
>> > > +#
>> > > +
>> > > +import rtems_waf.rtems as rtems
>> > > +
>> > > +def build(bld):
>> > > +    rtems.build(bld)
>> > > +
>> > > +    bld(features = 'c cprogram',
>> > > +        target = 'coremark.bin',
>> > > +        includes = ['coremark/', 'coremark/posix/'],
>> > > +        source = ['coremark/rtems/init.c', 'coremark/posix/core_portme.c',
>> > > +                  'coremark/core_list_join.c', 'coremark/core_main.c',
>> > > +                  'coremark/core_matrix.c', 'coremark/core_state.c',
>> > > +                  'coremark/core_util.c'],
>> > > +
>> > > +        defines = [
>> > > +        # FLAGS_STR is used within CoreMark to print the compiler flags used
>> > > +        'FLAGS_STR="'+' '.join([str(flag) for flag in bld.env.CFLAGS])+'"'
>> > > +        ]
>> > > +    )
>> > > diff --git a/benchmarks/wscript b/benchmarks/wscript
>> > > index 12741e7..0947060 100644
>> > > --- a/benchmarks/wscript
>> > > +++ b/benchmarks/wscript
>> > > @@ -7,4 +7,4 @@ import rtems_waf.rtems as rtems
>> > >
>> > >  def build(bld):
>> > >      bld.recurse('nbench')
>> > > -
>> > > +    bld.recurse('coremark')
>> >
>> > I think we usually keep the blank line at the end of the wscript file.
>> > Not a hard rule.
>> >
>> > > --
>> > > 2.25.1
>> > >
>> > > _______________________________________________
>> > > devel mailing list
>> > > devel at rtems.org
>> > > http://lists.rtems.org/mailman/listinfo/devel
>> _______________________________________________
>> devel mailing list
>> devel at rtems.org
>> http://lists.rtems.org/mailman/listinfo/devel


More information about the devel mailing list