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