Changes

Jump to: navigation, search
no edit summary
{{InfoBoxTop}}
{{AppliesToSBCX}}
{{AppliesToAxel}}
{{AppliesToAxelEsatta}}
{{AppliesToAxelLite}}
{{AppliesToAxelEsattaAppliesToAXEL Lite TN}}{{AppliesToSBCX}}
{{InfoBoxBottom}}
{{WarningMessage|text=This technical note was validated against specific versions of hardware and software. What is described here may not work with other versions.}}
|}
==Introduction==
Mito8M is the first DAVE Embedded Systems' system-on-module (SoM) based on a core implementing the [https://en.wikipedia.org/wiki/ARM_architecture#64/32-bit_architecture ARMv8-A] architecture. Traditionally, ARM cores that are based on 32-bit [https://en.wikipedia.org/wiki/ARM_architecture#AArch32 ARMv7-A] architecture exhibit a limited RAM bandwidth even if they are coupled with 64-bit width SDRAM banks. When dealing with computationally heavy tasks, this factor the RAM bandwidth may turn out to be a severe bottleneck bounding the overall performance. This is true especially for the SoC's used in embedded systems. For this reason, characterizing the RAM bandwidth is useful when dealing with such demanding applications.
Besides an intrinsic increased computational power over their predecessors, ARMv8-A-based SoC's are also expected to improve RAM bandwidth significantly. This technical note (TN for short) illustrates several benchmarking tests that were run on Mito8M Axel Lite SoM to characterize this its RAM bandwidth. It is worth to remember that Mito8M As known, this SoM is built upon the [https://www.nxp.com/products/processors-and-microcontrollers/arm-processors/i.mx-applications-processors/i.mx-86-processors/i.mx-8m6quad-processors-high-familyperformance-armcortex3d-a53graphics-cortexhd-m4video-audioarm-voicecortex-videoa9-core:i.MX8M MX6Q i.MX8M processor MX6Q/D/DL/S family of processors by NXP].
==Testbed general configuration==
This section illustrates the configuration settings common to all the tests that were performed. Basically, the testbed that was used is the same described in [[MISCSBCX-TN-008004:_Running_Debian_Buster__Running_Armbian_Buster_(armbianDebian_10)_on_Mito8M|this TN]]. As such, it consists of Axel Lite SoM and [[:Category:SBC-AXEL|SBCX carrier board]].
===SoC and SDRAM bank===
The SoC model is i.MX8M QuadMX6Q:
<pre class="board-terminal">
armbian@Mito8Msbcx:~/devel/stream/lmbench/tmp$ lscpuArchitecture: aarch64armv7l
Byte Order: Little Endian
CPU(s): 4
Core(s) per socket: 4
Socket(s): 1
NUMA node(s): 1
Vendor ID: ARM
Model: 410Model name: Cortex-A53A9Stepping: r0p4r2p10CPU max MHz: 1300996.0000CPU min MHz: 800396.0000BogoMIPS: 167.66L1d cache: unknown sizeL1i cache: unknown sizeL2 cache: unknown sizeNUMA node0 CPU(s): 0-354Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuidhalf thumb fastmult vfp edsp neon vfpv3 tls vfpd32
</pre>
This processor is capable of running either at 800 MHz or 1.3 GHzdifferent speeds. All the tests were conducted at 800 996 MHz.
The following table details the characteristics of the SDRAM bank connected to the SoC.
{| class="wikitable"
|+
!SoC and SDRAM bank configuration!rowspan="2" |Subsystem! colspanrowspan="2" |Feature!Platform
|-
!!!Mito8M!AxelLiteAxel Lite
|-
| rowspan="25" |SoC
|SoC
|NXP i.MX8M Quad|MX6Q
|-
|ARM core frequency
[MHz]
|800 or 1300996|-|L1 cache (D)[kB]|32|-|L1 cache (I)[kB]|32|-|L2 cache[MB]|1
|-
| rowspan="6" |SDRAM
|Type
|LPDDR4|DDR3
|-
|Frequency
[MHz]
|1600|533 (*)
|-
|Bus witdth
[bit]
|32|64
|-
|Theoretical bandwidth
[Gb/s]
|10268.4|2
|-
|Theoretical bandwidth
[GB/s]
|127.8|9
|-
|Size
[MB]
|3072|2048
|}
 
 
(*) It is worth remembering that i.MX6DualLite/Solo could achieve better results in terms of memory bandwidth, even though their SDRAM bus frequency is lower (400 MHz). This is due to an errata of the ARM PL310 L2 cache controller. This bug is not present in the i.MX6DualLite/Solo SoC's, which integrate a newer version of the controller.
===Software configuration===
* Linux kernel: 4.149.9811
*Root file system: Debian GNU/Linux 10 (buster)
* Architecture: aarch64armv7l* Governor: userspace @ 800 996 MHz
<pre class="board-terminal">
rootarmbian@Mito8Msbcx:~# echo userspace > /sysdevel/devicesstream/system/cpu/cpu0/cpufreq/scaling_governorroot@Mito8M:~# lmbench$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
userspace
rootarmbian@Mito8Msbcx:~# /devel/stream/lmbench$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq800000996000
</pre>
As some Some benchmarks were built natively on the platform under test itself. For the sake of completeness, the version of the GCC compiler is then indicated as well:
<pre class="board-terminal">
armbian@Mito8Msbcx:~/devel/stream/lmbench$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/aarch64arm-linux-gnugnueabihf/8/lto-wrapperTarget: aarch64arm-linux-gnugnueabihfConfigured with: ../src/configure -v --with-pkgversion='Debian 8.3.0-6' --with-bugurl=file:///usr/share/doc/gcc-8/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-8 --program-prefix=aarch64arm-linux-gnugnueabihf- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libitm --disable-libquadmath --disable-libquadmath-support --enable-plugin --enable-default-pie --with-system-zlib --disablewith-target-system-zlib --enable-objc-libphobos gc=auto --enable-multiarch --enabledisable-sjlj-exceptions --with-arch=armv7-a --with-fpu=vfpv3-d16 -fix-cortexwith-a53float=hard -843419 -with-mode=thumb --disable-werror --enable-checking=release --build=aarch64arm-linux-gnu gnueabihf --host=aarch64arm-linux-gnu gnueabihf --target=aarch64arm-linux-gnugnueabihf
Thread model: posix
gcc version 8.3.0 (Debian 8.3.0-6)
</pre>
===Benchmarks===
====STREAM====
TBD
====LMbench====
TBD
====pmbw====
TBD
==Overall results==
This section details illustrates the overall results that were achieved by the different benchmarks.
===STREAM===
{| class="wikitable"
|+
Overall results!Function!Best rate[MB/s]!Mito8MEfficiency ![%]
|-
|Copy|ARM frequency1139.8[MHz]|14.0|-|Scale|7921124.8|13.8
|-
|Add|Frequency[MHz]|16001185.1|14.6
|-
|Triad|Bus witdth[bit]|321214.4|14.9
|}
 
