You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by ac...@apache.org on 2023/01/23 16:16:04 UTC
[nuttx-apps] 02/02: benchmarks: Add EEMBC's CoreMark
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 <lu...@espressif.com>
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