This is an automated email from the ASF dual-hosted git repository. acassis pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/nuttx-apps.git
commit e769d5347100413b9db466e16fe8bccd241884c0 Author: Lucas Saavedra Vaz <[email protected]> AuthorDate: Wed Jan 11 20:21:20 2023 -0300 benchmarks: Add EEMBC's CoreMark --- benchmarks/coremark/.gitignore | 2 + benchmarks/coremark/Kconfig | 53 +++++++++++++++++++++ benchmarks/coremark/Make.defs | 25 ++++++++++ benchmarks/coremark/Makefile | 106 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 186 insertions(+) diff --git a/benchmarks/coremark/.gitignore b/benchmarks/coremark/.gitignore new file mode 100644 index 000000000..f8968384b --- /dev/null +++ b/benchmarks/coremark/.gitignore @@ -0,0 +1,2 @@ +/coremark +/*.zip diff --git a/benchmarks/coremark/Kconfig b/benchmarks/coremark/Kconfig new file mode 100644 index 000000000..0d621444e --- /dev/null +++ b/benchmarks/coremark/Kconfig @@ -0,0 +1,53 @@ +# +# For a description of the syntax of this configuration file, +# see the file kconfig-language.txt in the NuttX tools repository. +# + +menuconfig BENCHMARK_COREMARK + bool "Coremark Benchmark" + default n + ---help--- + Enable support for the EEMBC's Coremark benchmark application. + +if BENCHMARK_COREMARK + +config COREMARK_PROGNAME + string "Coremark program name" + default "coremark" + ---help--- + This is the name of the program that will be used when the NSH ELF + program is installed. + +config COREMARK_PRIORITY + int "Coremark task priority" + default 100 + +config COREMARK_STACKSIZE + int "Coremark task stack size" + default 4096 + +config COREMARK_MULTITHREAD_OVERRIDE + bool "Override number of threads" + default n + ---help--- + Override the default number of threads to be executed. + The default value is the same as the number of CPU cores. + +config COREMARK_MULTITHREAD_COUNT + depends on COREMARK_MULTITHREAD_OVERRIDE + int "Number of threads to be executed" + default 1 + +config COREMARK_ITERATIONS_OVERRIDE + bool "Override number of iterations" + default n + ---help--- + Override the default number of iterations for the benchmark. + The default value is defined by the application based on the system. + +config COREMARK_ITERATIONS_COUNT + depends on COREMARK_ITERATIONS_OVERRIDE + int "Number of iterations" + default 100 + +endif # BENCHMARK_COREMARK diff --git a/benchmarks/coremark/Make.defs b/benchmarks/coremark/Make.defs new file mode 100644 index 000000000..aa7a92c56 --- /dev/null +++ b/benchmarks/coremark/Make.defs @@ -0,0 +1,25 @@ +############################################################################ +# apps/benchmarks/coremark/Make.defs +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. The +# ASF licenses this file to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance with the +# License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +############################################################################ + +ifneq ($(CONFIG_BENCHMARK_COREMARK),) +CONFIGURED_APPS += $(APPDIR)/benchmarks/coremark +CFLAGS += ${INCDIR_PREFIX}$(APPDIR)/benchmarks/coremark/coremark +CFLAGS += ${INCDIR_PREFIX}$(APPDIR)/benchmarks/coremark/coremark/posix +endif diff --git a/benchmarks/coremark/Makefile b/benchmarks/coremark/Makefile new file mode 100644 index 000000000..f27fe43f4 --- /dev/null +++ b/benchmarks/coremark/Makefile @@ -0,0 +1,106 @@ +############################################################################ +# apps/benchmarks/coremark/Makefile +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. The +# ASF licenses this file to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance with the +# License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +############################################################################ + +include $(APPDIR)/Make.defs + +# Coremark application + +############################################################################ +# Flags +############################################################################ + +COREMARK_URL ?= "https://github.com/eembc/coremark/archive" + +COREMARK_VERSION = main +COREMARK_ZIP = $(COREMARK_VERSION).zip + +COREMARK_UNPACKNAME = coremark +UNPACK ?= unzip -q -o + +VPATH += $(COREMARK_UNPACKNAME) +VPATH += $(COREMARK_UNPACKNAME)$(DELIM)posix + +CFLAGS += -Wno-undef + +ifeq ($(CONFIG_COREMARK_MULTITHREAD_OVERRIDE),y) +COREMARK_NTHREADS = $(CONFIG_COREMARK_MULTITHREAD_COUNT) +else +ifneq ($(CONFIG_SMP_NCPUS),) +COREMARK_NTHREADS = $(CONFIG_SMP_NCPUS) +else +COREMARK_NTHREADS = 1 +endif +endif + +CFLAGS += ${DEFINE_PREFIX}USE_PTHREAD ${DEFINE_PREFIX}PERFORMANCE_RUN=1 +CFLAGS += ${DEFINE_PREFIX}MULTITHREAD=$(COREMARK_NTHREADS) +CFLAGS += ${DEFINE_PREFIX}FLAGS_STR="\"Using NuttX compilation options\"" +CFLAGS += ${DEFINE_PREFIX}MEM_LOCATION="\"Defined by the NuttX configuration\"" + +ifeq ($(CONFIG_COREMARK_ITERATIONS_OVERRIDE),y) +CFLAGS += ${DEFINE_PREFIX}ITERATIONS=$(CONFIG_COREMARK_ITERATIONS_COUNT) +endif + +CSRCS = core_list_join.c +CSRCS += core_matrix.c +CSRCS += core_state.c +CSRCS += core_util.c +CSRCS += core_portme.c + +############################################################################ +# Targets +############################################################################ + +$(COREMARK_ZIP): + @echo "Downloading: $(COREMARK_URL)/$(COREMARK_ZIP)" + $(Q) curl -O -L $(COREMARK_URL)/$(COREMARK_ZIP) + +$(COREMARK_UNPACKNAME): $(COREMARK_ZIP) + @echo "Unpacking: $(COREMARK_ZIP) -> $(COREMARK_UNPACKNAME)" + $(Q) $(UNPACK) $(COREMARK_ZIP) + $(Q) mv coremark-$(COREMARK_VERSION) $(COREMARK_UNPACKNAME) + $(Q) touch $(COREMARK_UNPACKNAME) + +clean:: + $(call DELFILE, $(OBJS)) + +# Download and unpack tarball if no git repo found + +ifeq ($(wildcard $(COREMARK_UNPACKNAME)/.git),) +context:: $(COREMARK_UNPACKNAME) + +distclean:: + $(call DELDIR, $(COREMARK_UNPACKNAME)) + $(call DELFILE, $(COREMARK_ZIP)) +endif + +############################################################################ +# Applications Configuration +############################################################################ + +MODULE = $(CONFIG_BENCHMARK_COREMARK) + +PROGNAME += $(CONFIG_COREMARK_PROGNAME) +PRIORITY += $(CONFIG_COREMARK_PRIORITY) +STACKSIZE += $(CONFIG_COREMARK_STACKSIZE) + +MAINSRC += $(COREMARK_UNPACKNAME)/core_main.c + +include $(APPDIR)/Application.mk