As expected, the efficiency is relatively low. Generally, 32-bit ARM architectures are known to have mediocre performances when it comes to memory bandwidth.
 
Please see [https://www.cs.virginia.edu/stream/ this page] for more details about STREAM benchmark.
 
===LMbench===
TBDFor what regards the memory bandwidth, LMbench provides many results organized in different categories. For the sake of simplicity, the following tables details just a couple of categories. The full results are available for download [http://mirror.dave.eu/axel/SBCX-TN-006/lmbench-axellite-i.MX6Q-996MHz.txt here]. {| class="wikitable"|+Memory read bandwidth!Buffer size!Bandwitdth[MB/s]|-|512B|2861|-|1kB|3047|-|2kB|3065|-|4kB|3077|-|8kB|3081|-|16kB|3072|-|32kB|1309|-| 0.065536 |64kB|902|-|128kB|787|-|256kB|775|-|512kB|749|-|1MB|687|-|2MB|642|-|4MB|629|-|8MB|630|-|16MB|632|-|32MB|631|-|64MB|632|-|128MB|633|-|256MB|634|-|512MB|634|-|1GB|633|} {| class="wikitable"|+Memory write bandwidth!Buffer size!Bandwitdth[MB/s]|-|512B|3724|-|1kB|3848|-|2kB|3902|-|4kB|3940|-|8kB|3958|-|16kB|3957|-|32kB|3964|-|64kB|3967|-|128kB|3967|-|256kB|3956|-|512kB|3947|-|1MB|2097|-|2MB|2154|-|4MB|2114|-|8MB|2082|-|16MB|2084|-|32MB|2085|-|64MB|2093|-|128MB|2086|-|256MB|2089|-|512MB|2087|-|1GB|2088|} The most interesting results to consider are those that refer to buffer sizes exceeding 1MB, which is the size of the L2 cache. Approximately, read bandwidth is 630MB/s (7.8% efficiency), while write bandwidth is 2080 MB/s (25.7% efficiency). These numbers are significantly different that the ones provided by STREAM. This confirms once again that such results are strongly dependent on the implementation of the test used to determine the bandwidth. For more information regarding LMbench, please see [http://lmbench.sourceforge.net/ this page]. 
===pmbw===
TBDAs defined by the author, <code>pmbw</code> is "a set of assembler routines to measure the parallel memory (cache and RAM) bandwidth of modern multi-core machines." It performs a myriad of tests. Luckily, it comes with a handful tool that plots the results—which are stored in a text file—in a series of charts. The complete results and the charts are available at the following links:*http://mirror.dave.eu/axel/SBCX-TN-006/pmbw-stats-AxelLite-i.MX6Q-996MHz.txt*http://mirror.dave.eu/axel/SBCX-TN-006/pmbw-plots-AxelLite-i.MX6Q-996MHz.pdf Generally speaking, the charts exhibit significant declines in the performances when the array size is around the L1 and the L2 cache size. For more details about <code>pmbw</code>, please refer to [https://panthema.net/2013/pmbw/ this page].
==Useful links==
*[https://www.cs.virginia.edu/stream/ STREAM benchmark]
*[http://lmbench.sourceforge.net/ LM Bench benchmark]
*[https://panthema.net/2013/pmbw/ pmbw benchmark]
*Joshua Wyatt Smith and Andrew Hamilton, [http://inspirehep.net/record/1424637/files/1719033_626-630.pdf Parallel benchmarks for ARM processors in the highenergy context]
*T Wrigley, G Harmsen and B Mellado, [http://inspirehep.net/record/1424631/files/1719033_275-280.pdf Memory performance of ARM processors and itsrelevance to High Energy Physics]
====Building====
To build STREAM:
* clone its git repository
*modify the <code>Makefile</code> as shown below
*issue the <code>make</code> command.
 
<pre class="board-terminal">
git clone https://github.com/jeffhammond/STREAM.git
===LMbench===
 ====Running To run this benchmark, the tests=========ARM core clock = 800 MHz=====native prebuilt package provided by Debian Buster was used.<pre class="board-terminal" mw-collapsible="" mw-collapsed"="">armbian@Mito8Msbcx:~/devel/lmbenchstream/STREAM$ sudo lmbench-run[sudo] password for armbian: /usr/lib/lmbench/scripts/gnu-os: unable to guess system type This script, last modified 2004-08-18, has failed to recognizethe operating system you are using. It is advised that youdownload the most up to date version of the config scripts from  ftp://ftp.gnu.org/pub/gnu/config/ If the version you run (/usr/lib/lmbench/scripts/gnu-os) is already up to date, pleasesend the following data and any information you think might bepertinent to <config-patches@gnu.org> in order to provide the neededinformation to handle your system. config.guess timestamp = 2004-08-18 uname -m = aarch64uname -r = 4.14.98-g4c94e1dbaec2uname -s = Linuxuname -v = #1 SMP PREEMPT Mon Sep 30 14:46:22 CEST 2019 /usr/bin/uname -p = /bin/uname -X =  hostinfo = /bin/universe = /usr/bin/arch -k = /bin/arch = /usr/bin/oslevel = /usr/convex/getsysinfo =  UNAME_MACHINE = aarch64UNAME_RELEASE = 4.14.98-g4c94e1dbaec2UNAME_SYSTEM = LinuxUNAME_VERSION = #1 SMP PREEMPT Mon Sep 30 14:46:22 CEST 2019
=====================================================================
Hang on, we are calculating your loop overhead.
OK, it looks like your benchmark loop costs 0.00000136 00000055 usecs.
=====================================================================
take somewhat longer to run the benchmark.
MB [default 20971186]: 1024
Checking to see if you have 1024 MB; please wait for a moment...
1024MB OK
1024MB OK
Hang on, we are calculating your cache line size.
OK, it looks like your cache line is 64 32 bytes.
=====================================================================
I think your CPU mhz is
798 1992 MHz, 10.2531 5020 nanosec clock
but I am frequently wrong. If that is the wrong Mhz, type in your
1.8GHz P4 may be reported as a 3592MHz processor.
Processor mhz [default 798 1992 MHz, 10.2531 5020 nanosec clock]: 996
=====================================================================
system.
FSDIR [default /var/tmp/lmbench]: /tmphome/armbian/devel/stream/lmbench
=====================================================================
Send mail to majordomo@bitmover.com to join the list.
/usr/lib/lmbench/scripts/gnu-os: unable to guess system type This script, last modified 2004-08-18, has failed to recognizethe operating system you are using. It is advised that youdownload the most up to date version of the config scripts from  ftp://ftp.gnu.org/pub/gnu/config/ If the version you run (/usr/lib/lmbench/scripts/gnu-os) is already up to date, pleasesend the following data and any information you think might bepertinent to <config-patches@gnu.org> in order to provide the neededinformation to handle your system. config.guess timestamp = 2004-08-18 uname -m = aarch64uname -r = 4.14.98-g4c94e1dbaec2uname -s = Linuxuname -v = #1 SMP PREEMPT Mon Sep 30 14:46:22 CEST 2019 /usr/bin/uname -p = /bin/uname -X =  hostinfo = /bin/universe = /usr/bin/arch -k = /bin/arch = /usr/bin/oslevel = /usr/convex/getsysinfo =  UNAME_MACHINE = aarch64UNAME_RELEASE = 4.14.98-g4c94e1dbaec2UNAME_SYSTEM = LinuxUNAME_VERSION = #1 SMP PREEMPT Mon Sep 30 14:46:22 CEST 2019Using config in CONFIG.Mito8MsbcxWed Thu Jan 15 1024 09:5627:54 32 CET 2020
Latency measurements
Wed Thu Jan 15 1024 09:5728:29 38 CET 2020
Local networking
Wed Fri Jan 15 1024 09:5829:36 38 CET 2020
Bandwidth measurements
Wed Fri Jan 15 1124 09:0341:02 01 CET 2020
Calculating context switch overhead
Wed Fri Jan 15 1124 09:0341:09 06 CET 2020
Calculating effective TLB size
Wed Fri Jan 15 1124 09:0341:10 08 CET 2020
Calculating memory load parallelism
Wed Fri Jan 15 1124 09:1453:34 02 CET 2020
McCalpin's STREAM benchmark
Wed Fri Jan 15 1124 09:1554:30 55 CET 2020
Calculating memory load latency
Wed Fri Jan 15 1124 10:3528:54 12 CET 2020
Benchmark run finished....
Remember you can find the results of the benchmark
under /var/lib/lmbench/results
</pre>
=====ARM core clock = 1300 MHz=====
 
====Results====
TBD inserire link a file scaricabile
===pmbw===
====Building====
Building pmbw is straightforward. Please click on ''Expand'' to show the box that illustrates the procedure.
<pre class="board-terminal mw-collapsible mw-collapsed">
armbian@sbcx:~/devel/pmbw$ git clone https://github.com/bingmann/pmbw.git
Cloning into 'pmbw'...
remote: Enumerating objects: 15, done.
remote: Counting objects: 100% (15/15), done.
remote: Compressing objects: 100% (15/15), done.
remote: Total 386 (delta 1), reused 3 (delta 0), pack-reused 371
Receiving objects: 100% (386/386), 369.04 KiB | 1.23 MiB/s, done.
Resolving deltas: 100% (232/232), done.
armbian@sbcx:~/devel/pmbw$ cd pmbw/
armbian@sbcx:~/devel/pmbw/pmbw$ ./configure && make
checking build system type... armv7l-unknown-linux-gnueabihf
checking host system type... armv7l-unknown-linux-gnueabihf
checking target system type... armv7l-unknown-linux-gnueabihf
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... no
checking for mawk... mawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether to enable maintainer-specific portions of Makefiles... no
checking building for Windows... no
checking for g++... g++
checking whether the C++ compiler works... yes
checking for C++ compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking whether make supports the include directive... yes (GNU style)
checking dependency style of g++... gcc3
checking whether g++ supports -march=x86-64... no
checking for pthread_mutex_init in -lpthread... yes
checking for clock_gettime in -lrt... yes
checking for posix_memalign in -lc... yes
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: executing depfiles commands
g++ -DPACKAGE_NAME=\"pmbw\" -DPACKAGE_TARNAME=\"pmbw\" -DPACKAGE_VERSION=\"0.6.3\" -DPACKAGE_STRING=\"pmbw\ 0.6.3\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DPACKAGE=\"pmbw\" -DVERSION=\"0.6.3\" -DON_WINDOWS=false -DHAVE_POSIX_MEMALIGN=1 -I. -W -Wall -g -O2 -MT pmbw.o -MD -MP -MF .deps/pmbw.Tpo -c -o pmbw.o pmbw.cc
mv -f .deps/pmbw.Tpo .deps/pmbw.Po
g++ -W -Wall -g -O2 -o pmbw pmbw.o -lpthread -lrt
g++ -DPACKAGE_NAME=\"pmbw\" -DPACKAGE_TARNAME=\"pmbw\" -DPACKAGE_VERSION=\"0.6.3\" -DPACKAGE_STRING=\"pmbw\ 0.6.3\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DPACKAGE=\"pmbw\" -DVERSION=\"0.6.3\" -DON_WINDOWS=false -DHAVE_POSIX_MEMALIGN=1 -I. -W -Wall -g -O2 -MT stats2gnuplot.o -MD -MP -MF .deps/stats2gnuplot.Tpo -c -o stats2gnuplot.o stats2gnuplot.cc
In file included from /usr/include/c++/8/vector:69,
from stats2gnuplot.cc:34:
/usr/include/c++/8/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {const Result&}; _Tp = Result; _Alloc = std::allocator<Result>]':
/usr/include/c++/8/bits/vector.tcc:413:7: note: parameter passing for argument of type 'std::vector<Result>::iterator' {aka '__gnu_cxx::__normal_iterator<Result*, std::vector<Result> >'} changed in GCC 7.1
vector<_Tp, _Alloc>::
^09:46, 24 January 2020 (UTC)09:46, 24 January 2020 (UTC)09:46, 24 January 2020 (UTC)[[User:U0001|U0001]] ([[User talk:U0001|talk]])
In file included from /usr/include/c++/8/vector:64,
from stats2gnuplot.cc:34:
/usr/include/c++/8/bits/stl_vector.h: In function 'bool process_line(const string&)':
/usr/include/c++/8/bits/stl_vector.h:1085:4: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<Result*, std::vector<Result> >' changed in GCC 7.1
_M_realloc_insert(end(), __x);
^09:46, 24 January 2020 (UTC)09:46, 24 January 2020 (UTC)09:46, 24 January 2020 (UTC)~
In file included from /usr/include/c++/8/algorithm:62,
from stats2gnuplot.cc:33:
/usr/include/c++/8/bits/stl_algo.h: In function 'void std::__unguarded_linear_insert(_RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<Result*, std::vector<Result> >; _Compare = __gnu_cxx::__ops::_Val_less_iter]':
/usr/include/c++/8/bits/stl_algo.h:1821:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<Result*, std::vector<Result> >' changed in GCC 7.1
__unguarded_linear_insert(_RandomAccessIterator __last,
^09:46, 24 January 2020 (UTC)09:46, 24 January 2020 (UTC)09:46, 24 January 2020 (UTC)09:46, 24 January 2020 (UTC)[[User:U0001|U0001]] ([[User talk:U0001|talk]]) 09:46, 24 January 2020 (UTC)
/usr/include/c++/8/bits/stl_algo.h: In function 'void std::__insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<Result*, std::vector<Result> >; _Compare = __gnu_cxx::__ops::_Iter_less_iter]':
/usr/include/c++/8/bits/stl_algo.h:1840:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<Result*, std::vector<Result> >' changed in GCC 7.1
__insertion_sort(_RandomAccessIterator __first,
^09:46, 24 January 2020 (UTC)09:46, 24 January 2020 (UTC)09:46, 24 January 2020 (UTC)
/usr/include/c++/8/bits/stl_algo.h:1840:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<Result*, std::vector<Result> >' changed in GCC 7.1
In file included from /usr/include/c++/8/bits/stl_algo.h:61,
from /usr/include/c++/8/algorithm:62,
from stats2gnuplot.cc:33:
/usr/include/c++/8/bits/stl_heap.h: In function 'void std::__adjust_heap(_RandomAccessIterator, _Distance, _Distance, _Tp, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<Result*, std::vector<Result> >; _Distance = int; _Tp = Result; _Compare = __gnu_cxx::__ops::_Iter_less_iter]':
/usr/include/c++/8/bits/stl_heap.h:214:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<Result*, std::vector<Result> >' changed in GCC 7.1
__adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex,
^09:46, 24 January 2020 (UTC)09:46, 24 January 2020 (UTC)~~
/usr/include/c++/8/bits/stl_heap.h: In function 'void std::__make_heap(_RandomAccessIterator, _RandomAccessIterator, _Compare&) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<Result*, std::vector<Result> >; _Compare = __gnu_cxx::__ops::_Iter_less_iter]':
/usr/include/c++/8/bits/stl_heap.h:326:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<Result*, std::vector<Result> >' changed in GCC 7.1
__make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last,
^09:46, 24 January 2020 (UTC)09:46, 24 January 2020 (UTC)
/usr/include/c++/8/bits/stl_heap.h:326:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<Result*, std::vector<Result> >' changed in GCC 7.1
/usr/include/c++/8/bits/stl_heap.h: In function 'void std::__pop_heap(_RandomAccessIterator, _RandomAccessIterator, _RandomAccessIterator, _Compare&) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<Result*, std::vector<Result> >; _Compare = __gnu_cxx::__ops::_Iter_less_iter]':
/usr/include/c++/8/bits/stl_heap.h:243:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<Result*, std::vector<Result> >' changed in GCC 7.1
__pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last,
^09:46, 24 January 2020 (UTC)[[User:U0001|U0001]] ([[User talk:U0001|talk]]) 09:46, 24 January 2020 (UTC)
/usr/include/c++/8/bits/stl_heap.h:243:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<Result*, std::vector<Result> >' changed in GCC 7.1
/usr/include/c++/8/bits/stl_heap.h:243:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<Result*, std::vector<Result> >' changed in GCC 7.1
In file included from /usr/include/c++/8/algorithm:62,
from stats2gnuplot.cc:33:
/usr/include/c++/8/bits/stl_algo.h: In function 'void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<Result*, std::vector<Result> >; _Size = int; _Compare = __gnu_cxx::__ops::_Iter_less_iter]':
/usr/include/c++/8/bits/stl_algo.h:1940:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<Result*, std::vector<Result> >' changed in GCC 7.1
__introsort_loop(_RandomAccessIterator __first,
^09:46, 24 January 2020 (UTC)09:46, 24 January 2020 (UTC)09:46, 24 January 2020 (UTC)
/usr/include/c++/8/bits/stl_algo.h:1940:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<Result*, std::vector<Result> >' changed in GCC 7.1
In file included from /usr/include/c++/8/bits/stl_algo.h:61,
from /usr/include/c++/8/algorithm:62,
from stats2gnuplot.cc:33:
/usr/include/c++/8/bits/stl_heap.h:408:19: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<Result*, std::vector<Result> >' changed in GCC 7.1
std::__pop_heap(__first, __last, __last, __comp);
09:46, 24 January 2020 (UTC)09:46, 24 January 2020 (UTC)09:46, 24 January 2020 (UTC)^09:46, 24 January 2020 (UTC)09:46, 24 January 2020 (UTC)09:46, 24 January 2020 (UTC)09:46, 24 January 2020 (UTC)09:46, 24 January 2020 (UTC)09:46, 24 January 2020 (UTC)~~
In file included from /usr/include/c++/8/algorithm:62,
from stats2gnuplot.cc:33:
/usr/include/c++/8/bits/stl_algo.h:1954:25: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<Result*, std::vector<Result> >' changed in GCC 7.1
std::__introsort_loop(__cut, __last, __depth_limit, __comp);
09:46, 24 January 2020 (UTC)09:46, 24 January 2020 (UTC)09:46, 24 January 2020 (UTC)09:46, 24 January 2020 (UTC)~^09:46, 24 January 2020 (UTC)09:46, 24 January 2020 (UTC)09:46, 24 January 2020 (UTC)09:46, 24 January 2020 (UTC)09:46, 24 January 2020 (UTC)09:46, 24 January 2020 (UTC)09:46, 24 January 2020 (UTC)~~
/usr/include/c++/8/bits/stl_algo.h:1672:23: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<Result*, std::vector<Result> >' changed in GCC 7.1
std::__make_heap(__first, __middle, __comp);
09:46, 24 January 2020 (UTC)09:46, 24 January 2020 (UTC)09:46, 24 January 2020 (UTC)~^09:46, 24 January 2020 (UTC)09:46, 24 January 2020 (UTC)09:46, 24 January 2020 (UTC)09:46, 24 January 2020 (UTC)09:46, 24 January 2020 (UTC)~
/usr/include/c++/8/bits/stl_algo.h: In function 'int main(int, char**)':
/usr/include/c++/8/bits/stl_algo.h:1968:25: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<Result*, std::vector<Result> >' changed in GCC 7.1
std::__introsort_loop(__first, __last,
09:46, 24 January 2020 (UTC)09:46, 24 January 2020 (UTC)09:46, 24 January 2020 (UTC)09:46, 24 January 2020 (UTC)~^09:46, 24 January 2020 (UTC)09:46, 24 January 2020 (UTC)09:46, 24 January 2020 (UTC)~
std::__lg(__last - __first) * 2,
09:46, 24 January 2020 (UTC)09:46, 24 January 2020 (UTC)09:46, 24 January 2020 (UTC)09:46, 24 January 2020 (UTC)09:46, 24 January 2020 (UTC)09:46, 24 January 2020 (UTC)~~
__comp);
09:46, 24 January 2020 (UTC)~~
/usr/include/c++/8/bits/stl_algo.h:1885:25: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<Result*, std::vector<Result> >' changed in GCC 7.1
std::__insertion_sort(__first, __first + int(_S_threshold), __comp);
09:46, 24 January 2020 (UTC)09:46, 24 January 2020 (UTC)09:46, 24 January 2020 (UTC)09:46, 24 January 2020 (UTC)~^09:46, 24 January 2020 (UTC)09:46, 24 January 2020 (UTC)09:46, 24 January 2020 (UTC)09:46, 24 January 2020 (UTC)09:46, 24 January 2020 (UTC)09:46, 24 January 2020 (UTC)09:46, 24 January 2020 (UTC)09:46, 24 January 2020 (UTC)09:46, 24 January 2020 (UTC)
/usr/include/c++/8/bits/stl_algo.h:1890:23: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<Result*, std::vector<Result> >' changed in GCC 7.1
std::__insertion_sort(__first, __last, __comp);
09:46, 24 January 2020 (UTC)09:46, 24 January 2020 (UTC)09:46, 24 January 2020 (UTC)09:46, 24 January 2020 (UTC)~^09:46, 24 January 2020 (UTC)09:46, 24 January 2020 (UTC)09:46, 24 January 2020 (UTC)09:46, 24 January 2020 (UTC)[[User:U0001|U0001]] ([[User talk:U0001|talk]]) 09:46, 24 January 2020 (UTC)
mv -f .deps/stats2gnuplot.Tpo .deps/stats2gnuplot.Po
g++ -W -Wall -g -O2 -o stats2gnuplot stats2gnuplot.o -lpthread -lrt
</pre>
===pmbw===
====Building====
====Running the tests====
The benchmark was run as follows:<pre class="board-terminal">armbian@sbcx:~/devel/pmbw/pmbw$ sudo nice -n -2 ./pmbw -S 0Running benchmarks with no upper array size limit.Detected 1695 MiB physical RAM and 4 CPUs.  Allocating 1024 MiB for testing.Running nthreads=1 factor=1073741824 areasize=1024 thrsize=ARM core clock 1024 testsize= 800 MHz1024 repeats=1048576 testvol=1073741824 testaccess=268435456run time =0.424801 -> rerunning test with repeat factor=3791455289Running nthreads=1 factor=3791455289 areasize=1024 thrsize=1024 testsize=ARM core clock = 1300 MHz=1024 repeats=3702594 testvol=3791456256 testaccess=947864064...</pre>  To generate the charts plotting the results, the following command was issued:<pre class="board-terminal">./stats2gnuplot stats.txt | gnuplot</pre>
8,154
edits

Navigation menu