all commits for a clean git history

This commit is contained in:
2024-09-18 14:22:27 +01:00
commit 18306c66fc
6128 changed files with 3186840 additions and 0 deletions

BIN
pyplot/.DS_Store vendored Normal file

Binary file not shown.

163
pyplot/.gitignore vendored Normal file
View File

@@ -0,0 +1,163 @@
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# C extensions
*.so
# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/
cover/
# Translations
*.mo
*.pot
# Django stuff:
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal
# Flask stuff:
instance/
.webassets-cache
# Scrapy stuff:
.scrapy
# Sphinx documentation
docs/_build/
# PyBuilder
.pybuilder/
target/
# Jupyter Notebook
.ipynb_checkpoints
# IPython
profile_default/
ipython_config.py
# pyenv
# For a library or package, you might want to ignore these files since the code is
# intended to run in multiple environments; otherwise, check them in:
# .python-version
# pipenv
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
# However, in case of collaboration, if having platform-specific dependencies or dependencies
# having no cross-platform support, pipenv may install dependencies that don't work, or not
# install all needed dependencies.
#Pipfile.lock
# poetry
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
# This is especially recommended for binary packages to ensure reproducibility, and is more
# commonly ignored for libraries.
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
#poetry.lock
# pdm
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
#pdm.lock
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
# in version control.
# https://pdm.fming.dev/#use-with-ide
.pdm.toml
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
__pypackages__/
# Celery stuff
celerybeat-schedule
celerybeat.pid
# SageMath parsed files
*.sage.py
# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/
# Spyder project settings
.spyderproject
.spyproject
# Rope project settings
.ropeproject
# mkdocs documentation
/site
# mypy
.mypy_cache/
.dmypy.json
dmypy.json
# Pyre type checker
.pyre/
# pytype static type analyzer
.pytype/
# Cython debug symbols
cython_debug/
# PyCharm
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
# and can be added to the global gitignore or merged into this file. For a more nuclear
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
#.idea/
# Pyplot virtual environment
.pyplot

View File

@@ -0,0 +1,156 @@
br_mis_pred
br_pred
br_immed_spec
br_return_spec
br_indirect_spec
cpu_cycles
bus_access
bus_cycles
bus_access_rd
bus_access_wr
bus_access_rd_ctag
bus_access_wr_ctag
l1i_cache_refill
l1i_tlb_refill
l1d_cache_refill
l1d_cache
l1d_tlb_refill
l1i_cache
l1d_cache_wb
l2d_cache
l2d_cache_refill
l2d_cache_wb
l2d_cache_allocate
l1d_tlb
l1i_tlb
l3d_cache_allocate
l3d_cache_refill
l3d_cache
l2d_tlb_refill
l2d_tlb
dtlb_walk
itlb_walk
ll_cache_rd
ll_cache_miss_rd
l1d_cache_rd
l1d_cache_wr
l1d_cache_refill_rd
l1d_cache_refill_wr
l1d_cache_refill_inner
l1d_cache_refill_outer
l1d_cache_wb_victim
l1d_cache_wb_clean
l1d_cache_inval
l1d_tlb_refill_rd
l1d_tlb_refill_wr
l1d_tlb_rd
l1d_tlb_wr
l2d_cache_rd
l2d_cache_wr
l2d_cache_refill_rd
l2d_cache_refill_wr
l2d_cache_wb_victim
l2d_cache_wb_clean
l2d_cache_inval
l2d_tlb_refill_rd
l2d_tlb_refill_wr
l2d_tlb_rd
l2d_tlb_wr
l3d_cache_rd
l1d_cache_rd_ctag
l1d_cache_wr_ctag
l1d_cache_wb_ctag
l1d_cache_refill_rd_ctag
l1d_cache_refill_wr_ctag
l1d_cache_refill_inner_ctag
l1d_cache_refill_outer_ctag
l1d_cache_wb_victim_ctag
l1d_cache_wb_clean_ctag
l2d_cache_rd_ctag
l2d_cache_wr_ctag
l2d_cache_refill_rd_ctag
l2d_cache_wb_victim_ctag
l2d_cache_wb_clean_ctag
l2d_cache_inval_ctag
exc_taken
memory_error
exc_undef
exc_svc
exc_pabort
exc_dabort
exc_irq
exc_fiq
exc_smc
exc_hvc
exc_trap_pabort
exc_trap_dabort
exc_trap_other
exc_trap_irq
exc_trap_fiq
sw_incr
inst_retired
exc_return
cid_write_retired
inst_spec
ttbr_write_retired
br_retired
br_mis_pred_retired
ldrex_spec
strex_pass_spec
strex_fail_spec
strex_spec
ld_spec
st_spec
ldst_spec
dp_spec
ase_spec
vfp_spec
pc_write_spec
crypto_spec
isb_spec
dsb_spec
dmb_spec
rc_ld_spec
rc_st_spec
cid_el0_write_retired
ddc_write_retired
ddc_read_spec
cap_ld_spec
cap_st_spec
cap_alt_ld_spec
cap_alt_st_spec
alt_ld_spec
alt_st_spec
ldct_spec
ldct_no_cap_spec
mem_access
remote_access
mem_access_rd
mem_access_wr
unaligned_ld_spec
unaligned_st_spec
unaligned_ldst_spec
br_mis_pred_rs
br_mis_pred_c64
br_mis_pred_sys
pccrf_full
executive_entry
executive_exit
inst_spec_a64
inst_spec_c64
inst_spec_cvtd
inst_spec_scbnds_nonexact
cdbm_set_sc
dc_zva_ret
ldct_refill
stct_refill
cnt_st_zero_byte
cnt_st_zero_16_bytes
mem_access_rd_ctag
mem_access_wr_ctag
cap_mem_access_rd
cap_mem_access_wr
inst_spec_restricted
ld_cap_perm_clr_ctag
stall_frontend
stall_backend

BIN
pyplot/Histogram/.DS_Store vendored Normal file

Binary file not shown.

View File

@@ -0,0 +1,51 @@
import matplotlib.pyplot as plt
import numpy as np
# ypoints = np.array([19636392729, 9856229208,9445728437,5148906386])
# xpoints = np.array([5,10,15,20])
# ypoints1 = np.array([10062197042, 9873241615,12034929886,5118684853])
# xpoints1 = np.array([5,10,15,20])
ypoints = np.array(np.array([int(x) for x in """5527931
8487180
8358903
8502471
9044249
4808340""".replace(' ',',').replace('\n','').split(",")]))
xpoints = np.array([(i) for i, x in enumerate(ypoints, 1)])
ypoints1 = np.array(np.array([int(x) for x in """4215408
4561976
4696311
4662084
4618990
2799270""".replace(' ',',').replace('\n','').split(",")]))
xpoints1 = np.array([(i) for i, x in enumerate(ypoints1, 1)])
plt.plot(xpoints, ypoints,label='Malloc Physically contigous with bounds')
plt.plot(xpoints1, ypoints1,label='System memory allocator')
'''
L1D_CACHE_LMISS_RD
The counter counts each Memory-read operation to the Level 1 data or unified cache counted by L1D_CACHE that incurs additional latency because it returns data from outside of the Level 1 data or unified cache of this PE.
The event indicates to software that the access missed in the Level 1 data or unified cache and might have a significant performance impact due to the additional latency compared to the latency of an access that hits in the Level 1 data or unified cache.
The counter does not count:
• Accesses where the additional latency is unlikely to be significantly performance-impacting. For example, if the access hits in another cache in the same local cluster, and the additional latency is small when compared to a miss in all Level 1 caches that the access looks up in and results in an access being made to a Level 2 cache or elsewhere beyond the Level 1 data or unified cache.
• A miss that does not cause a new cache refill but is satisfied from a previous miss.
An implementation is not required to measure the latency, nor to track the access to determine whether the additional latency caused a performance impact. An implementation can extend the definition of this event with additional scenarios where an access might have a significant performance impact due to additional latency for the access.
It is IMPLEMENTATION DEFINED whether accesses that result from cache maintenance operations are counted.
If the cache is shared and the Effective value of PMEVTYPER<n>_EL0.MT for the counter is 0, then the counter counts only events Attributable to the PE counting the event. For a multithreaded processor implementation, if the cache is shared by PEs other than the PEs in the multithreaded processor and the Effective value of PMEVTYPER<n>_EL0.MT for the counter is 1, then the counter counts only events Attributable to PEs in the multithreaded processor. In all other cases, it is IMPLEMENTATION DEFINED whether only events Attributable to the PE counting the event or all events are counted, and might depend on the Effective value of PMEVTYPER<n>_EL1.MT.
PMCEID1_EL0[25] reads as 1 if this event is implemented and 0 otherwise. This event must be implemented if FEAT_PMUv3p4 is implemented.
'''
# plt.title("L1D cache miss read \n ARM Performance counter: L1D_CACHE_LMISS_RD \n each Memory-read operation or Memory-write operation that causes a cache \n access to at least the Level 1 data or unified cache. This includes each complete or partial translation table walk that causes an access to memory, including to data or translation table walk caches. \n Histogram large")
plt.xlabel("time in seconds")
plt.ylabel("LL cache miss")
# plt.plot(xpoints1, ypoints1)
plt.legend()
# plt.show()
plt.savefig('ll_cache_histogram_large.png')

View File

@@ -0,0 +1,51 @@
import matplotlib.pyplot as plt
import numpy as np
# ypoints = np.array([19636392729, 9856229208,9445728437,5148906386])
# xpoints = np.array([5,10,15,20])
# ypoints1 = np.array([10062197042, 9873241615,12034929886,5118684853])
# xpoints1 = np.array([5,10,15,20])
ypoints = np.array([int(x) for x in """61346
61955
64896
64751
64359
24896""".replace(' ',',').replace('\n','').split(",")])
xpoints = np.array([(i) for i, x in enumerate(ypoints, 1)])
ypoints1 = np.array([int(x) for x in """48953
74277
52782
64321
64184
36170""".replace(' ',',').replace('\n','').split(",")])
xpoints1 = np.array([(i) for i, x in enumerate(ypoints1, 1)])
plt.plot(xpoints, ypoints,label='Malloc Physically contigous with bounds')
plt.plot(xpoints1, ypoints1,label='System memory allocator')
'''
DTLB_WALK
The counter counts each access counted by L1D_TLB that causes a
refill of a data or unified
TLB involving at least one translation table walk access.
This includes each complete or partial translation table walk that causes an
access to memory, including to data or translation table walk caches.
If Armv8.7 is not implemented, it is IMPLEMENTATION DEFINED whether accesses
that cause an update of an existing TLB entry involving at least one translation
table walk access are counted. If Armv8.7 is implemented, these accesses
are counted.
'''
# plt.title("Data TLB access, read \n ARM Performance counter: DTLB_WALK \n Data TLB access with at least one translation table walk \n This includes each complete or partial translation table walk that causes an access to memory, including to data or translation table walk caches. \n Histogram large")
plt.xlabel("time in seconds")
plt.ylabel("DTLB walks")
# plt.plot(xpoints1, ypoints1)
plt.legend()
# plt.show()
plt.savefig('dtlb_walk_histogram_large.png')

View File

@@ -0,0 +1,46 @@
import matplotlib.pyplot as plt
import numpy as np
# ypoints = np.array([19636392729, 9856229208,9445728437,5148906386])
# xpoints = np.array([5,10,15,20])
# ypoints1 = np.array([10062197042, 9873241615,12034929886,5118684853])
# xpoints1 = np.array([5,10,15,20])
ypoints = np.array([int(x) for x in """2470621494
2375100932
2670296613
2645401007
2876843895
1166193957""".replace(' ',',').replace('\n','').split(",")])
xpoints = np.array([(i) for i, x in enumerate(ypoints, 1)])
ypoints1 = np.array([int(x) for x in """2273131353
2561823604
2693697356
2606093836
2631231896
1161666024""".replace(' ',',').replace('\n','').split(",")])
xpoints1 = np.array([(i) for i, x in enumerate(ypoints1, 1)])
plt.plot(xpoints, ypoints,label='Malloc Physically contigous with bounds')
plt.plot(xpoints1, ypoints1,label='System memory allocator')
'''
L1D_TLB
The counter counts each Memory-read operation or Memory-write operation that causes a TLB
access to at least the Level 1 data or unified TLB.
Each access to a TLB entry is counted including multiple accesses caused by single instructions
such as LDM or STM.
'''
# plt.title("Level 1 data TLB access, read \n ARM Performance counter: L1D_TLB_RD \n This counter counts each access counted by \n L1D_TLB that is a Memory-read operation. \n Histogram large")
plt.xlabel("time in seconds")
plt.ylabel("L1 DTLB reads")
# plt.plot(xpoints1, ypoints1)
plt.legend()
# plt.show()
plt.savefig('tlb_l1_data.png')

View File

@@ -0,0 +1,50 @@
import matplotlib.pyplot as plt
import numpy as np
# ypoints = np.array([19636392729, 9856229208,9445728437,5148906386])
# xpoints = np.array([5,10,15,20])
# ypoints1 = np.array([10062197042, 9873241615,12034929886,5118684853])
# xpoints1 = np.array([5,10,15,20])
ypoints = np.array([int(x) for x in """140262
156781
156217
155686
139859
80438""".replace(' ',',').replace('\n','').split(",")])
xpoints = np.array([(i) for i, x in enumerate(ypoints, 1)])
ypoints1 = np.array([int(x) for x in """121530
144628
154478
143992
148316
86682""".replace(' ',',').replace('\n','').split(",")])
xpoints1 = np.array([(i) for i, x in enumerate(ypoints1, 1)])
xpoints1 = np.array([(i) for i, x in enumerate(ypoints1, 1)])
plt.plot(xpoints, ypoints,label='Malloc Physically contigous with bounds')
plt.plot(xpoints1, ypoints1,label='System memory allocator')
'''
DTLB_WALK
The counter counts each Memory-read operation or Memory-write operation that causes a
TLB access to at least the Level 2 data or unified TLB.
Each access to a TLB entry is counted including refills
of Level 1 TLBs.
The counter does not count the access if the access i
s due to a TLB maintenance instruction.
'''
# plt.title("Level 2 data TLB acces, read \n ARM Performance counter: L2D_TLB \n The counter counts each Memory-read operation or Memory-write operation that causes a TLB access to at least the Level 2 data or unified TLB. \n Histogram large")
plt.xlabel("time in seconds")
plt.ylabel("L2 DTLB reads")
# plt.plot(xpoints1, ypoints1)
plt.legend()
# plt.show()
plt.savefig('tlb_l2_data.png')

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

View File

@@ -0,0 +1,43 @@
import matplotlib.pyplot as plt
import numpy as np
# ypoints = np.array([19636392729, 9856229208,9445728437,5148906386])
# xpoints = np.array([5,10,15,20])
# ypoints1 = np.array([10062197042, 9873241615,12034929886,5118684853])
# xpoints1 = np.array([5,10,15,20])
ypoints = np.array(np.array([int(x) for x in """7409968
5549675""".replace(' ',',').replace('\n','').split(",")]))
xpoints = np.array([(i) for i, x in enumerate(ypoints, 1)])
ypoints1 = np.array(np.array([int(x) for x in """3946380
3530306""".replace(' ',',').replace('\n','').split(",")]))
xpoints1 = np.array([(i) for i, x in enumerate(ypoints1, 1)])
plt.plot(xpoints, ypoints,label='Malloc Physically contigous with bounds')
plt.plot(xpoints1, ypoints1,label='System memory allocator')
'''
L1D_CACHE_LMISS_RD
The counter counts each Memory-read operation to the Level 1 data or unified cache counted by L1D_CACHE that incurs additional latency because it returns data from outside of the Level 1 data or unified cache of this PE.
The event indicates to software that the access missed in the Level 1 data or unified cache and might have a significant performance impact due to the additional latency compared to the latency of an access that hits in the Level 1 data or unified cache.
The counter does not count:
• Accesses where the additional latency is unlikely to be significantly performance-impacting. For example, if the access hits in another cache in the same local cluster, and the additional latency is small when compared to a miss in all Level 1 caches that the access looks up in and results in an access being made to a Level 2 cache or elsewhere beyond the Level 1 data or unified cache.
• A miss that does not cause a new cache refill but is satisfied from a previous miss.
An implementation is not required to measure the latency, nor to track the access to determine whether the additional latency caused a performance impact. An implementation can extend the definition of this event with additional scenarios where an access might have a significant performance impact due to additional latency for the access.
It is IMPLEMENTATION DEFINED whether accesses that result from cache maintenance operations are counted.
If the cache is shared and the Effective value of PMEVTYPER<n>_EL0.MT for the counter is 0, then the counter counts only events Attributable to the PE counting the event. For a multithreaded processor implementation, if the cache is shared by PEs other than the PEs in the multithreaded processor and the Effective value of PMEVTYPER<n>_EL0.MT for the counter is 1, then the counter counts only events Attributable to PEs in the multithreaded processor. In all other cases, it is IMPLEMENTATION DEFINED whether only events Attributable to the PE counting the event or all events are counted, and might depend on the Effective value of PMEVTYPER<n>_EL1.MT.
PMCEID1_EL0[25] reads as 1 if this event is implemented and 0 otherwise. This event must be implemented if FEAT_PMUv3p4 is implemented.
'''
# plt.title("L1D cache miss read \n ARM Performance counter: L1D_CACHE_LMISS_RD \n each Memory-read operation or Memory-write operation that causes a cache \n access to at least the Level 1 data or unified cache. This includes each complete or partial translation table walk that causes an access to memory, including to data or translation table walk caches. \n Histogram medium")
plt.xlabel("time in seconds")
plt.ylabel("cache miss")
# plt.plot(xpoints1, ypoints1)
plt.legend()
# plt.show()
plt.savefig('ll_data_histogram_medium.png')

View File

@@ -0,0 +1,43 @@
import matplotlib.pyplot as plt
import numpy as np
# ypoints = np.array([19636392729, 9856229208,9445728437,5148906386])
# xpoints = np.array([5,10,15,20])
# ypoints1 = np.array([10062197042, 9873241615,12034929886,5118684853])
# xpoints1 = np.array([5,10,15,20])
ypoints = np.array([int(x) for x in """60650
38635""".replace(' ',',').replace('\n','').split(",")])
xpoints = np.array([(i) for i, x in enumerate(ypoints, 1)])
ypoints1 = np.array([int(x) for x in """41348
39676""".replace(' ',',').replace('\n','').split(",")])
xpoints1 = np.array([(i) for i, x in enumerate(ypoints1, 1)])
plt.plot(xpoints, ypoints,label='Malloc Physically contigous with bounds')
plt.plot(xpoints1, ypoints1,label='System memory allocator')
'''
DTLB_WALK
The counter counts each access counted by L1D_TLB that causes a
refill of a data or unified
TLB involving at least one translation table walk access.
This includes each complete or partial translation table walk that causes an
access to memory, including to data or translation table walk caches.
If Armv8.7 is not implemented, it is IMPLEMENTATION DEFINED whether accesses
that cause an update of an existing TLB entry involving at least one translation
table walk access are counted. If Armv8.7 is implemented, these accesses
are counted.
'''
# plt.title("Data TLB access, read \n ARM Performance counter: DTLB_WALK \n Data TLB access with at least one translation table walk \n This includes each complete or partial translation table walk that causes an access to memory, including to data or translation table walk caches. \n Histogram medium")
plt.xlabel("time in seconds")
plt.ylabel("DTLB walks")
# plt.plot(xpoints1, ypoints1)
plt.legend()
# plt.show()
plt.savefig('dtlb_walk_histogram_medium.png')

View File

@@ -0,0 +1,38 @@
import matplotlib.pyplot as plt
import numpy as np
# ypoints = np.array([19636392729, 9856229208,9445728437,5148906386])
# xpoints = np.array([5,10,15,20])
# ypoints1 = np.array([10062197042, 9873241615,12034929886,5118684853])
# xpoints1 = np.array([5,10,15,20])
ypoints = np.array([int(x) for x in """2031641198
1792581571""".replace(' ',',').replace('\n','').split(",")])
xpoints = np.array([(i) for i, x in enumerate(ypoints, 1)])
ypoints1 = np.array([int(x) for x in """2041386981
2064066636""".replace(' ',',').replace('\n','').split(",")])
xpoints1 = np.array([(i) for i, x in enumerate(ypoints1, 1)])
plt.plot(xpoints, ypoints,label='Malloc Physically contigous with bounds')
plt.plot(xpoints1, ypoints1,label='System memory allocator')
'''
L1D_TLB
The counter counts each Memory-read operation or Memory-write operation that causes a TLB
access to at least the Level 1 data or unified TLB.
Each access to a TLB entry is counted including multiple accesses caused by single instructions
such as LDM or STM.
'''
# plt.title("Level 1 data TLB access, read \n ARM Performance counter: L1D_TLB_RD \n This counter counts each access counted by \n L1D_TLB that is a Memory-read operation. \n Histogram medium")
plt.xlabel("time in seconds")
plt.ylabel("L1 DTLB reads")
# plt.plot(xpoints1, ypoints1)
plt.legend()
# plt.show()
plt.savefig('l1_data_histogram_medium.png')

View File

@@ -0,0 +1,43 @@
import matplotlib.pyplot as plt
import numpy as np
# ypoints = np.array([19636392729, 9856229208,9445728437,5148906386])
# xpoints = np.array([5,10,15,20])
# ypoints1 = np.array([10062197042, 9873241615,12034929886,5118684853])
# xpoints1 = np.array([5,10,15,20])
ypoints = np.array([int(x) for x in """159185
95485""".replace(' ',',').replace('\n','').split(",")])
xpoints = np.array([(i) for i, x in enumerate(ypoints, 1)])
ypoints1 = np.array([int(x) for x in """137015
89117""".replace(' ',',').replace('\n','').split(",")])
xpoints1 = np.array([(i) for i, x in enumerate(ypoints1, 1)])
xpoints1 = np.array([(i) for i, x in enumerate(ypoints1, 1)])
plt.plot(xpoints, ypoints,label='Malloc Physically contigous with bounds')
plt.plot(xpoints1, ypoints1,label='System memory allocator')
'''
DTLB_WALK
The counter counts each Memory-read operation or Memory-write operation that causes a
TLB access to at least the Level 2 data or unified TLB.
Each access to a TLB entry is counted including refills
of Level 1 TLBs.
The counter does not count the access if the access i
s due to a TLB maintenance instruction.
'''
# plt.title("Level 2 data TLB acces, read \n ARM Performance counter: L2D_TLB \n The counter counts each Memory-read operation or Memory-write operation that causes a TLB access to at least the Level 2 data or unified TLB. \n Histogram medium")
plt.xlabel("time in seconds")
plt.ylabel("L2 DTLB reads")
# plt.plot(xpoints1, ypoints1)
plt.legend()
# plt.show()
plt.savefig('tlb_l2_histogram_medium.png')

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

View File

@@ -0,0 +1,60 @@
# p/ll_cache_miss_rd
2100870
# p/L2D_TLB
70087
# p/DTLB_WALK
18523
# p/L1D_TLB_RD
947507000
# p/L2D_TLB
64140
# p/ll_cache_miss_rd
7409968
5549675
# p/L2D_TLB
155420
91895
# p/DTLB_WALK
60650
38635
# p/L1D_TLB_RD
2031641198
1792581571
# p/L2D_TLB
159185
95485
# p/ll_cache_miss_rd
5527931
8487180
8358903
8502471
9044249
4808340
# p/L2D_TLB
123036
155010
180732
155543
154428
64508
# p/DTLB_WALK
61346
61955
64896
64751
64359
24896
# p/L1D_TLB_RD
2470621494
2375100932
2670296613
2645401007
2876843895
1166193957
# p/L2D_TLB
140262
156781
156217
155686
139859
80438

View File

@@ -0,0 +1,41 @@
import matplotlib.pyplot as plt
import numpy as np
# ypoints = np.array([19636392729, 9856229208,9445728437,5148906386])
# xpoints = np.array([5,10,15,20])
# ypoints1 = np.array([10062197042, 9873241615,12034929886,5118684853])
# xpoints1 = np.array([5,10,15,20])
ypoints = np.array([2100870,19384360])
xpoints = ["Malloc Physically contigous with bounds","System memory allocator"]
# ypoints1 = np.array([19384360])
# xpoints1 = np.array([(i) for i, x in enumerate(ypoints1, 1)])
plt.bar(xpoints, ypoints)
# plt.bar(xpoints1, ypoints1,label='System memory allocator')
'''
L1D_CACHE_LMISS_RD
The counter counts each Memory-read operation to the Level 1 data or unified cache counted by L1D_CACHE that incurs additional latency because it returns data from outside of the Level 1 data or unified cache of this PE.
The event indicates to software that the access missed in the Level 1 data or unified cache and might have a significant performance impact due to the additional latency compared to the latency of an access that hits in the Level 1 data or unified cache.
The counter does not count:
• Accesses where the additional latency is unlikely to be significantly performance-impacting. For example, if the access hits in another cache in the same local cluster, and the additional latency is small when compared to a miss in all Level 1 caches that the access looks up in and results in an access being made to a Level 2 cache or elsewhere beyond the Level 1 data or unified cache.
• A miss that does not cause a new cache refill but is satisfied from a previous miss.
An implementation is not required to measure the latency, nor to track the access to determine whether the additional latency caused a performance impact. An implementation can extend the definition of this event with additional scenarios where an access might have a significant performance impact due to additional latency for the access.
It is IMPLEMENTATION DEFINED whether accesses that result from cache maintenance operations are counted.
If the cache is shared and the Effective value of PMEVTYPER<n>_EL0.MT for the counter is 0, then the counter counts only events Attributable to the PE counting the event. For a multithreaded processor implementation, if the cache is shared by PEs other than the PEs in the multithreaded processor and the Effective value of PMEVTYPER<n>_EL0.MT for the counter is 1, then the counter counts only events Attributable to PEs in the multithreaded processor. In all other cases, it is IMPLEMENTATION DEFINED whether only events Attributable to the PE counting the event or all events are counted, and might depend on the Effective value of PMEVTYPER<n>_EL1.MT.
PMCEID1_EL0[25] reads as 1 if this event is implemented and 0 otherwise. This event must be implemented if FEAT_PMUv3p4 is implemented.
'''
# plt.title("L1D cache miss read \n ARM Performance counter: L1D_CACHE_LMISS_RD \n each Memory-read operation or Memory-write operation that causes a cache \n access to at least the Level 1 data or unified cache. This includes each complete or partial translation table walk that causes an access to memory, including to data or translation table walk caches. \n Histogram medium")
plt.xlabel("time in seconds")
plt.ylabel("L1D cache misses")
# plt.plot(xpoints1, ypoints1)
plt.legend()
# plt.show()
plt.savefig('ll_histogram_small.png')

View File

@@ -0,0 +1,37 @@
import matplotlib.pyplot as plt
import numpy as np
# ypoints = np.array([19636392729, 9856229208,9445728437,5148906386])
# xpoints = np.array([5,10,15,20])
# ypoints1 = np.array([10062197042, 9873241615,12034929886,5118684853])
# xpoints1 = np.array([5,10,15,20])
ypoints = np.array([18523,16667])
xpoints = ["Malloc Physically contigous with bounds","System memory allocator"]
plt.bar(xpoints, ypoints)
'''
DTLB_WALK
The counter counts each access counted by L1D_TLB that causes a
refill of a data or unified
TLB involving at least one translation table walk access.
This includes each complete or partial translation table walk that causes an
access to memory, including to data or translation table walk caches.
If Armv8.7 is not implemented, it is IMPLEMENTATION DEFINED whether accesses
that cause an update of an existing TLB entry involving at least one translation
table walk access are counted. If Armv8.7 is implemented, these accesses
are counted.
'''
# plt.title("Data TLB access, read \n ARM Performance counter: DTLB_WALK \n Data TLB access with at least one translation table walk \n This includes each complete or partial translation table walk that causes an access to memory, including to data or translation table walk caches. \n Histogram medium")
plt.xlabel("time in seconds")
plt.ylabel("DTLB walks")
# plt.plot(xpoints1, ypoints1)
plt.legend()
# plt.show()
plt.savefig('dtlb_walk_histogram_small.png')

View File

@@ -0,0 +1,31 @@
import matplotlib.pyplot as plt
import numpy as np
# ypoints = np.array([19636392729, 9856229208,9445728437,5148906386])
# xpoints = np.array([5,10,15,20])
# ypoints1 = np.array([10062197042, 9873241615,12034929886,5118684853])
# xpoints1 = np.array([5,10,15,20])
ypoints = np.array([947507000,771906538])
xpoints = ["Malloc Physically contigous with bounds","System memory allocator"]
plt.bar(xpoints, ypoints,label='Malloc Physically contigous with bounds')
'''
L1D_TLB
The counter counts each Memory-read operation or Memory-write operation that causes a TLB
access to at least the Level 1 data or unified TLB.
Each access to a TLB entry is counted including multiple accesses caused by single instructions
such as LDM or STM.
'''
# plt.title("Level 1 data TLB access, read \n ARM Performance counter: L1D_TLB_RD \n This counter counts each access counted by \n L1D_TLB that is a Memory-read operation. \n Histogram medium")
plt.xlabel("time in seconds")
plt.ylabel("L1 DTLB reads")
# plt.plot(xpoints1, ypoints1)
# plt.legend()
# plt.show()
plt.savefig('l1d_tlb_walk_histogram_small.png')

View File

@@ -0,0 +1,33 @@
import matplotlib.pyplot as plt
import numpy as np
# ypoints = np.array([19636392729, 9856229208,9445728437,5148906386])
# xpoints = np.array([5,10,15,20])
# ypoints1 = np.array([10062197042, 9873241615,12034929886,5118684853])
# xpoints1 = np.array([5,10,15,20])
ypoints = np.array([64140,46518])
xpoints = ["Malloc Physically contigous with bounds","System memory allocator"]
plt.bar(xpoints, ypoints)
'''
The counter counts each Memory-read operation or Memory-write operation that causes a
TLB access to at least the Level 2 data or unified TLB.
Each access to a TLB entry is counted including refills
of Level 1 TLBs.
The counter does not count the access if the access i
s due to a TLB maintenance instruction.
'''
# plt.title("Level 2 data TLB acces, read \n ARM Performance counter: L2D_TLB \n The counter counts each Memory-read operation or Memory-write operation that causes a TLB access to at least the Level 2 data or unified TLB. \n Histogram medium")
plt.xlabel("time in seconds")
plt.ylabel("L2 DTLB reads")
# plt.plot(xpoints1, ypoints1)
plt.legend()
# plt.show()
plt.savefig('l2d_tlb_walk_histogram_small.png')

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

View File

@@ -0,0 +1,60 @@
# p/ll_cache_miss_rd
1938436
# p/L2D_TLB
66692
# p/DTLB_WALK
16667
# p/L1D_TLB_RD
771906538
# p/L2D_TLB
46518
# p/ll_cache_miss_rd
3946380
3530306
# p/L2D_TLB
141073
105804
# p/DTLB_WALK
41348
39676
# p/L1D_TLB_RD
2041386981
2064066636
# p/L2D_TLB
137015
89117
# p/ll_cache_miss_rd
4215408
4561976
4696311
4662084
4618990
2799270
# p/L2D_TLB
115992
154771
151387
148955
148124
57792
# p/DTLB_WALK
48953
74277
52782
64321
64184
36170
# p/L1D_TLB_RD
2273131353
2561823604
2693697356
2606093836
2631231896
1161666024
# p/L2D_TLB
121530
144628
154478
143992
148316
86682

View File

@@ -0,0 +1,75 @@
import matplotlib.pyplot as plt
import numpy as np
# ypoints = np.array([19636392729, 9856229208,9445728437,5148906386])
# xpoints = np.array([5,10,15,20])
# ypoints1 = np.array([10062197042, 9873241615,12034929886,5118684853])
# xpoints1 = np.array([5,10,15,20])
ypoints = np.array(np.array([int(x) for x in """836772
495429
446419
366613
397234
505776
356928
449455
480582
427964
400058
420493
452870
499538
419145
443761
417189
370320""".replace(' ',',').replace('\n','').split(",")]))
xpoints = np.array([(i) for i, x in enumerate(ypoints, 1)])
ypoints1 = np.array(np.array([int(x) for x in """723197
556124
352857
538444
628566
751980
602713
550526
530137
529691
430821
390686
418356
520712
515506
676283
659655
523928""".replace(' ',',').replace('\n','').split(",")]))
xpoints1 = np.array([(i) for i, x in enumerate(ypoints1, 1)])
plt.plot(xpoints, ypoints,label='Malloc Physically contigous with bounds')
plt.plot(xpoints1, ypoints1,label='System memory allocator')
'''
L1D_CACHE_LMISS_RD
The counter counts each Memory-read operation to the Level 1 data or unified cache counted by L1D_CACHE that incurs additional latency because it returns data from outside of the Level 1 data or unified cache of this PE.
The event indicates to software that the access missed in the Level 1 data or unified cache and might have a significant performance impact due to the additional latency compared to the latency of an access that hits in the Level 1 data or unified cache.
The counter does not count:
• Accesses where the additional latency is unlikely to be significantly performance-impacting. For example, if the access hits in another cache in the same local cluster, and the additional latency is small when compared to a miss in all Level 1 caches that the access looks up in and results in an access being made to a Level 2 cache or elsewhere beyond the Level 1 data or unified cache.
• A miss that does not cause a new cache refill but is satisfied from a previous miss.
An implementation is not required to measure the latency, nor to track the access to determine whether the additional latency caused a performance impact. An implementation can extend the definition of this event with additional scenarios where an access might have a significant performance impact due to additional latency for the access.
It is IMPLEMENTATION DEFINED whether accesses that result from cache maintenance operations are counted.
If the cache is shared and the Effective value of PMEVTYPER<n>_EL0.MT for the counter is 0, then the counter counts only events Attributable to the PE counting the event. For a multithreaded processor implementation, if the cache is shared by PEs other than the PEs in the multithreaded processor and the Effective value of PMEVTYPER<n>_EL0.MT for the counter is 1, then the counter counts only events Attributable to PEs in the multithreaded processor. In all other cases, it is IMPLEMENTATION DEFINED whether only events Attributable to the PE counting the event or all events are counted, and might depend on the Effective value of PMEVTYPER<n>_EL1.MT.
PMCEID1_EL0[25] reads as 1 if this event is implemented and 0 otherwise. This event must be implemented if FEAT_PMUv3p4 is implemented.
'''
# plt.title("L1D cache miss read \n ARM Performance counter: L1D_CACHE_LMISS_RD \n each Memory-read operation or Memory-write operation that causes a cache \n access to at least the Level 1 data or unified cache. This includes each complete or partial translation table walk that causes an access to memory, including to data or translation table walk caches. \n Kmeans C program with Cluster size 3")
plt.xlabel("time in seconds")
plt.ylabel("DTLB walks")
# plt.plot(xpoints1, ypoints1)
plt.legend()
# plt.show()
plt.savefig('ll_kmeans_3_dimentions.png')

View File

@@ -0,0 +1,75 @@
import matplotlib.pyplot as plt
import numpy as np
# ypoints = np.array([19636392729, 9856229208,9445728437,5148906386])
# xpoints = np.array([5,10,15,20])
# ypoints1 = np.array([10062197042, 9873241615,12034929886,5118684853])
# xpoints1 = np.array([5,10,15,20])
ypoints = np.array([3625,
1016,
1546,
1556,
1424,
1382,
1598,
1544,
1369,
1301,
1410,
1415,
1520,
1291,
1425,
1653,
1496,
951])
xpoints = np.array([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18])
ypoints1 = np.array([6798,
2144,
2327,
2234,
2779,
3046,
2824,
2762,
2857,
2404,
3236,
2473,
2517,
2558,
3065,
3222,
3235,
4939])
xpoints1 = np.array([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18])
plt.plot(xpoints, ypoints,label='Malloc Physically contigous with bounds')
plt.plot(xpoints1, ypoints1,label='System memory allocator')
'''
DTLB_WALK
The counter counts each access counted by L1D_TLB that causes a
refill of a data or unified
TLB involving at least one translation table walk access.
This includes each complete or partial translation table walk that causes an
access to memory, including to data or translation table walk caches.
If Armv8.7 is not implemented, it is IMPLEMENTATION DEFINED whether accesses
that cause an update of an existing TLB entry involving at least one translation
table walk access are counted. If Armv8.7 is implemented, these accesses
are counted.
'''
# plt.title("Data TLB access, read \n ARM Performance counter: DTLB_WALK \n Data TLB access with at least one translation table walk \n This includes each complete or partial translation table walk that causes an access to memory, including to data or translation table walk caches. \n Kmeans C program with Cluster size 3")
plt.xlabel("time in seconds")
plt.ylabel("DTLB walks")
# plt.plot(xpoints1, ypoints1)
plt.legend()
# plt.show()
plt.savefig('dtlb_walk_kmeans_3_dimentions.png')

View File

@@ -0,0 +1,72 @@
import matplotlib.pyplot as plt
import numpy as np
# ypoints = np.array([19636392729, 9856229208,9445728437,5148906386])
# xpoints = np.array([5,10,15,20])
# ypoints1 = np.array([10062197042, 9873241615,12034929886,5118684853])
# xpoints1 = np.array([5,10,15,20])
ypoints = np.array([78303,
34734,
129682,
93214,
59616,
111134,
75559,
85767,
96804,
87956,
83874,
72777,
80302,
59289,
105762,
62793,
78365,
77091])
xpoints = np.array([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18])
ypoints1 = np.array([127978,
79046,
67101,
99081,
186824,
111734,
120426,
65293,
112589,
113350,
110875,
74596,
86142,
77054,
106211,
133301,
109764,
68751])
xpoints1 = np.array([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18])
plt.plot(xpoints, ypoints,label='Malloc Physically contigous with bounds')
plt.plot(xpoints1, ypoints1,label='System memory allocator')
'''
DTLB_WALK
The counter counts each Memory-read operation or Memory-write operation that causes a
TLB access to at least the Level 2 data or unified TLB.
Each access to a TLB entry is counted including refills
of Level 1 TLBs.
The counter does not count the access if the access i
s due to a TLB maintenance instruction.
'''
# plt.title("Level 2 data TLB acces, read \n ARM Performance counter: L2D_TLB \n The counter counts each Memory-read operation or Memory-write operation that causes a TLB access to at least the Level 2 data or unified TLB. \n Kmeans C program with Cluster size 3")
plt.xlabel("time in seconds")
plt.ylabel("L2 DTLB reads")
# plt.plot(xpoints1, ypoints1)
plt.legend()
# plt.show()
plt.savefig('l2_tlb_kmeans_3_dimentions.png')

View File

@@ -0,0 +1,68 @@
import matplotlib.pyplot as plt
import numpy as np
# ypoints = np.array([19636392729, 9856229208,9445728437,5148906386])
# xpoints = np.array([5,10,15,20])
# ypoints1 = np.array([10062197042, 9873241615,12034929886,5118684853])
# xpoints1 = np.array([5,10,15,20])
ypoints = np.array([1944100892,
1929198745,
2147407618,
2361683504,
2229290045,
1936107919,
1950196981,
2316564611,
2415777784,
2251930639,
1917048962,
2122919883,
2305445935,
2216085132,
2061970506,
2077573288,
2415427574])
xpoints = np.array([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17])
ypoints1 = np.array([2001205195,
2037350408,
2077998800,
2064361816,
2370004326,
2366505116,
2433485997,
2388982491,
2622710065,
2231849577,
2213896383,
1971144730,
2279336623,
2384236727,
2159066740,
1872922315,
2046840068])
xpoints1 = np.array([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17])
plt.plot(xpoints, ypoints,label='Malloc Physically contigous with bounds')
plt.plot(xpoints1, ypoints1,label='System memory allocator')
'''
L1D_TLB
The counter counts each Memory-read operation or Memory-write operation that causes a TLB
access to at least the Level 1 data or unified TLB.
Each access to a TLB entry is counted including multiple accesses caused by single instructions
such as LDM or STM.
'''
# plt.title("Level 1 data TLB access, read \n ARM Performance counter: L1D_TLB_RD \n This counter counts each access counted by \n L1D_TLB that is a Memory-read operation. \n Kmeans C program with Cluster size 3")
plt.xlabel("time in seconds")
plt.ylabel("L1 DTLB reads")
# plt.plot(xpoints1, ypoints1)
plt.legend()
# plt.show()
plt.savefig('l1_tlb_kmeans_3_dimentions.png')

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

View File

@@ -0,0 +1,359 @@
import matplotlib.pyplot as plt
import numpy as np
# ypoints = np.array([19636392729, 9856229208,9445728437,5148906386])
# xpoints = np.array([5,10,15,20])
# ypoints1 = np.array([10062197042, 9873241615,12034929886,5118684853])
# xpoints1 = np.array([5,10,15,20])
ypoints = np.array(np.array([int(x) for x in """1147403
829036
563124
979733
683541
618378
905917
561979
902313
823260
499959
627898
915499
646610
739437
945235
541299
637887
842954
703414
1291380
675118
671111
585563
585483
951820
791179
701760
552971
696260
902072
815292
826315
740385
805546
736227
690416
769363
825820
1027783
797795
863187
834350
548714
759409
667769
840026
861216
895136
719523
504731
959369
1052167
668707
558918
778832
681806
1268380
825940
874677
670802
808349
653938
996132
769110
1077410
714249
660753
551064
867647
556815
687308
780915
604863
936983
818984
697969
1063845
722724
864795
791971
489493
678041
514280
784758
643920
896146
567640
854350
548957
583866
880357
589791
604616
560377
527240
673535
503032
851726
484139
649485
978010
641704
488143
710347
808049
1035491
695389
441112
929079
622864
516002
902311
783120
687561
687898
525210
731349
1332534
537479
542351
511237
564299
859176
713889
901452
631327
681258
1035948
634997
455623
851931
612646
902292
787158
660371
791336
702494
644624
764093
946863
984181
666091
571202
590691
1160676
624435
677302
491699
870564
1096683
701710
767120
886663
847346
726936
828216
731833
1143815
893945
446303""".replace(' ',',').replace('\n','').split(",")]))
xpoints = np.array([(i) for i, x in enumerate(ypoints, 1)])
ypoints1 = np.array(np.array([int(x) for x in """1603321
906001
831508
1260778
874222
639952
811423
876933
871938
845695
811517
1078035
1155039
931630
734393
1040144
897608
567688
1017724
816640
1156306
1182610
2087536
935131
564650
781929
1032678
842187
714283
1512066
903441
821687
750216
1623056
1113602
602318
1056833
829348
924366
917254
1417581
1056215
534696
957581
873314
615740
793892
1166512
508943
509190
656245
1304353
909374
638685
1848084
1067142
543667
591408
1215657
952755
1191746
1779363
780965
966607
618025
1082331
1177658
1136390
1914232
570957
846572
577331
1232137
1037267
1262158
1029892
1122356
995490
1174365
1340139
1097573
621145
649356
1082100
792184
1046410
1217530
952589
634895
866331
1560533
870354
692937
1249514
731255
899044
1132861
871474
1440239
1109188
915075
1625844
811510
845837
680654
1527778
556130
761597
1452068
856231
729522
670614
1449778
554624
965716
1030135
1018319
609395
630688
1379329
674255
808523
1098093
1502941
689121
901665
1173878
637713
756162
988917
959839
581439
618517
1482465
539794
982852
878227
1259422
774118
667883
1238176
1393325
721119
1185418
1324310
605043
1029433
1029119
582207
1028124
844517
1594356
1175972
910822
660335
973991
1048600
521274
1771930""".replace(' ',',').replace('\n','').split(",")]))
xpoints1 = np.array([(i) for i, x in enumerate(ypoints1, 1)])
plt.plot(xpoints, ypoints,label='Malloc Physically contigous with bounds')
plt.plot(xpoints1, ypoints1,label='System memory allocator')
'''
L1D_CACHE_LMISS_RD
The counter counts each Memory-read operation to the Level 1 data or unified cache counted by L1D_CACHE that incurs additional latency because it returns data from outside of the Level 1 data or unified cache of this PE.
The event indicates to software that the access missed in the Level 1 data or unified cache and might have a significant performance impact due to the additional latency compared to the latency of an access that hits in the Level 1 data or unified cache.
The counter does not count:
• Accesses where the additional latency is unlikely to be significantly performance-impacting. For example, if the access hits in another cache in the same local cluster, and the additional latency is small when compared to a miss in all Level 1 caches that the access looks up in and results in an access being made to a Level 2 cache or elsewhere beyond the Level 1 data or unified cache.
• A miss that does not cause a new cache refill but is satisfied from a previous miss.
An implementation is not required to measure the latency, nor to track the access to determine whether the additional latency caused a performance impact. An implementation can extend the definition of this event with additional scenarios where an access might have a significant performance impact due to additional latency for the access.
It is IMPLEMENTATION DEFINED whether accesses that result from cache maintenance operations are counted.
If the cache is shared and the Effective value of PMEVTYPER<n>_EL0.MT for the counter is 0, then the counter counts only events Attributable to the PE counting the event. For a multithreaded processor implementation, if the cache is shared by PEs other than the PEs in the multithreaded processor and the Effective value of PMEVTYPER<n>_EL0.MT for the counter is 1, then the counter counts only events Attributable to PEs in the multithreaded processor. In all other cases, it is IMPLEMENTATION DEFINED whether only events Attributable to the PE counting the event or all events are counted, and might depend on the Effective value of PMEVTYPER<n>_EL1.MT.
PMCEID1_EL0[25] reads as 1 if this event is implemented and 0 otherwise. This event must be implemented if FEAT_PMUv3p4 is implemented.
'''
# plt.title("L1D cache miss read \n ARM Performance counter: L1D_CACHE_LMISS_RD \n each Memory-read operation or Memory-write operation that causes a cache \n access to at least the Level 1 data or unified cache. This includes each complete or partial translation table walk that causes an access to memory, including to data or translation table walk caches. \n Kmeans C program with Dimentions size 40")
plt.xlabel("time in seconds")
plt.ylabel("L1 Cache misses")
# plt.plot(xpoints1, ypoints1)
plt.legend()
# plt.show()
plt.savefig('ll_tlb_40_dimentions.png')

View File

@@ -0,0 +1,358 @@
import matplotlib.pyplot as plt
import numpy as np
# ypoints = np.array([19636392729, 9856229208,9445728437,5148906386])
# xpoints = np.array([5,10,15,20])
# ypoints1 = np.array([10062197042, 9873241615,12034929886,5118684853])
# xpoints1 = np.array([5,10,15,20])
ypoints = np.array([int(x) for x in """32507
4034
27922
22075
45252
6514
45268
20768
78216
5116
4901
24579
30668
4423
12543
16230
20602
23792
29764
35176
22257
21233
22759
41562
5007
40803
15581
18344
4326
25407
37615
25375
19009
43028
31940
25065
20590
3655
39584
11664
16350
18779
3277
5144
26088
10985
25409
38962
19469
11783
24724
18592
31519
18800
10576
33770
11064
71505
8464
4462
22492
33959
4642
34880
4680
32584
4644
16117
21607
4376
4792
30989
18197
13420
27542
21644
22988
41102
37441
34021
13875
17100
43959
10988
25154
32953
18680
11657
37957
18279
26901
36833
10165
15802
23218
4811
26871
22496
12986
24293
16020
37425
17160
5464
54857
37666
30590
4896
4561
17568
15857
4497
33919
11669
19176
53357
12422
13431
21433
4551
20220
11167
4747
7006
24694
24494
52551
11999
80094
18621
9625
19697
18924
5664
39953
5258
9940
21864
4681
60347
4316
18867
17767
18939
13191
15379
4516
15721
19535
19272
44248
18811
21077
54181
29909
32954
12046
17235
37583
15340""".replace(' ',',').replace('\n','').split(",")])
xpoints = np.array([(i) for i, x in enumerate(ypoints, 1)])
ypoints1 = np.array([int(x) for x in """37838
4375
4755
13395
4663
17351
35495
41361
14851
3678
9728
7058
18282
34639
31071
4249
20021
3460
14453
12527
21730
39797
40936
3952
3572
35124
3157
24017
17363
14283
41690
3627
30967
10083
17288
8446
18369
12531
15990
22124
63165
11521
18297
30464
26297
4068
5461
62879
4968
25299
50562
4084
4528
4962
59035
4958
21144
35628
4261
4349
14859
36841
8263
17753
12513
15457
18778
4148
25284
18899
28869
16736
26025
7030
4598
13422
14592
14660
26539
23846
22503
3771
8567
31149
7480
19305
10491
4415
20470
15658
17870
11822
19760
22506
17256
18958
18275
26096
3780
20019
44296
27396
13735
24572
12058
4065
13409
18858
63139
41617
4256
16795
69961
8029
22993
82166
3994
4724
5504
28454
17037
29973
41238
18465
9060
4665
34217
5250
41130
36820
16737
4086
21270
55031
3988
25838
26389
38865
6083
23834
34979
3616
15021
4614
25599
18673
4572
18720
4562
38451
19787
32943
4457
4577
10062
34287
7733
21443
21917""".replace(' ',',').replace('\n','').split(",")])
xpoints1 = np.array([(i) for i, x in enumerate(ypoints1, 1)])
plt.plot(xpoints, ypoints,label='Malloc Physically contigous with bounds')
plt.plot(xpoints1, ypoints1,label='System memory allocator')
'''
DTLB_WALK
The counter counts each access counted by L1D_TLB that causes a
refill of a data or unified
TLB involving at least one translation table walk access.
This includes each complete or partial translation table walk that causes an
access to memory, including to data or translation table walk caches.
If Armv8.7 is not implemented, it is IMPLEMENTATION DEFINED whether accesses
that cause an update of an existing TLB entry involving at least one translation
table walk access are counted. If Armv8.7 is implemented, these accesses
are counted.
'''
# plt.title("Data TLB access, read \n ARM Performance counter: DTLB_WALK \n Data TLB access with at least one translation table walk \n This includes each complete or partial translation table walk that causes an access to memory, including to data or translation table walk caches. \n Kmeans C program with Cluster size 40")
plt.xlabel("time in seconds")
plt.ylabel("DTLB walks")
# plt.plot(xpoints1, ypoints1)
plt.legend()
# plt.show()
plt.savefig('d_tlb_walk_40_dimentions.png')

View File

@@ -0,0 +1,357 @@
import matplotlib.pyplot as plt
import numpy as np
# ypoints = np.array([19636392729, 9856229208,9445728437,5148906386])
# xpoints = np.array([5,10,15,20])
# ypoints1 = np.array([10062197042, 9873241615,12034929886,5118684853])
# xpoints1 = np.array([5,10,15,20])
ypoints = np.array([5271750211,
5947977060,
6406575235,
5511255729,
6423429240,
5094278723,
6242776302,
6297848739,
4590445845,
6764711612,
4610372742,
5903997396,
5747140551,
6300303767,
6640645385,
4818280514,
7823467298,
5828843492,
7619923263,
7891459023,
7387222066,
7941541977,
5433577677,
7362215737,
7053988636,
7387626023,
6945895832,
4915107460,
6745811484,
7802741433,
6808767570,
7717542941,
5557441777,
6274197189,
6839290749,
6583819269,
8175619486,
7374930361,
7496545906,
5787152431,
6970388902,
7150342762,
6374515148,
7086240550,
6014911926,
6805497356,
6787839300,
6029236409,
7045329429,
5463327288,
7023215119,
6305754943,
6040079901,
7642513816,
5399217904,
7615536076,
6947227611,
6886438575,
6525913645,
5704035737,
6001096710,
4595121294,
3891698114,
5754907462,
5581736391,
8438909738,
7281420759,
9120364283,
8975142455,
6194068545,
7645451782,
6244703959,
8436588830,
8530553210,
7617848374,
8172082546,
6812387244,
8703432529,
8613319990,
7501293173,
8216594940,
5673006642,
7168602771,
7846317702,
7094119540,
8854752613,
5455608081,
8407641178,
8338729110,
8119635911,
8981010962,
7495479592,
8554574662,
8404630428,
7519304345,
7136761544,
6528504686,
8236643504,
6831632676,
8347118009,
7641263754,
5707359038,
6748898177,
6066310601,
6943861727,
7098959658,
5212148705,
6824640874,
5583585529,
8003156647,
6415970122,
6830508723,
7041516118,
6892969782,
7126446374,
8238572592,
6702708346,
6612046729,
6731145590,
7182643495,
6166401716,
6391553234,
6638759846,
5539008636,
8406967616,
7660149216,
8431551979,
8269144799,
7734313131,
8403891519,
7258535328,
7776937659,
6064178686,
5770876015,
6982161319,
5235604055,
8101527192,
6046956898,
6827456214,
7874652143,
5025716700,
7506539290,
6196558003,
6656436732,
5956327575,
4626891040,
6350370528,
5249154115,
7566366652,
7035152421,
5894510533,
7071341874,
6305872895,
7188950553,
6518432441,
5956890819,
7441553601,
6285032471,
6776691911,
5916079446,
2984166525
])
xpoints = np.array([(i) for i, x in enumerate(ypoints, 1)])
ypoints1 = np.array([int(x) for x in """7320333725
8041544574
6359081713
7676718410
7408541973
8549261018
6455940864
7638044083
7852961154
8105713414
8099296359
8588846829
9264198897
7866569227
8241210929
8266772980
9025896341
8543734536
8436388827
8593700407
7449440289
8297109440
8213614706
9250000125
7852953217
8789498566
7365356677
7663656239
7930037512
7141236610
7737423168
8306296388
8693384934
7433924991
7878827892
7671595716
7150009037
8591898274
8167375582
8355489369
7173398288
8066437344
6594406377
7699310879
7502720090
7940562130
6738407130
7831934111
7551421487
8597892604
7251882911
7497411167
7623185317
6601524684
8174240923
7425424118
7689177096
5496078729
5695648325
7096458210
4812243000
8265423889
7406646505
8401794675
8029187256
8262191583
8410556911
8215142659
7977382227
8090414614
8943953292
7822463926
7959987169
7730265183
8736349787
8143049809
6640249510
7530281166
6842877170
7512789107
7638804649
7995198730
7496218179
7181518949
8254413848
8022381985
7361988882
7810130859
7417215012
7872443581
7732389294
7814055171
7463971008
8433179161
7010361542
8758722649
7834208169
7467025814
7909486359
7462899259
8890074348
8072645870
7422221759
8907995744
6612293480
7843416231
8411079708
9525606221
6937922478
7845436454
7864992534
7427672637
8619142087
8731377069
8885281498
7559808728
7173215681
7652102219
6717276768
8244303885
7151149289
7102114957
6526600396
7151648008
7526924470
8040860568
8175611289
7459798487
7145058572
6890657989
7345908520
8924306436
8931634035
8324005045
8599147593
8880835677
8165157302
7460488360
8628914421
8583302346
7934022758
7056421549
8275846606
7009386280
7495129707
7773552723
7645908705
8608406256
8712832214
7664452295
8321095578
8643168243
7250479737
7556324607
7738815689
6796106269
7213420720
7365304658
7297146598""".replace(' ',',').replace('\n','').split(",")])
# ypoints1 = np.array([1,2])
xpoints1 = np.array([(i) for i, x in enumerate(ypoints1, 1)])
plt.plot(xpoints, ypoints,label='Malloc Physically contigous with bounds')
plt.plot(xpoints1, ypoints1,label='System memory allocator')
'''
L1D_TLB
The counter counts each Memory-read operation or Memory-write operation that causes a TLB
access to at least the Level 1 data or unified TLB.
Each access to a TLB entry is counted including multiple accesses caused by single instructions
such as LDM or STM.
'''
# plt.title("Level 1 data TLB access, read \n ARM Performance counter: L1D_TLB_RD \n This counter counts each access counted by \n L1D_TLB that is a Memory-read operation. \n Kmeans C program with Cluster size 40")
plt.xlabel("time in seconds")
plt.ylabel("L1 DTLB reads")
# plt.plot(xpoints1, ypoints1)
plt.legend()
# plt.show()
plt.savefig('l1_tlb_40_dimentions.png')

View File

@@ -0,0 +1,347 @@
import matplotlib.pyplot as plt
import numpy as np
# ypoints = np.array([19636392729, 9856229208,9445728437,5148906386])
# xpoints = np.array([5,10,15,20])
# ypoints1 = np.array([10062197042, 9873241615,12034929886,5118684853])
# xpoints1 = np.array([5,10,15,20])
ypoints = np.array([int(x) for x in """66540
7859
23464
43214
27505
27462
46371
10104
65940
26508
18169
33410
35932
31967
61487
22289
61131
49936
8378
70970
64227
45327
14493
8585
34713
62427
27633
49391
28682
21025
30477
19946
34838
53935
51581
19594
17913
33452
57925
78362
9176
43589
57070
23447
28627
17297
54966
59315
52363
50624
26515
31190
106412
35441
10280
21075
9663
78816
48329
48742
40940
40585
33234
71473
21832
66627
18375
18306
34411
56034
24142
74324
34921
10427
65288
17961
30433
17538
33052
63611
15918
8983
47290
30154
68913
30144
68603
16772
76516
31663
50528
36797
27584
74728
9514
16252
34017
39159
73261
34238
9979
100145
30276
32994
26959
37082
82385
34030
65503
24471
22303
9260
24329
69294
34741
23791
43832
50302
98996
45543
35170
9195
9658
63685
21802
39287
35287
8836
113920
38764
23417
41543
11622
45682
57685
53500
13722
11203
22599
92580
40797
56990
81024
9030
45653
65413
17266
59900
33502
10976
28385
33838
61241
29094
36072
146101
8552
30128
51724
24090""".replace(' ',',').replace('\n','').split(",")])
xpoints = np.array([(i) for i, x in enumerate(ypoints, 1)])
ypoints1 = np.array([int(x) for x in """147309
24207
72608
53185
29916
62288
19733
20551
15416
33266
38374
37710
76787
38460
35339
15569
43172
40743
35956
52172
17231
32107
66245
78219
57454
37971
21077
38089
16171
26842
70623
61517
43946
16101
64700
15876
18604
52025
32854
48066
110412
74894
15982
16951
30104
67263
97568
71199
47570
60400
119246
46025
39649
61263
31674
18139
52567
106665
28508
50885
30868
64452
21987
104550
60096
35098
27626
26791
44735
24076
53037
18897
49820
44744
46927
58569
17651
45036
55358
31643
15816
75636
62402
17341
71459
41987
16640
15786
79108
60482
35872
21016
38518
17325
16738
84271
28477
52976
40236
51622
19197
15498
38114
34553
83946
108452
44795
39454
49442
22963
72816
64652
74099
22675
60850
76929
50585
61838
41130
45360
17933
70220
87695
19565
64806
78487
21187
56748
93777
53159
19220
33799
19743
31416
37750
67563
53070
18014
19133
39304
41509
16661
81493
53422
17376
15742
56450
49720
34734
47112
16915
17586
16895
79737
48293
35941
18742
54320
33438""".replace(' ',',').replace('\n','').split(",")])
xpoints1 = np.array([(i) for i, x in enumerate(ypoints1, 1)])
plt.plot(xpoints, ypoints,label='Malloc Physically contigous with bounds')
plt.plot(xpoints1, ypoints1,label='System memory allocator')
# plt.title("Level 2 data TLB acces, read \n ARM Performance counter: L2D_TLB \n The counter counts each Memory-read operation or Memory-write operation that causes a TLB access to at least the Level 2 data or unified TLB. \n Kmeans C program with Cluster size 40")
plt.xlabel("time in seconds")
plt.ylabel("L2 DTLB reads")
# plt.plot(xpoints1, ypoints1)
plt.legend()
# plt.show()
plt.savefig('l2_tlb_40_dimentions.png')

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

View File

@@ -0,0 +1,117 @@
import matplotlib.pyplot as plt
import numpy as np
# ypoints = np.array([19636392729, 9856229208,9445728437,5148906386])
# xpoints = np.array([5,10,15,20])
# ypoints1 = np.array([10062197042, 9873241615,12034929886,5118684853])
# xpoints1 = np.array([5,10,15,20])
ypoints = np.array(np.array([int(x) for x in """742051
559499
372615
383619
428808
336756
518580
390112
375579
421849
381810
384743
469525
421909
487489
337821
469539
366665
469249
509121
430155
375011
462737
530009
481996
427822
356143
528752
542248
493358
479450
425282
517723
426863
540465
466203
456952
499337
538226""".replace(' ',',').replace('\n','').split(",")]))
xpoints = np.array([(i) for i, x in enumerate(ypoints, 1)])
ypoints1 = np.array(np.array([int(x) for x in """736765
531488
423974
374492
554088
388215
374805
519748
474860
534621
535391
631809
496852
509826
519247
471033
508710
525277
501897
394173
493662
375646
431544
382177
630827
452712
556464
510118
534303
550329
574236
479424
575782
428647
508028
475290
491714
462188
294159""".replace(' ',',').replace('\n','').split(",")]))
xpoints1 = np.array([(i) for i, x in enumerate(ypoints1, 1)])
plt.plot(xpoints, ypoints,label='Malloc Physically contigous with bounds')
plt.plot(xpoints1, ypoints1,label='System memory allocator')
'''
L1D_CACHE_LMISS_RD
The counter counts each Memory-read operation to the Level 1 data or unified cache counted by L1D_CACHE that incurs additional latency because it returns data from outside of the Level 1 data or unified cache of this PE.
The event indicates to software that the access missed in the Level 1 data or unified cache and might have a significant performance impact due to the additional latency compared to the latency of an access that hits in the Level 1 data or unified cache.
The counter does not count:
• Accesses where the additional latency is unlikely to be significantly performance-impacting. For example, if the access hits in another cache in the same local cluster, and the additional latency is small when compared to a miss in all Level 1 caches that the access looks up in and results in an access being made to a Level 2 cache or elsewhere beyond the Level 1 data or unified cache.
• A miss that does not cause a new cache refill but is satisfied from a previous miss.
An implementation is not required to measure the latency, nor to track the access to determine whether the additional latency caused a performance impact. An implementation can extend the definition of this event with additional scenarios where an access might have a significant performance impact due to additional latency for the access.
It is IMPLEMENTATION DEFINED whether accesses that result from cache maintenance operations are counted.
If the cache is shared and the Effective value of PMEVTYPER<n>_EL0.MT for the counter is 0, then the counter counts only events Attributable to the PE counting the event. For a multithreaded processor implementation, if the cache is shared by PEs other than the PEs in the multithreaded processor and the Effective value of PMEVTYPER<n>_EL0.MT for the counter is 1, then the counter counts only events Attributable to PEs in the multithreaded processor. In all other cases, it is IMPLEMENTATION DEFINED whether only events Attributable to the PE counting the event or all events are counted, and might depend on the Effective value of PMEVTYPER<n>_EL1.MT.
PMCEID1_EL0[25] reads as 1 if this event is implemented and 0 otherwise. This event must be implemented if FEAT_PMUv3p4 is implemented.
'''
# plt.title("L1D cache miss read \n ARM Performance counter: L1D_CACHE_LMISS_RD \n each Memory-read operation or Memory-write operation that causes a cache \n access to at least the Level 1 data or unified cache. This includes each complete or partial translation table walk that causes an access to memory, including to data or translation table walk caches. \n Kmeans C program with Cluster size 6")
plt.xlabel("time in seconds")
plt.ylabel("DTLB walks")
# plt.plot(xpoints1, ypoints1)
plt.legend()
# plt.show()
plt.savefig('ll_kmeans_6_dimentions.png')

View File

@@ -0,0 +1,118 @@
import matplotlib.pyplot as plt
import numpy as np
# ypoints = np.array([19636392729, 9856229208,9445728437,5148906386])
# xpoints = np.array([5,10,15,20])
# ypoints1 = np.array([10062197042, 9873241615,12034929886,5118684853])
# xpoints1 = np.array([5,10,15,20])
ypoints = np.array([12140,
7054,
3621,
5391,
6391,
6235,
4067,
4433,
5248,
3321,
4790,
4832,
5783,
3709,
6746,
4699,
4452,
6665,
3209,
7217,
3974,
5167,
6708,
4311,
5803,
5319,
5280,
6898,
3960,
5857,
3792,
6350,
5911,
4862,
5997,
7540,
4661,
6060,
4739
])
xpoints = np.array([(i) for i, x in enumerate(ypoints, 1)])
ypoints1 = np.array([12300,
8615,
6314,
6995,
4796,
10032,
4414,
8960,
7265,
8670,
5075,
8384,
5986,
8500,
7639,
8565,
7414,
5646,
9956,
4638,
8766,
5357,
13762,
6227,
12425,
7081,
11306,
8253,
8411,
6267,
15571,
5383,
11586,
8497,
11189,
7123,
7342,
6345,
5933])
xpoints1 = np.array([(i) for i, x in enumerate(ypoints1, 1)])
plt.plot(xpoints, ypoints,label='Malloc Physically contigous with bounds')
plt.plot(xpoints1, ypoints1,label='System memory allocator')
'''
DTLB_WALK
The counter counts each access counted by L1D_TLB that causes a
refill of a data or unified
TLB involving at least one translation table walk access.
This includes each complete or partial translation table walk that causes an
access to memory, including to data or translation table walk caches.
If Armv8.7 is not implemented, it is IMPLEMENTATION DEFINED whether accesses
that cause an update of an existing TLB entry involving at least one translation
table walk access are counted. If Armv8.7 is implemented, these accesses
are counted.
'''
# plt.title("Data TLB access, read \n ARM Performance counter: DTLB_WALK \n Data TLB access with at least one translation table walk \n This includes each complete or partial translation table walk that causes an access to memory, including to data or translation table walk caches. \n Kmeans C program with Cluster size 6")
plt.xlabel("time in seconds")
plt.ylabel("DTLB walks")
# plt.plot(xpoints1, ypoints1)
plt.legend()
# plt.show()
plt.savefig('dtlb_walk_kmeans_6_dimentions.png')

View File

@@ -0,0 +1,113 @@
import matplotlib.pyplot as plt
import numpy as np
# ypoints = np.array([19636392729, 9856229208,9445728437,5148906386])
# xpoints = np.array([5,10,15,20])
# ypoints1 = np.array([10062197042, 9873241615,12034929886,5118684853])
# xpoints1 = np.array([5,10,15,20])
ypoints = np.array([2472219435,
3473628174,
3146805964,
2747609863,
3624063096,
2299770299,
2731333935,
2500798504,
2279879638,
3989040226,
2595662999,
3715651239,
3293638078,
2723808934,
4183888040,
2437497235,
3262957061,
3260647309,
2145129129,
3874909746,
2471935689,
3143457211,
3450920659,
2570835020,
4197209649,
3325832132,
3041911087,
3848617519,
1973739208,
3773139796,
2737410930,
2907858299,
3813970823,
2856501924,
3505228599,
2432178891,
2854895470,
3602152695,
2576232334
])
xpoints = np.array([(i) for i, x in enumerate(ypoints, 1)])
ypoints1 = np.array([3512147188,
2931698338,
3130637973,
2799013235,
3256184323,
2992132432,
3041359022,
3094813437,
3028071885,
3380696386,
3018331410,
2899603552,
3264907899,
3002822837,
3045671887,
3119204499,
2953573342,
2963606839,
2855193865,
3043260399,
2972252469,
2503069946,
2958386657,
3033810534,
3007362327,
3026500873,
3159826130,
2504328570,
4058464445,
3218889301,
3597912212,
4181723542,
3749432601,
3654586898,
3557679884,
3322970044,
3630597266,
3130958213,
1019981557])
xpoints1 = np.array([(i) for i, x in enumerate(ypoints1, 1)])
plt.plot(xpoints, ypoints,label='Malloc Physically contigous with bounds')
plt.plot(xpoints1, ypoints1,label='System memory allocator')
'''
L1D_TLB
The counter counts each Memory-read operation or Memory-write operation that causes a TLB
access to at least the Level 1 data or unified TLB.
Each access to a TLB entry is counted including multiple accesses caused by single instructions
such as LDM or STM.
'''
# plt.title("Level 1 data TLB access, read \n ARM Performance counter: L1D_TLB_RD \n This counter counts each access counted by \n L1D_TLB that is a Memory-read operation. \n Kmeans C program with Cluster size 6")
plt.xlabel("time in seconds")
plt.ylabel("L1 DTLB reads")
# plt.plot(xpoints1, ypoints1)
plt.legend()
# plt.show()
plt.savefig('l1_tlb_6_dimentions.png')

View File

@@ -0,0 +1,114 @@
import matplotlib.pyplot as plt
import numpy as np
# ypoints = np.array([19636392729, 9856229208,9445728437,5148906386])
# xpoints = np.array([5,10,15,20])
# ypoints1 = np.array([10062197042, 9873241615,12034929886,5118684853])
# xpoints1 = np.array([5,10,15,20])
ypoints = np.array([72589,
169120,
35199,
71459,
55242,
83325,
144975,
55231,
73573,
103593,
122123,
88845,
99314,
32081,
130112,
117455,
73731,
90279,
93552,
136261,
35079,
81254,
93388,
79594,
173510,
51158,
140234,
64106,
45336,
178182,
38224,
101736,
104410,
57382,
141596,
59233,
84714,
74438,
55860])
xpoints = np.array([(i) for i, x in enumerate(ypoints, 1)])
ypoints1 = np.array([132941,
85450,
47978,
100585,
137429,
65503,
46820,
57147,
94444,
112309,
62289,
91219,
34585,
89262,
68500,
77858,
41711,
53555,
43719,
122750,
57234,
139151,
58964,
85669,
50914,
75187,
80292,
126473,
102653,
104636,
123366,
79591,
63819,
55965,
106456,
34263,
113263,
71477])
xpoints1 = np.array([(i) for i, x in enumerate(ypoints1, 1)])
plt.plot(xpoints, ypoints,label='Malloc Physically contigous with bounds')
plt.plot(xpoints1, ypoints1,label='System memory allocator')
'''
DTLB_WALK
The counter counts each Memory-read operation or Memory-write operation that causes a
TLB access to at least the Level 2 data or unified TLB.
Each access to a TLB entry is counted including refills
of Level 1 TLBs.
The counter does not count the access if the access i
s due to a TLB maintenance instruction.
'''
# plt.title("Level 2 data TLB acces, read \n ARM Performance counter: L2D_TLB \n The counter counts each Memory-read operation or Memory-write operation that causes a TLB access to at least the Level 2 data or unified TLB. \n Kmeans C program with Cluster size 6")
plt.xlabel("time in seconds")
plt.ylabel("L2 DTLB reads")
# plt.plot(xpoints1, ypoints1)
plt.legend()
# plt.show()
plt.savefig('l2_tlb_6_dimentions.png')

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

View File

View File

@@ -0,0 +1,102 @@
import matplotlib.pyplot as plt
import numpy as np
dim3_physically_contigous = np.array([2100870])
dmin_3_physically_contigous = sum(dim3_physically_contigous)
dim3_regular = np.array([19384360])
dmin_3_regular = sum(dim3_regular)
dim6_contigous = np.array(np.array([int(x) for x in """7409968
5549675""".replace(' ',',').replace('\n','').split(",")]))
dim_6_contigous = sum(dim6_contigous)
print(dim_6_contigous)
dim6_regular = np.array(np.array([int(x) for x in """3946380
3530306""".replace(' ',',').replace('\n','').split(",")]))
dim_6_regular = sum(dim6_regular)
dim40_contigous = np.array(np.array([int(x) for x in """5527931
8487180
8358903
8502471
9044249
4808340""".replace(' ',',').replace('\n','').split(",")]))
dim_40_contigous = sum(dim40_contigous)
dim40_regular = np.array(np.array([int(x) for x in """4215408
4561976
4696311
4662084
4618990
2799270""".replace(' ',',').replace('\n','').split(",")]))
dim_40_regular = sum(dim40_regular)
# dimentions = ("3-dementions", "6-dementions", "40-dementions")
# comparitors = {
# 'FAT-Pointer based range address': (dmin_3_physically_contigous, dim_6_contigous, dim_40_contigous),
# 'System Allocator': (dmin_3_regular, dim_6_regular, dim_40_regular),
# }
# x = np.arange(len(dimentions)) # the label locations
# width = 0.25 # the width of the bars
# multiplier = 0
# fig, ax = plt.subplots(layout='constrained')
# for attribute, measurement in comparitors.items():
# offset = width * multiplier
# rects = ax.bar(x + offset, measurement, width, label=attribute)
# ax.bar_label(rects, padding=3)
# multiplier += 1
# # Add some text for labels, title and custom x-axis tick labels, etc.
# ax.set_ylabel('DTLB L1 reads')
# ax.set_title('L1D_TLB')
# ax.set_xticks(x + width, dimentions)
# ax.legend(loc='upper left', ncols=2)
# ax.set_ylim(0, 250)
# plt.show()
# Sample data
categories = ['Size Small', 'Size Medium', 'Size Large']
group_1 = [dmin_3_physically_contigous, dim_6_contigous, dim_40_contigous]
group_2 = [dmin_3_regular, dim_6_regular, dim_40_regular]
# Number of categories
n = len(categories)
# Create a bar width
bar_width = 0.25
# Create an array with the positions of the bars on the x-axis
r1 = np.arange(n)
r2 = [x + bar_width for x in r1]
# r3 = [x + bar_width for x in r2]
# Create the grouped bar graph
plt.bar(r1, group_1, color='b', width=bar_width, edgecolor='grey', label='FAT-Pointer based range based addresses')
plt.bar(r2, group_2, color='g', width=bar_width, edgecolor='grey', label='System memory allocator')
# plt.bar(r3, group_3, color='r', width=bar_width, edgecolor='grey', label='Group 3')
# Add xticks on the middle of the grouped bars
plt.xlabel('Size of Histogram COZ', fontweight='bold')
plt.xticks([r + bar_width for r in range(n)], categories)
# Add labels and title
plt.ylabel('L1 cache miss', fontweight='bold')
plt.title('Sum of L1 cache misses')
# Add a legend
plt.legend()
# Show the plot
# plt.show()
plt.savefig('l1-miss-Histogram.png')

View File

@@ -0,0 +1,101 @@
import matplotlib.pyplot as plt
import numpy as np
dim3_physically_contigous = ypoints = np.array([947507000])
dmin_3_physically_contigous = sum(dim3_physically_contigous)
dim3_regular = ypoints = np.array([771906538])
dmin_3_regular = sum(dim3_regular)
dim6_contigous = np.array([int(x) for x in """2031641198
1792581571""".replace(' ',',').replace('\n','').split(",")])
dim_6_contigous = sum(dim6_contigous)
dim6_regular = np.array([int(x) for x in """2041386981
2064066636""".replace(' ',',').replace('\n','').split(",")])
dim_6_regular = sum(dim6_regular)
dim40_contigous = np.array([int(x) for x in """2470621494
2375100932
2670296613
2645401007
2876843895
1166193957""".replace(' ',',').replace('\n','').split(",")])
dim_40_contigous = sum(dim40_contigous)
dim40_regular = np.array([int(x) for x in """2273131353
2561823604
2693697356
2606093836
2631231896
1161666024""".replace(' ',',').replace('\n','').split(",")])
dim_40_regular = sum(dim40_regular)
# dimentions = ("3-dementions", "6-dementions", "40-dementions")
# comparitors = {
# 'FAT-Pointer based range address': (dmin_3_physically_contigous, dim_6_contigous, dim_40_contigous),
# 'System Allocator': (dmin_3_regular, dim_6_regular, dim_40_regular),
# }
# x = np.arange(len(dimentions)) # the label locations
# width = 0.25 # the width of the bars
# multiplier = 0
# fig, ax = plt.subplots(layout='constrained')
# for attribute, measurement in comparitors.items():
# offset = width * multiplier
# rects = ax.bar(x + offset, measurement, width, label=attribute)
# ax.bar_label(rects, padding=3)
# multiplier += 1
# # Add some text for labels, title and custom x-axis tick labels, etc.
# ax.set_ylabel('DTLB L1 reads')
# ax.set_title('L1D_TLB')
# ax.set_xticks(x + width, dimentions)
# ax.legend(loc='upper left', ncols=2)
# ax.set_ylim(0, 250)
# plt.show()
# Sample data
categories = ['Size Small', 'Size Medium', 'Size Large']
group_1 = [dmin_3_physically_contigous, dim_6_contigous, dim_40_contigous]
group_2 = [dmin_3_regular, dim_6_regular, dim_40_regular]
# Number of categories
n = len(categories)
# Create a bar width
bar_width = 0.25
# Create an array with the positions of the bars on the x-axis
r1 = np.arange(n)
r2 = [x + bar_width for x in r1]
# r3 = [x + bar_width for x in r2]
# Create the grouped bar graph
plt.bar(r1, group_1, color='b', width=bar_width, edgecolor='grey', label='FAT-Pointer based range based addresses')
plt.bar(r2, group_2, color='g', width=bar_width, edgecolor='grey', label='System memory allocator')
# plt.bar(r3, group_3, color='r', width=bar_width, edgecolor='grey', label='Group 3')
# Add xticks on the middle of the grouped bars
plt.xlabel('Size of Histogram COZ', fontweight='bold')
plt.xticks([r + bar_width for r in range(n)], categories)
# Add labels and title
plt.ylabel('DTLB L1 reads', fontweight='bold')
plt.title('Sum of DTLB L1 reads')
# Add a legend
plt.legend()
# Show the plot
# plt.show()
plt.savefig('l1-tlb-Histogram.png')

View File

@@ -0,0 +1,101 @@
import matplotlib.pyplot as plt
import numpy as np
dim3_physically_contigous = np.array([64140])
dmin_3_physically_contigous = sum(dim3_physically_contigous)
dim3_regular = np.array([46518])
dmin_3_regular = sum(dim3_regular)
dim6_contigous = np.array([int(x) for x in """159185
95485""".replace(' ',',').replace('\n','').split(",")])
dim_6_contigous = sum(dim6_contigous)
dim6_regular = np.array([int(x) for x in """137015
89117""".replace(' ',',').replace('\n','').split(",")])
dim_6_regular = sum(dim6_regular)
dim40_contigous = np.array([int(x) for x in """140262
156781
156217
155686
139859
80438""".replace(' ',',').replace('\n','').split(",")])
dim_40_contigous = sum(dim40_contigous)
dim40_regular = np.array([int(x) for x in """121530
144628
154478
143992
148316
86682""".replace(' ',',').replace('\n','').split(",")])
dim_40_regular = sum(dim40_regular)
# dimentions = ("3-dementions", "6-dementions", "40-dementions")
# comparitors = {
# 'FAT-Pointer based range address': (dmin_3_physically_contigous, dim_6_contigous, dim_40_contigous),
# 'System Allocator': (dmin_3_regular, dim_6_regular, dim_40_regular),
# }
# x = np.arange(len(dimentions)) # the label locations
# width = 0.25 # the width of the bars
# multiplier = 0
# fig, ax = plt.subplots(layout='constrained')
# for attribute, measurement in comparitors.items():
# offset = width * multiplier
# rects = ax.bar(x + offset, measurement, width, label=attribute)
# ax.bar_label(rects, padding=3)
# multiplier += 1
# # Add some text for labels, title and custom x-axis tick labels, etc.
# ax.set_ylabel('DTLB L1 reads')
# ax.set_title('L1D_TLB')
# ax.set_xticks(x + width, dimentions)
# ax.legend(loc='upper left', ncols=2)
# ax.set_ylim(0, 250)
# plt.show()
# Sample data
categories = ['Size Small', 'Size Medium', 'Size Large']
group_1 = [dmin_3_physically_contigous, dim_6_contigous, dim_40_contigous]
group_2 = [dmin_3_regular, dim_6_regular, dim_40_regular]
# Number of categories
n = len(categories)
# Create a bar width
bar_width = 0.25
# Create an array with the positions of the bars on the x-axis
r1 = np.arange(n)
r2 = [x + bar_width for x in r1]
# r3 = [x + bar_width for x in r2]
# Create the grouped bar graph
plt.bar(r1, group_1, color='b', width=bar_width, edgecolor='grey', label='FAT-Pointer based range based addresses')
plt.bar(r2, group_2, color='g', width=bar_width, edgecolor='grey', label='System memory allocator')
# plt.bar(r3, group_3, color='r', width=bar_width, edgecolor='grey', label='Group 3')
# Add xticks on the middle of the grouped bars
plt.xlabel('Size of Histogram COZ', fontweight='bold')
plt.xticks([r + bar_width for r in range(n)], categories)
# Add labels and title
plt.ylabel('DTLB L2 reads', fontweight='bold')
plt.title('Sum of DTLB L2 reads')
# Add a legend
plt.legend()
# Show the plot
# plt.show()
plt.savefig('l2-tlb-Histogram.png')

View File

@@ -0,0 +1,101 @@
import matplotlib.pyplot as plt
import numpy as np
dim3_physically_contigous = np.array([18523])
dmin_3_physically_contigous = sum(dim3_physically_contigous)
dim3_regular = np.array([16667])
dmin_3_regular = sum(dim3_regular)
dim6_contigous = np.array([int(x) for x in """60650
38635""".replace(' ',',').replace('\n','').split(",")])
dim_6_contigous = sum(dim6_contigous)
dim6_regular = np.array([int(x) for x in """41348
39676""".replace(' ',',').replace('\n','').split(",")])
dim_6_regular = sum(dim6_regular)
dim40_contigous = np.array([int(x) for x in """61346
61955
64896
64751
64359
24896""".replace(' ',',').replace('\n','').split(",")])
dim_40_contigous = sum(dim40_contigous)
dim40_regular = np.array([int(x) for x in """48953
74277
52782
64321
64184
36170""".replace(' ',',').replace('\n','').split(",")])
dim_40_regular = sum(dim40_regular)
# dimentions = ("3-dementions", "6-dementions", "40-dementions")
# comparitors = {
# 'FAT-Pointer based range address': (dmin_3_physically_contigous, dim_6_contigous, dim_40_contigous),
# 'System Allocator': (dmin_3_regular, dim_6_regular, dim_40_regular),
# }
# x = np.arange(len(dimentions)) # the label locations
# width = 0.25 # the width of the bars
# multiplier = 0
# fig, ax = plt.subplots(layout='constrained')
# for attribute, measurement in comparitors.items():
# offset = width * multiplier
# rects = ax.bar(x + offset, measurement, width, label=attribute)
# ax.bar_label(rects, padding=3)
# multiplier += 1
# # Add some text for labels, title and custom x-axis tick labels, etc.
# ax.set_ylabel('DTLB L1 reads')
# ax.set_title('L1D_TLB')
# ax.set_xticks(x + width, dimentions)
# ax.legend(loc='upper left', ncols=2)
# ax.set_ylim(0, 250)
# plt.show()
# Sample data
categories = ['Size Small', 'Size Medium', 'Size Large']
group_1 = [dmin_3_physically_contigous, dim_6_contigous, dim_40_contigous]
group_2 = [dmin_3_regular, dim_6_regular, dim_40_regular]
# Number of categories
n = len(categories)
# Create a bar width
bar_width = 0.25
# Create an array with the positions of the bars on the x-axis
r1 = np.arange(n)
r2 = [x + bar_width for x in r1]
# r3 = [x + bar_width for x in r2]
# Create the grouped bar graph
plt.bar(r1, group_1, color='b', width=bar_width, edgecolor='grey', label='FAT-Pointer based range based addresses')
plt.bar(r2, group_2, color='g', width=bar_width, edgecolor='grey', label='System memory allocator')
# plt.bar(r3, group_3, color='r', width=bar_width, edgecolor='grey', label='Group 3')
# Add xticks on the middle of the grouped bars
plt.xlabel('Size of Histogram COZ', fontweight='bold')
plt.xticks([r + bar_width for r in range(n)], categories)
# Add labels and title
plt.ylabel('DTLB walks', fontweight='bold')
plt.title('Sum of DTLB walks')
# Add a legend
plt.legend()
# Show the plot
# plt.show()
plt.savefig('tlb-walk-Histogram.png')

View File

@@ -0,0 +1,517 @@
import matplotlib.pyplot as plt
import numpy as np
dim3_physically_contigous = np.array(np.array([int(x) for x in """836772
495429
446419
366613
397234
505776
356928
449455
480582
427964
400058
420493
452870
499538
419145
443761
417189
370320""".replace(' ',',').replace('\n','').split(",")]))
dmin_3_physically_contigous = sum(dim3_physically_contigous)
dim3_regular = np.array(np.array([int(x) for x in """723197
556124
352857
538444
628566
751980
602713
550526
530137
529691
430821
390686
418356
520712
515506
676283
659655
523928""".replace(' ',',').replace('\n','').split(",")]))
dmin_3_regular = sum(dim3_regular)
dim6_contigous = np.array(np.array([int(x) for x in """742051
559499
372615
383619
428808
336756
518580
390112
375579
421849
381810
384743
469525
421909
487489
337821
469539
366665
469249
509121
430155
375011
462737
530009
481996
427822
356143
528752
542248
493358
479450
425282
517723
426863
540465
466203
456952
499337
538226""".replace(' ',',').replace('\n','').split(",")]))
dim_6_contigous = sum(dim6_contigous)
dim6_regular = np.array(np.array([int(x) for x in """736765
531488
423974
374492
554088
388215
374805
519748
474860
534621
535391
631809
496852
509826
519247
471033
508710
525277
501897
394173
493662
375646
431544
382177
630827
452712
556464
510118
534303
550329
574236
479424
575782
428647
508028
475290
491714
462188
294159""".replace(' ',',').replace('\n','').split(",")]))
dim_6_regular = sum(dim6_regular)
dim40_contigous = np.array(np.array([int(x) for x in """1147403
829036
563124
979733
683541
618378
905917
561979
902313
823260
499959
627898
915499
646610
739437
945235
541299
637887
842954
703414
1291380
675118
671111
585563
585483
951820
791179
701760
552971
696260
902072
815292
826315
740385
805546
736227
690416
769363
825820
1027783
797795
863187
834350
548714
759409
667769
840026
861216
895136
719523
504731
959369
1052167
668707
558918
778832
681806
1268380
825940
874677
670802
808349
653938
996132
769110
1077410
714249
660753
551064
867647
556815
687308
780915
604863
936983
818984
697969
1063845
722724
864795
791971
489493
678041
514280
784758
643920
896146
567640
854350
548957
583866
880357
589791
604616
560377
527240
673535
503032
851726
484139
649485
978010
641704
488143
710347
808049
1035491
695389
441112
929079
622864
516002
902311
783120
687561
687898
525210
731349
1332534
537479
542351
511237
564299
859176
713889
901452
631327
681258
1035948
634997
455623
851931
612646
902292
787158
660371
791336
702494
644624
764093
946863
984181
666091
571202
590691
1160676
624435
677302
491699
870564
1096683
701710
767120
886663
847346
726936
828216
731833
1143815
893945
446303""".replace(' ',',').replace('\n','').split(",")]))
dim_40_contigous = sum(dim40_contigous)
dim40_regular = np.array(np.array([int(x) for x in """1603321
906001
831508
1260778
874222
639952
811423
876933
871938
845695
811517
1078035
1155039
931630
734393
1040144
897608
567688
1017724
816640
1156306
1182610
2087536
935131
564650
781929
1032678
842187
714283
1512066
903441
821687
750216
1623056
1113602
602318
1056833
829348
924366
917254
1417581
1056215
534696
957581
873314
615740
793892
1166512
508943
509190
656245
1304353
909374
638685
1848084
1067142
543667
591408
1215657
952755
1191746
1779363
780965
966607
618025
1082331
1177658
1136390
1914232
570957
846572
577331
1232137
1037267
1262158
1029892
1122356
995490
1174365
1340139
1097573
621145
649356
1082100
792184
1046410
1217530
952589
634895
866331
1560533
870354
692937
1249514
731255
899044
1132861
871474
1440239
1109188
915075
1625844
811510
845837
680654
1527778
556130
761597
1452068
856231
729522
670614
1449778
554624
965716
1030135
1018319
609395
630688
1379329
674255
808523
1098093
1502941
689121
901665
1173878
637713
756162
988917
959839
581439
618517
1482465
539794
982852
878227
1259422
774118
667883
1238176
1393325
721119
1185418
1324310
605043
1029433
1029119
582207
1028124
844517
1594356
1175972
910822
660335
973991
1048600
521274
1771930""".replace(' ',',').replace('\n','').split(",")]))
dim_40_regular = sum(dim40_regular)
# dimentions = ("3-dementions", "6-dementions", "40-dementions")
# comparitors = {
# 'FAT-Pointer based range address': (dmin_3_physically_contigous, dim_6_contigous, dim_40_contigous),
# 'System Allocator': (dmin_3_regular, dim_6_regular, dim_40_regular),
# }
# x = np.arange(len(dimentions)) # the label locations
# width = 0.25 # the width of the bars
# multiplier = 0
# fig, ax = plt.subplots(layout='constrained')
# for attribute, measurement in comparitors.items():
# offset = width * multiplier
# rects = ax.bar(x + offset, measurement, width, label=attribute)
# ax.bar_label(rects, padding=3)
# multiplier += 1
# # Add some text for labels, title and custom x-axis tick labels, etc.
# ax.set_ylabel('DTLB L1 reads')
# ax.set_title('L1D_TLB')
# ax.set_xticks(x + width, dimentions)
# ax.legend(loc='upper left', ncols=2)
# ax.set_ylim(0, 250)
# plt.show()
# Sample data
categories = ['3 dimentions', '6 dimentions', '40 dimentions']
group_1 = [dmin_3_physically_contigous, dim_6_contigous, dim_40_contigous]
group_2 = [dmin_3_regular, dim_6_regular, dim_40_regular]
# Number of categories
n = len(categories)
# Create a bar width
bar_width = 0.25
# Create an array with the positions of the bars on the x-axis
r1 = np.arange(n)
r2 = [x + bar_width for x in r1]
# r3 = [x + bar_width for x in r2]
# Create the grouped bar graph
plt.bar(r1, group_1, color='b', width=bar_width, edgecolor='grey', label='FAT-Pointer based range based addresses')
plt.bar(r2, group_2, color='g', width=bar_width, edgecolor='grey', label='System memory allocator')
# plt.bar(r3, group_3, color='r', width=bar_width, edgecolor='grey', label='Group 3')
# Add xticks on the middle of the grouped bars
plt.xlabel('Number of dimentions COZ kmeans', fontweight='bold')
plt.xticks([r + bar_width for r in range(n)], categories)
# Add labels and title
plt.ylabel('L1 cache miss', fontweight='bold')
plt.title('Sum of L1 cache misses')
# Add a legend
plt.legend()
# Show the plot
# plt.show()
plt.savefig('l1-miss-kmeans.png')

View File

@@ -0,0 +1,517 @@
import matplotlib.pyplot as plt
import numpy as np
dim3_physically_contigous = np.array([1944100892,
1929198745,
2147407618,
2361683504,
2229290045,
1936107919,
1950196981,
2316564611,
2415777784,
2251930639,
1917048962,
2122919883,
2305445935,
2216085132,
2061970506,
2077573288,
2415427574])
dmin_3_physically_contigous = sum(dim3_physically_contigous)
dim3_regular = np.array([2001205195,
2037350408,
2077998800,
2064361816,
2370004326,
2366505116,
2433485997,
2388982491,
2622710065,
2231849577,
2213896383,
1971144730,
2279336623,
2384236727,
2159066740,
1872922315,
2046840068])
dmin_3_regular = sum(dim3_regular)
dim6_contigous = np.array([2472219435,
3473628174,
3146805964,
2747609863,
3624063096,
2299770299,
2731333935,
2500798504,
2279879638,
3989040226,
2595662999,
3715651239,
3293638078,
2723808934,
4183888040,
2437497235,
3262957061,
3260647309,
2145129129,
3874909746,
2471935689,
3143457211,
3450920659,
2570835020,
4197209649,
3325832132,
3041911087,
3848617519,
1973739208,
3773139796,
2737410930,
2907858299,
3813970823,
2856501924,
3505228599,
2432178891,
2854895470,
3602152695,
2576232334
])
dim_6_contigous = sum(dim6_contigous)
dim6_regular = np.array([3512147188,
2931698338,
3130637973,
2799013235,
3256184323,
2992132432,
3041359022,
3094813437,
3028071885,
3380696386,
3018331410,
2899603552,
3264907899,
3002822837,
3045671887,
3119204499,
2953573342,
2963606839,
2855193865,
3043260399,
2972252469,
2503069946,
2958386657,
3033810534,
3007362327,
3026500873,
3159826130,
2504328570,
4058464445,
3218889301,
3597912212,
4181723542,
3749432601,
3654586898,
3557679884,
3322970044,
3630597266,
3130958213,
1019981557])
dim_6_regular = sum(dim6_regular)
dim40_contigous = np.array([5271750211,
5947977060,
6406575235,
5511255729,
6423429240,
5094278723,
6242776302,
6297848739,
4590445845,
6764711612,
4610372742,
5903997396,
5747140551,
6300303767,
6640645385,
4818280514,
7823467298,
5828843492,
7619923263,
7891459023,
7387222066,
7941541977,
5433577677,
7362215737,
7053988636,
7387626023,
6945895832,
4915107460,
6745811484,
7802741433,
6808767570,
7717542941,
5557441777,
6274197189,
6839290749,
6583819269,
8175619486,
7374930361,
7496545906,
5787152431,
6970388902,
7150342762,
6374515148,
7086240550,
6014911926,
6805497356,
6787839300,
6029236409,
7045329429,
5463327288,
7023215119,
6305754943,
6040079901,
7642513816,
5399217904,
7615536076,
6947227611,
6886438575,
6525913645,
5704035737,
6001096710,
4595121294,
3891698114,
5754907462,
5581736391,
8438909738,
7281420759,
9120364283,
8975142455,
6194068545,
7645451782,
6244703959,
8436588830,
8530553210,
7617848374,
8172082546,
6812387244,
8703432529,
8613319990,
7501293173,
8216594940,
5673006642,
7168602771,
7846317702,
7094119540,
8854752613,
5455608081,
8407641178,
8338729110,
8119635911,
8981010962,
7495479592,
8554574662,
8404630428,
7519304345,
7136761544,
6528504686,
8236643504,
6831632676,
8347118009,
7641263754,
5707359038,
6748898177,
6066310601,
6943861727,
7098959658,
5212148705,
6824640874,
5583585529,
8003156647,
6415970122,
6830508723,
7041516118,
6892969782,
7126446374,
8238572592,
6702708346,
6612046729,
6731145590,
7182643495,
6166401716,
6391553234,
6638759846,
5539008636,
8406967616,
7660149216,
8431551979,
8269144799,
7734313131,
8403891519,
7258535328,
7776937659,
6064178686,
5770876015,
6982161319,
5235604055,
8101527192,
6046956898,
6827456214,
7874652143,
5025716700,
7506539290,
6196558003,
6656436732,
5956327575,
4626891040,
6350370528,
5249154115,
7566366652,
7035152421,
5894510533,
7071341874,
6305872895,
7188950553,
6518432441,
5956890819,
7441553601,
6285032471,
6776691911,
5916079446,
2984166525
])
dim_40_contigous = sum(dim40_contigous)
dim40_regular = np.array([int(x) for x in """7320333725
8041544574
6359081713
7676718410
7408541973
8549261018
6455940864
7638044083
7852961154
8105713414
8099296359
8588846829
9264198897
7866569227
8241210929
8266772980
9025896341
8543734536
8436388827
8593700407
7449440289
8297109440
8213614706
9250000125
7852953217
8789498566
7365356677
7663656239
7930037512
7141236610
7737423168
8306296388
8693384934
7433924991
7878827892
7671595716
7150009037
8591898274
8167375582
8355489369
7173398288
8066437344
6594406377
7699310879
7502720090
7940562130
6738407130
7831934111
7551421487
8597892604
7251882911
7497411167
7623185317
6601524684
8174240923
7425424118
7689177096
5496078729
5695648325
7096458210
4812243000
8265423889
7406646505
8401794675
8029187256
8262191583
8410556911
8215142659
7977382227
8090414614
8943953292
7822463926
7959987169
7730265183
8736349787
8143049809
6640249510
7530281166
6842877170
7512789107
7638804649
7995198730
7496218179
7181518949
8254413848
8022381985
7361988882
7810130859
7417215012
7872443581
7732389294
7814055171
7463971008
8433179161
7010361542
8758722649
7834208169
7467025814
7909486359
7462899259
8890074348
8072645870
7422221759
8907995744
6612293480
7843416231
8411079708
9525606221
6937922478
7845436454
7864992534
7427672637
8619142087
8731377069
8885281498
7559808728
7173215681
7652102219
6717276768
8244303885
7151149289
7102114957
6526600396
7151648008
7526924470
8040860568
8175611289
7459798487
7145058572
6890657989
7345908520
8924306436
8931634035
8324005045
8599147593
8880835677
8165157302
7460488360
8628914421
8583302346
7934022758
7056421549
8275846606
7009386280
7495129707
7773552723
7645908705
8608406256
8712832214
7664452295
8321095578
8643168243
7250479737
7556324607
7738815689
6796106269
7213420720
7365304658
7297146598""".replace(' ',',').replace('\n','').split(",")])
dim_40_regular = sum(dim40_regular)
# dimentions = ("3-dementions", "6-dementions", "40-dementions")
# comparitors = {
# 'FAT-Pointer based range address': (dmin_3_physically_contigous, dim_6_contigous, dim_40_contigous),
# 'System Allocator': (dmin_3_regular, dim_6_regular, dim_40_regular),
# }
# x = np.arange(len(dimentions)) # the label locations
# width = 0.25 # the width of the bars
# multiplier = 0
# fig, ax = plt.subplots(layout='constrained')
# for attribute, measurement in comparitors.items():
# offset = width * multiplier
# rects = ax.bar(x + offset, measurement, width, label=attribute)
# ax.bar_label(rects, padding=3)
# multiplier += 1
# # Add some text for labels, title and custom x-axis tick labels, etc.
# ax.set_ylabel('DTLB L1 reads')
# ax.set_title('L1D_TLB')
# ax.set_xticks(x + width, dimentions)
# ax.legend(loc='upper left', ncols=2)
# ax.set_ylim(0, 250)
# plt.show()
# Sample data
categories = ['3 dimentions', '6 dimentions', '40 dimentions']
group_1 = [dmin_3_physically_contigous, dim_6_contigous, dim_40_contigous]
group_2 = [dmin_3_regular, dim_6_regular, dim_40_regular]
# Number of categories
n = len(categories)
# Create a bar width
bar_width = 0.25
# Create an array with the positions of the bars on the x-axis
r1 = np.arange(n)
r2 = [x + bar_width for x in r1]
# r3 = [x + bar_width for x in r2]
# Create the grouped bar graph
plt.bar(r1, group_1, color='b', width=bar_width, edgecolor='grey', label='FAT-Pointer based range based addresses')
plt.bar(r2, group_2, color='g', width=bar_width, edgecolor='grey', label='System memory allocator')
# plt.bar(r3, group_3, color='r', width=bar_width, edgecolor='grey', label='Group 3')
# Add xticks on the middle of the grouped bars
plt.xlabel('Number of dimentions COZ kmeans', fontweight='bold')
plt.xticks([r + bar_width for r in range(n)], categories)
# Add labels and title
plt.ylabel('DTLB L1 reads', fontweight='bold')
plt.title('Sum of DTLB L1 reads')
# Add a legend
plt.legend()
# Show the plot
# plt.show()
plt.savefig('l1-tlb-kmeans.png')

View File

@@ -0,0 +1,515 @@
import matplotlib.pyplot as plt
import numpy as np
dim3_physically_contigous = np.array([78303,
34734,
129682,
93214,
59616,
111134,
75559,
85767,
96804,
87956,
83874,
72777,
80302,
59289,
105762,
62793,
78365,
77091])
dmin_3_physically_contigous = sum(dim3_physically_contigous)
dim3_regular = np.array([127978,
79046,
67101,
99081,
186824,
111734,
120426,
65293,
112589,
113350,
110875,
74596,
86142,
77054,
106211,
133301,
109764,
68751])
dmin_3_regular = sum(dim3_regular)
dim6_contigous = np.array([72589,
169120,
35199,
71459,
55242,
83325,
144975,
55231,
73573,
103593,
122123,
88845,
99314,
32081,
130112,
117455,
73731,
90279,
93552,
136261,
35079,
81254,
93388,
79594,
173510,
51158,
140234,
64106,
45336,
178182,
38224,
101736,
104410,
57382,
141596,
59233,
84714,
74438,
55860])
dim_6_contigous = sum(dim6_contigous)
dim6_regular = np.array([132941,
85450,
47978,
100585,
137429,
65503,
46820,
57147,
94444,
112309,
62289,
91219,
34585,
89262,
68500,
77858,
41711,
53555,
43719,
122750,
57234,
139151,
58964,
85669,
50914,
75187,
80292,
126473,
102653,
104636,
123366,
79591,
63819,
55965,
106456,
34263,
113263,
71477])
dim_6_regular = sum(dim6_regular)
dim40_contigous = np.array([int(x) for x in """66540
7859
23464
43214
27505
27462
46371
10104
65940
26508
18169
33410
35932
31967
61487
22289
61131
49936
8378
70970
64227
45327
14493
8585
34713
62427
27633
49391
28682
21025
30477
19946
34838
53935
51581
19594
17913
33452
57925
78362
9176
43589
57070
23447
28627
17297
54966
59315
52363
50624
26515
31190
106412
35441
10280
21075
9663
78816
48329
48742
40940
40585
33234
71473
21832
66627
18375
18306
34411
56034
24142
74324
34921
10427
65288
17961
30433
17538
33052
63611
15918
8983
47290
30154
68913
30144
68603
16772
76516
31663
50528
36797
27584
74728
9514
16252
34017
39159
73261
34238
9979
100145
30276
32994
26959
37082
82385
34030
65503
24471
22303
9260
24329
69294
34741
23791
43832
50302
98996
45543
35170
9195
9658
63685
21802
39287
35287
8836
113920
38764
23417
41543
11622
45682
57685
53500
13722
11203
22599
92580
40797
56990
81024
9030
45653
65413
17266
59900
33502
10976
28385
33838
61241
29094
36072
146101
8552
30128
51724
24090""".replace(' ',',').replace('\n','').split(",")])
dim_40_contigous = sum(dim40_contigous)
dim40_regular = np.array([int(x) for x in """147309
24207
72608
53185
29916
62288
19733
20551
15416
33266
38374
37710
76787
38460
35339
15569
43172
40743
35956
52172
17231
32107
66245
78219
57454
37971
21077
38089
16171
26842
70623
61517
43946
16101
64700
15876
18604
52025
32854
48066
110412
74894
15982
16951
30104
67263
97568
71199
47570
60400
119246
46025
39649
61263
31674
18139
52567
106665
28508
50885
30868
64452
21987
104550
60096
35098
27626
26791
44735
24076
53037
18897
49820
44744
46927
58569
17651
45036
55358
31643
15816
75636
62402
17341
71459
41987
16640
15786
79108
60482
35872
21016
38518
17325
16738
84271
28477
52976
40236
51622
19197
15498
38114
34553
83946
108452
44795
39454
49442
22963
72816
64652
74099
22675
60850
76929
50585
61838
41130
45360
17933
70220
87695
19565
64806
78487
21187
56748
93777
53159
19220
33799
19743
31416
37750
67563
53070
18014
19133
39304
41509
16661
81493
53422
17376
15742
56450
49720
34734
47112
16915
17586
16895
79737
48293
35941
18742
54320
33438""".replace(' ',',').replace('\n','').split(",")])
dim_40_regular = sum(dim40_regular)
# dimentions = ("3-dementions", "6-dementions", "40-dementions")
# comparitors = {
# 'FAT-Pointer based range address': (dmin_3_physically_contigous, dim_6_contigous, dim_40_contigous),
# 'System Allocator': (dmin_3_regular, dim_6_regular, dim_40_regular),
# }
# x = np.arange(len(dimentions)) # the label locations
# width = 0.25 # the width of the bars
# multiplier = 0
# fig, ax = plt.subplots(layout='constrained')
# for attribute, measurement in comparitors.items():
# offset = width * multiplier
# rects = ax.bar(x + offset, measurement, width, label=attribute)
# ax.bar_label(rects, padding=3)
# multiplier += 1
# # Add some text for labels, title and custom x-axis tick labels, etc.
# ax.set_ylabel('DTLB L1 reads')
# ax.set_title('L1D_TLB')
# ax.set_xticks(x + width, dimentions)
# ax.legend(loc='upper left', ncols=2)
# ax.set_ylim(0, 250)
# plt.show()
# Sample data
categories = ['3 dimentions', '6 dimentions', '40 dimentions']
group_1 = [dmin_3_physically_contigous, dim_6_contigous, dim_40_contigous]
group_2 = [dmin_3_regular, dim_6_regular, dim_40_regular]
# Number of categories
n = len(categories)
# Create a bar width
bar_width = 0.25
# Create an array with the positions of the bars on the x-axis
r1 = np.arange(n)
r2 = [x + bar_width for x in r1]
# r3 = [x + bar_width for x in r2]
# Create the grouped bar graph
plt.bar(r1, group_1, color='b', width=bar_width, edgecolor='grey', label='FAT-Pointer based range based addresses')
plt.bar(r2, group_2, color='g', width=bar_width, edgecolor='grey', label='System memory allocator')
# plt.bar(r3, group_3, color='r', width=bar_width, edgecolor='grey', label='Group 3')
# Add xticks on the middle of the grouped bars
plt.xlabel('Number of dimentions COZ kmeans', fontweight='bold')
plt.xticks([r + bar_width for r in range(n)], categories)
# Add labels and title
plt.ylabel('DTLB L2 reads', fontweight='bold')
plt.title('Sum of DTLB L2 read')
# Add a legend
plt.legend()
# Show the plot
# plt.show()
plt.savefig('l2-tlb-kmeans.png')

View File

@@ -0,0 +1,518 @@
import matplotlib.pyplot as plt
import numpy as np
dim3_physically_contigous = np.array([3625,
1016,
1546,
1556,
1424,
1382,
1598,
1544,
1369,
1301,
1410,
1415,
1520,
1291,
1425,
1653,
1496,
951])
dmin_3_physically_contigous = sum(dim3_physically_contigous)
dim3_regular = np.array([6798,
2144,
2327,
2234,
2779,
3046,
2824,
2762,
2857,
2404,
3236,
2473,
2517,
2558,
3065,
3222,
3235,
4939])
dmin_3_regular = sum(dim3_regular)
dim6_contigous = np.array([12140,
7054,
3621,
5391,
6391,
6235,
4067,
4433,
5248,
3321,
4790,
4832,
5783,
3709,
6746,
4699,
4452,
6665,
3209,
7217,
3974,
5167,
6708,
4311,
5803,
5319,
5280,
6898,
3960,
5857,
3792,
6350,
5911,
4862,
5997,
7540,
4661,
6060,
4739
])
dim_6_contigous = sum(dim6_contigous)
dim6_regular = np.array([12300,
8615,
6314,
6995,
4796,
10032,
4414,
8960,
7265,
8670,
5075,
8384,
5986,
8500,
7639,
8565,
7414,
5646,
9956,
4638,
8766,
5357,
13762,
6227,
12425,
7081,
11306,
8253,
8411,
6267,
15571,
5383,
11586,
8497,
11189,
7123,
7342,
6345,
5933])
dim_6_regular = sum(dim6_regular)
dim40_contigous = np.array([int(x) for x in """32507
4034
27922
22075
45252
6514
45268
20768
78216
5116
4901
24579
30668
4423
12543
16230
20602
23792
29764
35176
22257
21233
22759
41562
5007
40803
15581
18344
4326
25407
37615
25375
19009
43028
31940
25065
20590
3655
39584
11664
16350
18779
3277
5144
26088
10985
25409
38962
19469
11783
24724
18592
31519
18800
10576
33770
11064
71505
8464
4462
22492
33959
4642
34880
4680
32584
4644
16117
21607
4376
4792
30989
18197
13420
27542
21644
22988
41102
37441
34021
13875
17100
43959
10988
25154
32953
18680
11657
37957
18279
26901
36833
10165
15802
23218
4811
26871
22496
12986
24293
16020
37425
17160
5464
54857
37666
30590
4896
4561
17568
15857
4497
33919
11669
19176
53357
12422
13431
21433
4551
20220
11167
4747
7006
24694
24494
52551
11999
80094
18621
9625
19697
18924
5664
39953
5258
9940
21864
4681
60347
4316
18867
17767
18939
13191
15379
4516
15721
19535
19272
44248
18811
21077
54181
29909
32954
12046
17235
37583
15340""".replace(' ',',').replace('\n','').split(",")])
dim_40_contigous = sum(dim40_contigous)
dim40_regular = np.array([int(x) for x in """37838
4375
4755
13395
4663
17351
35495
41361
14851
3678
9728
7058
18282
34639
31071
4249
20021
3460
14453
12527
21730
39797
40936
3952
3572
35124
3157
24017
17363
14283
41690
3627
30967
10083
17288
8446
18369
12531
15990
22124
63165
11521
18297
30464
26297
4068
5461
62879
4968
25299
50562
4084
4528
4962
59035
4958
21144
35628
4261
4349
14859
36841
8263
17753
12513
15457
18778
4148
25284
18899
28869
16736
26025
7030
4598
13422
14592
14660
26539
23846
22503
3771
8567
31149
7480
19305
10491
4415
20470
15658
17870
11822
19760
22506
17256
18958
18275
26096
3780
20019
44296
27396
13735
24572
12058
4065
13409
18858
63139
41617
4256
16795
69961
8029
22993
82166
3994
4724
5504
28454
17037
29973
41238
18465
9060
4665
34217
5250
41130
36820
16737
4086
21270
55031
3988
25838
26389
38865
6083
23834
34979
3616
15021
4614
25599
18673
4572
18720
4562
38451
19787
32943
4457
4577
10062
34287
7733
21443
21917""".replace(' ',',').replace('\n','').split(",")])
dim_40_regular = sum(dim40_regular)
# dimentions = ("3-dementions", "6-dementions", "40-dementions")
# comparitors = {
# 'FAT-Pointer based range address': (dmin_3_physically_contigous, dim_6_contigous, dim_40_contigous),
# 'System Allocator': (dmin_3_regular, dim_6_regular, dim_40_regular),
# }
# x = np.arange(len(dimentions)) # the label locations
# width = 0.25 # the width of the bars
# multiplier = 0
# fig, ax = plt.subplots(layout='constrained')
# for attribute, measurement in comparitors.items():
# offset = width * multiplier
# rects = ax.bar(x + offset, measurement, width, label=attribute)
# ax.bar_label(rects, padding=3)
# multiplier += 1
# # Add some text for labels, title and custom x-axis tick labels, etc.
# ax.set_ylabel('DTLB L1 reads')
# ax.set_title('L1D_TLB')
# ax.set_xticks(x + width, dimentions)
# ax.legend(loc='upper left', ncols=2)
# ax.set_ylim(0, 250)
# plt.show()
# Sample data
categories = ['3 dimentions', '6 dimentions', '40 dimentions']
group_1 = [dmin_3_physically_contigous, dim_6_contigous, dim_40_contigous]
group_2 = [dmin_3_regular, dim_6_regular, dim_40_regular]
# Number of categories
n = len(categories)
# Create a bar width
bar_width = 0.25
# Create an array with the positions of the bars on the x-axis
r1 = np.arange(n)
r2 = [x + bar_width for x in r1]
# r3 = [x + bar_width for x in r2]
# Create the grouped bar graph
plt.bar(r1, group_1, color='b', width=bar_width, edgecolor='grey', label='FAT-Pointer based range based addresses')
plt.bar(r2, group_2, color='g', width=bar_width, edgecolor='grey', label='System memory allocator')
# plt.bar(r3, group_3, color='r', width=bar_width, edgecolor='grey', label='Group 3')
# Add xticks on the middle of the grouped bars
plt.xlabel('Number of dimentions COZ kmeans', fontweight='bold')
plt.xticks([r + bar_width for r in range(n)], categories)
# Add labels and title
plt.ylabel('DTLB walks', fontweight='bold')
plt.title('Sum of DTLB walks')
# Add a legend
plt.legend()
# Show the plot
# plt.show()
plt.savefig('tlb-walk-kmeans.png')

View File

@@ -0,0 +1,396 @@
import matplotlib.pyplot as plt
import numpy as np
dim3_physically_contigous = np.array([92265])
dmin_3_physically_contigous = sum(dim3_physically_contigous)
dim3_regular = np.array([94650])
dmin_3_regular = sum(dim3_regular)
dim6_contigous = np.array(np.array([int(x) for x in """0
0
202420
108748
7366843
12350564
13586069
6779734
56950""".replace(' ',',').replace('\n','').split(",")]))
dim_6_contigous = sum(dim6_contigous)
dim6_regular = np.array(np.array([int(x) for x in """105883
0
135218
0
8322082
12700590
12017926
6160362
134527""".replace(' ',',').replace('\n','').split(",")]))
dim_6_regular = sum(dim6_regular)
dim40_contigous = np.array([int(x) for x in """0
0
4417755799
0
2587126745
0
1907452696
0
4470211896
1490535856
1488268722
1492406027
0
0
3020774732
1502998186
1495229685
1513519294
2943026264
1500269058
52149259
1496657426
2937658244
1494297672
74030192
1501455826
1495883230
2888428091
1482110806
150844250
2836859365
0
2995913912
0
2986402746
0
1637257243
2848563352
336366333
0
2955346561
1582901866
1494805041
1486848958
1575414883
0
3006540619
1651961484
1495211562
1418961073
2413046393
0
2310831892
1545685148
1494591413
1494394190
1495772460
1497140001
1506995279
1502064624
1503212470
1494161247
1496442614
1494353921
1496910315
1490640984
2120990326
1496964537
1503480472
0
2487680099
1511772203
1990506585
1085
1495006176
2981033808
1497807398
1499905019
0
2992809338
1499678220
1503422919
1432738350
1572013300
1488687745
1491956406
1493056793
1490487590
1494885596
0
2981312602
1495995022
1494473531
91287100
2756251323
230008646
1491190180
1430538651
1583249575
1576908184
1332064486
0
3175178358
0
3080574208
2649916724
1275899646
0
2878955633""".replace(' ',',').replace('\n','').split(",")])
dim_40_contigous = sum(dim40_contigous)
dim40_regular = np.array([int(x) for x in """0
2873345808
0
0
4568364039
0
2962578326
1482026881
1482959662
1283314470
1696338408
1493064117
1496278352
1493690192
1490808431
1482241102
1485073059
1493488736
1493734395
1494051944
1491925626
1490400073
1492918850
0
2989795422
0
2981131303
1490971079
1490457922
0
2972098981
148614774
0
0
4865632909
1257951927
1588161938
1785512571
0
0
0
6770405012
0
2348949300
0
0
4570645310
0
2824636217
1762646952
0
2891891542
1579360612
0
0
4915926092
1496744037
1495870886
1497206544
1287107800
0
3203518565
0
2992849786
0
2975114733
1481666721
686803
2988542677
1496054096
1496578264
1491746836
1492851059
1497143785
1495192565
1500194130
0
1637919784
2854243731
0
2366222238
2128844017
0
1818736204
2676149826
1497854865
962431460
0
3539793686
1024018613
1489816277
0
3158434789
1369912046
1491311601
1575013089
0
0
4446661541
1416884482
1710611180
1757241245
1233889541
1437873524
0
3280246404
0
2995489571
1541069762
3930514690
3863607919
3597368896
3734892809
3944232184
3709601722
3642560210
3625597517
3920215743
3927141046
4000023820
3916655686
3951797607
3952120224
3689180680
3587372425
3615616989
3726388814
3929746604
3929801334
3942019114
3648646073
3944755905
3929255746
3668055728
3672894376
3844013718
3910779810
3940544740
4006830187
3928198267
3531412165
3818215173
3738150454
3604332393
3650311511
3807369864
3826302554
3775371186
3710423568
3934761097
3925844952
3602607914
3741857686
3732482931
3729783593
3635250094
3706648118
3853167484
3916845229
3983629794
3943670196
3867725730
3548946522
3696888472
3729664873
3750609657
3702688827
3994465571
3666995886
3881628312
3720334387
3933568515
3693178186
3888954122
3961471376
3937112215
3936691623
3915403037
3693727226
3917170944
3930555435
3933184551
3931662845
3940295083
1033014609""".replace(' ',',').replace('\n','').split(",")])
dim_40_regular = sum(dim40_regular)
# dimentions = ("3-dementions", "6-dementions", "40-dementions")
# comparitors = {
# 'FAT-Pointer based range address': (dmin_3_physically_contigous, dim_6_contigous, dim_40_contigous),
# 'System Allocator': (dmin_3_regular, dim_6_regular, dim_40_regular),
# }
# x = np.arange(len(dimentions)) # the label locations
# width = 0.25 # the width of the bars
# multiplier = 0
# fig, ax = plt.subplots(layout='constrained')
# for attribute, measurement in comparitors.items():
# offset = width * multiplier
# rects = ax.bar(x + offset, measurement, width, label=attribute)
# ax.bar_label(rects, padding=3)
# multiplier += 1
# # Add some text for labels, title and custom x-axis tick labels, etc.
# ax.set_ylabel('DTLB L1 reads')
# ax.set_title('L1D_TLB')
# ax.set_xticks(x + width, dimentions)
# ax.legend(loc='upper left', ncols=2)
# ax.set_ylim(0, 250)
# plt.show()
# Sample data
categories = ['Size 200', 'Size 10000']
group_1 = [dmin_3_physically_contigous, dim_6_contigous]
group_2 = [dmin_3_regular, dim_6_regular]
# Number of categories
n = len(categories)
# Create a bar width
bar_width = 0.25
# Create an array with the positions of the bars on the x-axis
r1 = np.arange(n)
r2 = [x + bar_width for x in r1]
# r3 = [x + bar_width for x in r2]
# Create the grouped bar graph
plt.bar(r1, group_1, color='b', width=bar_width, edgecolor='grey', label='FAT-Pointer based range based addresses')
plt.bar(r2, group_2, color='g', width=bar_width, edgecolor='grey', label='System memory allocator')
# plt.bar(r3, group_3, color='r', width=bar_width, edgecolor='grey', label='Group 3')
# Add xticks on the middle of the grouped bars
plt.xlabel('Size of Matrix COZ MatrixMultiply', fontweight='bold')
plt.xticks([r + bar_width for r in range(n)], categories)
# Add labels and title
plt.ylabel('DTLB L1 reads', fontweight='bold')
plt.title('Sum of DTLB L1 reads')
# Add a legend
plt.legend()
# Show the plot
# plt.show()
plt.savefig('l1-miss-matrixmultiply.png')

View File

@@ -0,0 +1,395 @@
import matplotlib.pyplot as plt
import numpy as np
dim3_physically_contigous = np.array([399876441])
dmin_3_physically_contigous = sum(dim3_physically_contigous)
dim3_regular = np.array([380500198])
dmin_3_regular = sum(dim3_regular)
dim6_contigous = np.array([int(x) for x in """0
0
3182857841
2676269451
3632836262
5086931936
4921595689
2380537223""".replace(' ',',').replace('\n','').split(",")])
dim_6_contigous = sum(dim6_contigous)
dim6_regular = np.array([int(x) for x in """0
1662045387
2568704269
0
5404906944
4946152426
5097512016
1934071481""".replace(' ',',').replace('\n','').split(",")])
dim_6_regular = sum(dim6_regular)
dim40_contigous = np.array([int(x) for x in """0
0
4417755799
0
2587126745
0
1907452696
0
4470211896
1490535856
1488268722
1492406027
0
0
3020774732
1502998186
1495229685
1513519294
2943026264
1500269058
52149259
1496657426
2937658244
1494297672
74030192
1501455826
1495883230
2888428091
1482110806
150844250
2836859365
0
2995913912
0
2986402746
0
1637257243
2848563352
336366333
0
2955346561
1582901866
1494805041
1486848958
1575414883
0
3006540619
1651961484
1495211562
1418961073
2413046393
0
2310831892
1545685148
1494591413
1494394190
1495772460
1497140001
1506995279
1502064624
1503212470
1494161247
1496442614
1494353921
1496910315
1490640984
2120990326
1496964537
1503480472
0
2487680099
1511772203
1990506585
1085
1495006176
2981033808
1497807398
1499905019
0
2992809338
1499678220
1503422919
1432738350
1572013300
1488687745
1491956406
1493056793
1490487590
1494885596
0
2981312602
1495995022
1494473531
91287100
2756251323
230008646
1491190180
1430538651
1583249575
1576908184
1332064486
0
3175178358
0
3080574208
2649916724
1275899646
0
2878955633""".replace(' ',',').replace('\n','').split(",")])
dim_40_contigous = sum(dim40_contigous)
dim40_regular = np.array([int(x) for x in """0
2873345808
0
0
4568364039
0
2962578326
1482026881
1482959662
1283314470
1696338408
1493064117
1496278352
1493690192
1490808431
1482241102
1485073059
1493488736
1493734395
1494051944
1491925626
1490400073
1492918850
0
2989795422
0
2981131303
1490971079
1490457922
0
2972098981
148614774
0
0
4865632909
1257951927
1588161938
1785512571
0
0
0
6770405012
0
2348949300
0
0
4570645310
0
2824636217
1762646952
0
2891891542
1579360612
0
0
4915926092
1496744037
1495870886
1497206544
1287107800
0
3203518565
0
2992849786
0
2975114733
1481666721
686803
2988542677
1496054096
1496578264
1491746836
1492851059
1497143785
1495192565
1500194130
0
1637919784
2854243731
0
2366222238
2128844017
0
1818736204
2676149826
1497854865
962431460
0
3539793686
1024018613
1489816277
0
3158434789
1369912046
1491311601
1575013089
0
0
4446661541
1416884482
1710611180
1757241245
1233889541
1437873524
0
3280246404
0
2995489571
1541069762
3930514690
3863607919
3597368896
3734892809
3944232184
3709601722
3642560210
3625597517
3920215743
3927141046
4000023820
3916655686
3951797607
3952120224
3689180680
3587372425
3615616989
3726388814
3929746604
3929801334
3942019114
3648646073
3944755905
3929255746
3668055728
3672894376
3844013718
3910779810
3940544740
4006830187
3928198267
3531412165
3818215173
3738150454
3604332393
3650311511
3807369864
3826302554
3775371186
3710423568
3934761097
3925844952
3602607914
3741857686
3732482931
3729783593
3635250094
3706648118
3853167484
3916845229
3983629794
3943670196
3867725730
3548946522
3696888472
3729664873
3750609657
3702688827
3994465571
3666995886
3881628312
3720334387
3933568515
3693178186
3888954122
3961471376
3937112215
3936691623
3915403037
3693727226
3917170944
3930555435
3933184551
3931662845
3940295083
1033014609""".replace(' ',',').replace('\n','').split(",")])
dim_40_regular = sum(dim40_regular)
# dimentions = ("3-dementions", "6-dementions", "40-dementions")
# comparitors = {
# 'FAT-Pointer based range address': (dmin_3_physically_contigous, dim_6_contigous, dim_40_contigous),
# 'System Allocator': (dmin_3_regular, dim_6_regular, dim_40_regular),
# }
# x = np.arange(len(dimentions)) # the label locations
# width = 0.25 # the width of the bars
# multiplier = 0
# fig, ax = plt.subplots(layout='constrained')
# for attribute, measurement in comparitors.items():
# offset = width * multiplier
# rects = ax.bar(x + offset, measurement, width, label=attribute)
# ax.bar_label(rects, padding=3)
# multiplier += 1
# # Add some text for labels, title and custom x-axis tick labels, etc.
# ax.set_ylabel('DTLB L1 reads')
# ax.set_title('L1D_TLB')
# ax.set_xticks(x + width, dimentions)
# ax.legend(loc='upper left', ncols=2)
# ax.set_ylim(0, 250)
# plt.show()
# Sample data
categories = ['Size 200', 'Size 10000']
group_1 = [dmin_3_physically_contigous, dim_6_contigous]
group_2 = [dmin_3_regular, dim_6_regular]
# Number of categories
n = len(categories)
# Create a bar width
bar_width = 0.25
# Create an array with the positions of the bars on the x-axis
r1 = np.arange(n)
r2 = [x + bar_width for x in r1]
# r3 = [x + bar_width for x in r2]
# Create the grouped bar graph
plt.bar(r1, group_1, color='b', width=bar_width, edgecolor='grey', label='FAT-Pointer based range based addresses')
plt.bar(r2, group_2, color='g', width=bar_width, edgecolor='grey', label='System memory allocator')
# plt.bar(r3, group_3, color='r', width=bar_width, edgecolor='grey', label='Group 3')
# Add xticks on the middle of the grouped bars
plt.xlabel('Size of Matrix COZ MatrixMultiply', fontweight='bold')
plt.xticks([r + bar_width for r in range(n)], categories)
# Add labels and title
plt.ylabel('DTLB L1 reads', fontweight='bold')
plt.title('Sum of DTLB L1 reads')
# Add a legend
plt.legend()
# Show the plot
# plt.show()
plt.savefig('l1-tlb-matrixmultiply.png')

View File

@@ -0,0 +1,397 @@
import matplotlib.pyplot as plt
import numpy as np
dim3_physically_contigous = np.array([3013349])
dmin_3_physically_contigous = sum(dim3_physically_contigous)
dim3_regular = np.array([2946541])
dmin_3_regular = sum(dim3_regular)
dim6_contigous = np.array([int(x) for x in """13933616
0
0
55855105
177840659
380285140
292719568
163746827""".replace(' ',',').replace('\n','').split(",")])
dim_6_contigous = sum(dim6_contigous)
dim6_regular = np.array([int(x) for x in """0
0
48672313
0
243876172
332240431
283300132
151566198""".replace(' ',',').replace('\n','').split(",")])
dim_6_regular = sum(dim6_regular)
dim40_contigous = np.array([int(x) for x in """11074868
17796846
0
42335753
0
42578037
17369088
0
0
0
82499577
0
0
0
82928349
19903822
20322217
20196113
20575304
19769508
0
40692176
0
35388820
0
46400139
20884653
0
40479127
20938047
20020758
21590212
17955844
1895112
24707564
35247723
19854386
19994871
0
0
39958384
39619071
19821971
0
39754647
0
39873651
19521815
20209862
20048932
20231348
20214678
0
41152963
6223168
16818928
37877594
12893970
21214360
0
32124557
20718531
0
40755758
35334046
0
41293476
20648826
0
20479335
21645864
28444433
0
34204784
36576871
0
0
0
76911224
20723929
14021956
28392009
26330087
0
41195363
9598203
28499682
0
34404203
29859217
20539283
20714755
20553408
0
20889230
32963850
7949901
33765967
28019151
13062566
26967792
0
0
62723768
15030483
20277594
0
41160435
0
28127160""".replace(' ',',').replace('\n','').split(",")])
dim_40_contigous = sum(dim40_contigous)
dim40_regular = np.array([int(x) for x in """2780755
0
40650126
19973207
0
45212438
14734736
21512132
20024828
17015744
21012868
24889120
0
40307315
0
40543393
19447333
16752820
19802564
19717349
0
32838418
7313016
36828882
19421922
19221311
0
36504040
19221867
19111822
4391041
32495439
0
23803968
18651515
0
37881224
29985095
4176134
18086488
18628963
0
0
0
77724802
0
37326656
0
37118376
17904262
19199261
19094655
18162476
19841950
18493958
19955899
15237090
18940111
16777309
19653443
17616389
1417668
23258907
0
38260471
22608071
13460148
19002183
16931931
19518969
12655691
18821392
19084457
0
38850414
0
38673127
0
39578640
0
38841607
0
38340444
0
0
59014396
13524903
19465492
25539086
19637297
5254742
27355676
24079140
19975996
19226004
16878651
0
0
62518013
0
0
39742980
39872968
18698312
19633681
19652322
18131608
0
39807132
84805863
205063169
207026601
207353408
208077229
223112773
232033395
210898122
200158459
203639347
230644673
237184228
230544844
234041882
225077016
208652470
206710725
207688549
208921986
237145817
216789158
207248978
206867158
226521698
243656316
236022389
216914633
207163647
207752568
206269550
207422862
240605554
220855937
207420877
210468984
207768015
250267485
212878277
209949240
207411078
208223656
210492256
224683374
242489309
231567088
211246599
208066123
208277683
228206741
229508886
207161109
206156489
214927236
231786596
232625811
230571602
209516467
219150327
228216552
206438524
220447351
219045513
230838177
216657765
205321014
207699856
219191131
236171517
225724156
208329895
210489462
211206457
207353005
230789569
231425162
43897100""".replace(' ',',').replace('\n','').split(",")])
dim_40_regular = sum(dim40_regular)
# dimentions = ("3-dementions", "6-dementions", "40-dementions")
# comparitors = {
# 'FAT-Pointer based range address': (dmin_3_physically_contigous, dim_6_contigous, dim_40_contigous),
# 'System Allocator': (dmin_3_regular, dim_6_regular, dim_40_regular),
# }
# x = np.arange(len(dimentions)) # the label locations
# width = 0.25 # the width of the bars
# multiplier = 0
# fig, ax = plt.subplots(layout='constrained')
# for attribute, measurement in comparitors.items():
# offset = width * multiplier
# rects = ax.bar(x + offset, measurement, width, label=attribute)
# ax.bar_label(rects, padding=3)
# multiplier += 1
# # Add some text for labels, title and custom x-axis tick labels, etc.
# ax.set_ylabel('DTLB L1 reads')
# ax.set_title('L1D_TLB')
# ax.set_xticks(x + width, dimentions)
# ax.legend(loc='upper left', ncols=2)
# ax.set_ylim(0, 250)
# plt.show()
# Sample data
categories = ['Size 200', 'Size 10000']
group_1 = [dmin_3_physically_contigous, dim_6_contigous]
group_2 = [dmin_3_regular, dim_6_regular]
# Number of categories
n = len(categories)
# Create a bar width
bar_width = 0.25
# Create an array with the positions of the bars on the x-axis
r1 = np.arange(n)
r2 = [x + bar_width for x in r1]
# r3 = [x + bar_width for x in r2]
# Create the grouped bar graph
plt.bar(r1, group_1, color='b', width=bar_width, edgecolor='grey', label='FAT-Pointer based range based addresses')
plt.bar(r2, group_2, color='g', width=bar_width, edgecolor='grey', label='System memory allocator')
# plt.bar(r3, group_3, color='r', width=bar_width, edgecolor='grey', label='Group 3')
# Add xticks on the middle of the grouped bars
plt.xlabel('Size of Matrix COZ MatrixMultiply', fontweight='bold')
plt.xticks([r + bar_width for r in range(n)], categories)
# Add labels and title
plt.ylabel('DTLB L2 reads', fontweight='bold')
plt.title('Sum of DTLB L2 reads')
# Add a legend
plt.legend()
# Show the plot
# plt.show()
plt.savefig('l2-tlb-matrixmultiply.png')

View File

@@ -0,0 +1,393 @@
import matplotlib.pyplot as plt
import numpy as np
dim3_physically_contigous = np.array([26005])
dmin_3_physically_contigous = sum(dim3_physically_contigous)
dim3_regular = np.array([8517])
dmin_3_regular = sum(dim3_regular)
dim6_contigous = np.array([int(x) for x in """0
2722
0
0
84290
185921
251521
356452""".replace(' ',',').replace('\n','').split(",")])
dim_6_contigous = sum(dim6_contigous)
dim6_regular = np.array([int(x) for x in """1310
1658
86
0
73097
171472
237158
161478""".replace(' ',',').replace('\n','').split(",")])
dim_6_regular = sum(dim6_regular)
dim40_contigous = np.array([int(x) for x in """1072
1566
0
775
564
574
0
0
1842
397
832
0
1143
0
1132
0
0
3478
335
1181
0
1451
0
0
2456
914
566
208
1323
0
1341
0
0
0
2800
869
0
1624
852
0
1444
78
0
1165
242
0
0
1436
0
1656
1295
672
0
2124
689
247
974
196
664
0
0
0
0
4571
411
1108
0
1855
779
0
0
0
3973
0
0
2126
1090
0
0
0
1455
868
834
0
2252
743
0
0
0
2867
576
528
737
1279
753
0
0
1469
709
0
951
1011
560
923
389
681
887
0
1091""".replace(' ',',').replace('\n','').split(",")])
dim_40_contigous = sum(dim40_contigous)
dim40_regular = np.array([int(x) for x in """2077
0
2240
974
400
0
1949
0
353
0
2136
1292
1150
1080
1029
188
16
9401
3108
0
12850
2972
0
13417
4015
0
0
12179
708
4434
5515
105
0
0
52251
8327
0
0
0
7628
0
6047
2796
2505
1949
0
0
0
0
14301
0
5171
3362
3772
0
27162
15974
5284
11553
0
24698
0
14835
0
21593
664
5721
12945
0
13774
0
14722
1465
0
27655
2332
4084
33813
0
9790
0
50326
5316
0
0
0
0
9760
4192
1552
7241
3216
4888
8667
28500
8415
4523
1449
4652
0
7625
0
13775
0
1897
4708
0
12225
4482759
191711306
235410343
173845602
242711520
154862574
192747518
220667551
275602208
184073481
198073425
227482742
187971748
183689903
187178845
186674013
207741123
233177167
221368814
183933427
181175654
204068107
228269124
205027178
209400883
187840131
188293011
221927087
232807458
188215220
180783387
216711542
208036998
214266374
186414281
180185139
185237868
191677316
183911791
183803795
224964126
204113022
210381502
225585571
220223453
226214857
204932647
184864540
217262003
202414930
191948700
193400960
181280109
180323521
184002482
207777617
222940234
189422853
186182495
186261124
181304280
192816961
184117119
209667712
240951856
219942014
221564848
192926621
181690338
183097907
186087016
184347616
180377265
199009737
182802614""".replace(' ',',').replace('\n','').split(",")])
dim_40_regular = sum(dim40_regular)
# dimentions = ("3-dementions", "6-dementions", "40-dementions")
# comparitors = {
# 'FAT-Pointer based range address': (dmin_3_physically_contigous, dim_6_contigous, dim_40_contigous),
# 'System Allocator': (dmin_3_regular, dim_6_regular, dim_40_regular),
# }
# x = np.arange(len(dimentions)) # the label locations
# width = 0.25 # the width of the bars
# multiplier = 0
# fig, ax = plt.subplots(layout='constrained')
# for attribute, measurement in comparitors.items():
# offset = width * multiplier
# rects = ax.bar(x + offset, measurement, width, label=attribute)
# ax.bar_label(rects, padding=3)
# multiplier += 1
# # Add some text for labels, title and custom x-axis tick labels, etc.
# ax.set_ylabel('DTLB L1 reads')
# ax.set_title('L1D_TLB')
# ax.set_xticks(x + width, dimentions)
# ax.legend(loc='upper left', ncols=2)
# ax.set_ylim(0, 250)
# plt.show()
# Sample data
categories = ['Size 200', 'Size 10000']
group_1 = [dmin_3_physically_contigous, dim_6_contigous]
group_2 = [dmin_3_regular, dim_6_regular]
# Number of categories
n = len(categories)
# Create a bar width
bar_width = 0.25
# Create an array with the positions of the bars on the x-axis
r1 = np.arange(n)
r2 = [x + bar_width for x in r1]
# r3 = [x + bar_width for x in r2]
# Create the grouped bar graph
plt.bar(r1, group_1, color='b', width=bar_width, edgecolor='grey', label='FAT-Pointer based range based addresses')
plt.bar(r2, group_2, color='g', width=bar_width, edgecolor='grey', label='System memory allocator')
# plt.bar(r3, group_3, color='r', width=bar_width, edgecolor='grey', label='Group 3')
# Add xticks on the middle of the grouped bars
plt.xlabel('Size of Matrix COZ MatrixMultiply', fontweight='bold')
plt.xticks([r + bar_width for r in range(n)], categories)
# Add labels and title
plt.ylabel('DTLB L2 reads', fontweight='bold')
plt.title('Sum of DTLB L2 reads')
# Add a legend
plt.legend()
# Show the plot
# plt.show()
plt.savefig('tlb-walk-matrixmultiply.png')

View File

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

View File

@@ -0,0 +1,516 @@
import matplotlib.pyplot as plt
import numpy as np
dim3_physically_contigous = np.array([1944100892,
1929198745,
2147407618,
2361683504,
2229290045,
1936107919,
1950196981,
2316564611,
2415777784,
2251930639,
1917048962,
2122919883,
2305445935,
2216085132,
2061970506,
2077573288,
2415427574])
dmin_3_physically_contigous = sum(dim3_physically_contigous)
dim3_regular = np.array([2001205195,
2037350408,
2077998800,
2064361816,
2370004326,
2366505116,
2433485997,
2388982491,
2622710065,
2231849577,
2213896383,
1971144730,
2279336623,
2384236727,
2159066740,
1872922315,
2046840068])
dmin_3_regular = sum(dim3_regular)
dim6_contigous = np.array([2472219435,
3473628174,
3146805964,
2747609863,
3624063096,
2299770299,
2731333935,
2500798504,
2279879638,
3989040226,
2595662999,
3715651239,
3293638078,
2723808934,
4183888040,
2437497235,
3262957061,
3260647309,
2145129129,
3874909746,
2471935689,
3143457211,
3450920659,
2570835020,
4197209649,
3325832132,
3041911087,
3848617519,
1973739208,
3773139796,
2737410930,
2907858299,
3813970823,
2856501924,
3505228599,
2432178891,
2854895470,
3602152695,
2576232334
])
dim_6_contigous = sum(dim6_contigous)
dim6_regular = np.array([3512147188,
2931698338,
3130637973,
2799013235,
3256184323,
2992132432,
3041359022,
3094813437,
3028071885,
3380696386,
3018331410,
2899603552,
3264907899,
3002822837,
3045671887,
3119204499,
2953573342,
2963606839,
2855193865,
3043260399,
2972252469,
2503069946,
2958386657,
3033810534,
3007362327,
3026500873,
3159826130,
2504328570,
4058464445,
3218889301,
3597912212,
4181723542,
3749432601,
3654586898,
3557679884,
3322970044,
3630597266,
3130958213,
1019981557])
dim_6_regular = sum(dim6_regular)
dim40_contigous = np.array([5271750211,
5947977060,
6406575235,
5511255729,
6423429240,
5094278723,
6242776302,
6297848739,
4590445845,
6764711612,
4610372742,
5903997396,
5747140551,
6300303767,
6640645385,
4818280514,
7823467298,
5828843492,
7619923263,
7891459023,
7387222066,
7941541977,
5433577677,
7362215737,
7053988636,
7387626023,
6945895832,
4915107460,
6745811484,
7802741433,
6808767570,
7717542941,
5557441777,
6274197189,
6839290749,
6583819269,
8175619486,
7374930361,
7496545906,
5787152431,
6970388902,
7150342762,
6374515148,
7086240550,
6014911926,
6805497356,
6787839300,
6029236409,
7045329429,
5463327288,
7023215119,
6305754943,
6040079901,
7642513816,
5399217904,
7615536076,
6947227611,
6886438575,
6525913645,
5704035737,
6001096710,
4595121294,
3891698114,
5754907462,
5581736391,
8438909738,
7281420759,
9120364283,
8975142455,
6194068545,
7645451782,
6244703959,
8436588830,
8530553210,
7617848374,
8172082546,
6812387244,
8703432529,
8613319990,
7501293173,
8216594940,
5673006642,
7168602771,
7846317702,
7094119540,
8854752613,
5455608081,
8407641178,
8338729110,
8119635911,
8981010962,
7495479592,
8554574662,
8404630428,
7519304345,
7136761544,
6528504686,
8236643504,
6831632676,
8347118009,
7641263754,
5707359038,
6748898177,
6066310601,
6943861727,
7098959658,
5212148705,
6824640874,
5583585529,
8003156647,
6415970122,
6830508723,
7041516118,
6892969782,
7126446374,
8238572592,
6702708346,
6612046729,
6731145590,
7182643495,
6166401716,
6391553234,
6638759846,
5539008636,
8406967616,
7660149216,
8431551979,
8269144799,
7734313131,
8403891519,
7258535328,
7776937659,
6064178686,
5770876015,
6982161319,
5235604055,
8101527192,
6046956898,
6827456214,
7874652143,
5025716700,
7506539290,
6196558003,
6656436732,
5956327575,
4626891040,
6350370528,
5249154115,
7566366652,
7035152421,
5894510533,
7071341874,
6305872895,
7188950553,
6518432441,
5956890819,
7441553601,
6285032471,
6776691911,
5916079446,
2984166525
])
dim_40_contigous = sum(dim40_contigous)
dim40_regular = np.array([int(x) for x in """7320333725
8041544574
6359081713
7676718410
7408541973
8549261018
6455940864
7638044083
7852961154
8105713414
8099296359
8588846829
9264198897
7866569227
8241210929
8266772980
9025896341
8543734536
8436388827
8593700407
7449440289
8297109440
8213614706
9250000125
7852953217
8789498566
7365356677
7663656239
7930037512
7141236610
7737423168
8306296388
8693384934
7433924991
7878827892
7671595716
7150009037
8591898274
8167375582
8355489369
7173398288
8066437344
6594406377
7699310879
7502720090
7940562130
6738407130
7831934111
7551421487
8597892604
7251882911
7497411167
7623185317
6601524684
8174240923
7425424118
7689177096
5496078729
5695648325
7096458210
4812243000
8265423889
7406646505
8401794675
8029187256
8262191583
8410556911
8215142659
7977382227
8090414614
8943953292
7822463926
7959987169
7730265183
8736349787
8143049809
6640249510
7530281166
6842877170
7512789107
7638804649
7995198730
7496218179
7181518949
8254413848
8022381985
7361988882
7810130859
7417215012
7872443581
7732389294
7814055171
7463971008
8433179161
7010361542
8758722649
7834208169
7467025814
7909486359
7462899259
8890074348
8072645870
7422221759
8907995744
6612293480
7843416231
8411079708
9525606221
6937922478
7845436454
7864992534
7427672637
8619142087
8731377069
8885281498
7559808728
7173215681
7652102219
6717276768
8244303885
7151149289
7102114957
6526600396
7151648008
7526924470
8040860568
8175611289
7459798487
7145058572
6890657989
7345908520
8924306436
8931634035
8324005045
8599147593
8880835677
8165157302
7460488360
8628914421
8583302346
7934022758
7056421549
8275846606
7009386280
7495129707
7773552723
7645908705
8608406256
8712832214
7664452295
8321095578
8643168243
7250479737
7556324607
7738815689
6796106269
7213420720
7365304658
7297146598""".replace(' ',',').replace('\n','').split(",")])
dim_40_regular = sum(dim40_regular)
# dimentions = ("3-dementions", "6-dementions", "40-dementions")
# comparitors = {
# 'FAT-Pointer based range address': (dmin_3_physically_contigous, dim_6_contigous, dim_40_contigous),
# 'System Allocator': (dmin_3_regular, dim_6_regular, dim_40_regular),
# }
# x = np.arange(len(dimentions)) # the label locations
# width = 0.25 # the width of the bars
# multiplier = 0
# fig, ax = plt.subplots(layout='constrained')
# for attribute, measurement in comparitors.items():
# offset = width * multiplier
# rects = ax.bar(x + offset, measurement, width, label=attribute)
# ax.bar_label(rects, padding=3)
# multiplier += 1
# # Add some text for labels, title and custom x-axis tick labels, etc.
# ax.set_ylabel('DTLB L1 reads')
# ax.set_title('L1D_TLB')
# ax.set_xticks(x + width, dimentions)
# ax.legend(loc='upper left', ncols=2)
# ax.set_ylim(0, 250)
# plt.show()
# Sample data
categories = ['3 dimentions', '6 dimentions', '40 dimentions']
group_1 = [dmin_3_physically_contigous, dim_6_contigous, dim_40_contigous]
group_2 = [dmin_3_regular, dim_6_regular, dim_40_regular]
# Number of categories
n = len(categories)
# Create a bar width
bar_width = 0.25
# Create an array with the positions of the bars on the x-axis
r1 = np.arange(n)
r2 = [x + bar_width for x in r1]
# r3 = [x + bar_width for x in r2]
# Create the grouped bar graph
plt.bar(r1, group_1, color='b', width=bar_width, edgecolor='grey', label='FAT-Pointer based range based addresses')
plt.bar(r2, group_2, color='g', width=bar_width, edgecolor='grey', label='System memory allocator')
# plt.bar(r3, group_3, color='r', width=bar_width, edgecolor='grey', label='Group 3')
# Add xticks on the middle of the grouped bars
plt.xlabel('Number of dimentions COZ kmeans', fontweight='bold')
plt.xticks([r + bar_width for r in range(n)], categories)
# Add labels and title
plt.ylabel('DTLB L1 hits', fontweight='bold')
plt.title('Sum of DTLB L1 hits')
# Add a legend
plt.legend()
# Show the plot
plt.show()

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

View File

@@ -0,0 +1,667 @@
***** file size is 160000
runtime = 0.000212
# p/ll_cache_miss_rd
92265
***** file size is 160000
runtime = 0.000244
# p/L2D_TLB
4918074
***** file size is 160000
runtime = 0.000292
# p/DTLB_WALK
26005
***** file size is 160000
runtime = 0.000234
# p/L1D_TLB_RD
399876441
***** file size is 160000
runtime = 0.000216
# p/L2D_TLB
2946541
***** file size is 4000000
# p/ll_cache_miss_rd
0
0
202420
108748 runtime = 0.000358
7366843
12350564
13586069
6779734
56950
***** file size is 4000000
# p/L2D_TLB
0
0
0
0 runtime = 0.000355
284913797
285856703
296730044
***** file size is 4000000
# p/DTLB_WALK
0
2722
0
0 runtime = 0.000369
84290
185921
251521
356452
***** file size is 4000000
# p/L1D_TLB_RD
0
0
3182857841
2676269451 runtime = 0.000347
3632836262
5086931936
4921595689
2380537223
***** file size is 4000000
# p/L2D_TLB
13933616
0
0
55855105 runtime = 0.000328
177840659
380285140
292719568
163746827
***** file size is 100000000
# p/ll_cache_miss_rd
99132
38980
0
197161
0
67519
0
140400
0
143043
0
0
0
284282
# p/ll_cache_miss_rd
0
140444
0
134435
83831
50211
75049
0
0
0
288554
74050
71429
74809
# p/ll_cache_miss_rd
73262
73649
0
140714
70424
0
147499
68600
81265
0
139783
64799
0
151170
# p/ll_cache_miss_rd
68801
0
145452
0
125288
0
163795
0
141640
73859
74317
64148
0
136959
# p/ll_cache_miss_rd
72307
69894
77496
67138
0
139846
70331
0
132302
70375
0
84102
123513
0
# p/ll_cache_miss_rd
144565
3028
137573
5823
71125
134909
0
138289
0
134450
0
142950
0
86537
# p/ll_cache_miss_rd
111946
0
114053
0
128592
91062
0
0
238779
74466
70433
77585
28764
73445
# p/ll_cache_miss_rd
110675
34944
106227
73441
66853
38920
72495
104062
11226
105905
70625
56476
***** file size is 100000000
# p/L2D_TLB
18130995
0
33028288
29996407
22608092
0
31192747
0
52731944
0
40234984
642921
0
0
# p/L2D_TLB
0
0
0
121159391
36184678
0
42541162
0
21330990
39301881
8359005
31524351
20
39931129
# p/L2D_TLB
19963516
20137778
0
40202382
19
39777568
20081969
19246988
11938034
26768027
0
39183827
19287693
1143221
# p/L2D_TLB
19521220
38207819
4
22124789
33708710
4119701
21037254
0
39095436
20859001
36319344
20140867
19584873
3674466
# p/L2D_TLB
19356737
17244296
22331678
0
39540260
19406894
0
42215441
19379013
32102565
19622172
19852435
19410640
19579397
# p/L2D_TLB
19343633
13605252
14075127
19916730
31448432
8254938
21049230
10444948
0
54307818
0
0
0
78942862
# p/L2D_TLB
0
44824213
19957202
0
39918080
19758522
0
34767931
23495166
19987193
19513513
19526967
19965670
19920766
# p/L2D_TLB
19967121
19405457
19399844
19409943
0
39894378
0
0
0
61536907
36235550
***** file size is 100000000
# p/DTLB_WALK
1072
1566
0
775
564
574
0
0
1842
397
832
0
1143
0
# p/DTLB_WALK
1132
0
0
3478
335
1181
0
1451
0
0
2456
914
566
208
# p/DTLB_WALK
1323
0
1341
0
0
0
2800
869
0
1624
852
0
1444
78
# p/DTLB_WALK
0
1165
242
0
0
1436
0
1656
1295
672
0
2124
689
247
# p/DTLB_WALK
974
196
664
0
0
0
0
4571
411
1108
0
1855
779
0
# p/DTLB_WALK
0
0
3973
0
0
2126
1090
0
0
0
1455
868
834
0
# p/DTLB_WALK
2252
743
0
0
0
2867
576
528
737
1279
753
0
0
1469
# p/DTLB_WALK
709
0
951
1011
560
923
389
681
887
0
1091
***** file size is 100000000
# p/L1D_TLB_RD
0
0
4417755799
0
2587126745
0
1907452696
0
4470211896
1490535856
1488268722
1492406027
0
0
# p/L1D_TLB_RD
3020774732
1502998186
1495229685
1513519294
2943026264
1500269058
52149259
1496657426
2937658244
1494297672
74030192
1501455826
1495883230
2888428091
# p/L1D_TLB_RD
1482110806
150844250
2836859365
0
2995913912
0
2986402746
0
1637257243
2848563352
336366333
0
2955346561
1582901866
# p/L1D_TLB_RD
1494805041
1486848958
1575414883
0
3006540619
1651961484
1495211562
1418961073
2413046393
0
2310831892
1545685148
1494591413
1494394190
# p/L1D_TLB_RD
1495772460
1497140001
1506995279
1502064624
1503212470
1494161247
1496442614
1494353921
1496910315
1490640984
2120990326
1496964537
1503480472
0
# p/L1D_TLB_RD
2487680099
1511772203
1990506585
1085
1495006176
2981033808
1497807398
1499905019
0
2992809338
1499678220
1503422919
1432738350
1572013300
# p/L1D_TLB_RD
1488687745
1491956406
1493056793
1490487590
1494885596
0
2981312602
1495995022
1494473531
91287100
2756251323
230008646
1491190180
1430538651
# p/L1D_TLB_RD
1583249575
1576908184
1332064486
0
3175178358
0
3080574208
2649916724
1275899646
0
2878955633
***** file size is 100000000
# p/L2D_TLB
11074868
17796846
0
42335753
0
42578037
17369088
0
0
0
82499577
0
0
0
# p/L2D_TLB
82928349
19903822
20322217
20196113
20575304
19769508
0
40692176
0
35388820
0
46400139
20884653
0
# p/L2D_TLB
40479127
20938047
20020758
21590212
17955844
1895112
24707564
35247723
19854386
19994871
0
0
39958384
39619071
# p/L2D_TLB
19821971
0
39754647
0
39873651
19521815
20209862
20048932
20231348
20214678
0
41152963
6223168
16818928
# p/L2D_TLB
37877594
12893970
21214360
0
32124557
20718531
0
40755758
35334046
0
41293476
20648826
0
20479335
# p/L2D_TLB
21645864
28444433
0
34204784
36576871
0
0
0
76911224
20723929
14021956
28392009
26330087
0
# p/L2D_TLB
41195363
9598203
28499682
0
34404203
29859217
20539283
20714755
20553408
0
20889230
32963850
7949901
33765967
# p/L2D_TLB
28019151
13062566
26967792
0
0
62723768
15030483
20277594
0
41160435
0
28127160

View File

@@ -0,0 +1,57 @@
import matplotlib.pyplot as plt
import numpy as np
# ypoints = np.array([19636392729, 9856229208,9445728437,5148906386])
# xpoints = np.array([5,10,15,20])
# ypoints1 = np.array([10062197042, 9873241615,12034929886,5118684853])
# xpoints1 = np.array([5,10,15,20])
ypoints = np.array(np.array([int(x) for x in """0
0
202420
108748
7366843
12350564
13586069
6779734
56950""".replace(' ',',').replace('\n','').split(",")]))
xpoints = np.array([(i) for i, x in enumerate(ypoints, 1)])
ypoints1 = np.array(np.array([int(x) for x in """105883
0
135218
0
8322082
12700590
12017926
6160362
134527""".replace(' ',',').replace('\n','').split(",")]))
xpoints1 = np.array([(i) for i, x in enumerate(ypoints1, 1)])
plt.plot(xpoints, ypoints,label='Malloc Physically contigous with bounds')
plt.plot(xpoints1, ypoints1,label='System memory allocator')
'''
L1D_CACHE_LMISS_RD
The counter counts each Memory-read operation to the Level 1 data or unified cache counted by L1D_CACHE that incurs additional latency because it returns data from outside of the Level 1 data or unified cache of this PE.
The event indicates to software that the access missed in the Level 1 data or unified cache and might have a significant performance impact due to the additional latency compared to the latency of an access that hits in the Level 1 data or unified cache.
The counter does not count:
• Accesses where the additional latency is unlikely to be significantly performance-impacting. For example, if the access hits in another cache in the same local cluster, and the additional latency is small when compared to a miss in all Level 1 caches that the access looks up in and results in an access being made to a Level 2 cache or elsewhere beyond the Level 1 data or unified cache.
• A miss that does not cause a new cache refill but is satisfied from a previous miss.
An implementation is not required to measure the latency, nor to track the access to determine whether the additional latency caused a performance impact. An implementation can extend the definition of this event with additional scenarios where an access might have a significant performance impact due to additional latency for the access.
It is IMPLEMENTATION DEFINED whether accesses that result from cache maintenance operations are counted.
If the cache is shared and the Effective value of PMEVTYPER<n>_EL0.MT for the counter is 0, then the counter counts only events Attributable to the PE counting the event. For a multithreaded processor implementation, if the cache is shared by PEs other than the PEs in the multithreaded processor and the Effective value of PMEVTYPER<n>_EL0.MT for the counter is 1, then the counter counts only events Attributable to PEs in the multithreaded processor. In all other cases, it is IMPLEMENTATION DEFINED whether only events Attributable to the PE counting the event or all events are counted, and might depend on the Effective value of PMEVTYPER<n>_EL1.MT.
PMCEID1_EL0[25] reads as 1 if this event is implemented and 0 otherwise. This event must be implemented if FEAT_PMUv3p4 is implemented.
'''
# plt.title("L1D cache miss read \n ARM Performance counter: L1D_CACHE_LMISS_RD \n each Memory-read operation or Memory-write operation that causes a cache \n access to at least the Level 1 data or unified cache. This includes each complete or partial translation table walk that causes an access to memory, including to data or translation table walk caches. \n Matrix multiply size 1000")
plt.xlabel("time in seconds")
plt.ylabel("L1 cache misses")
# plt.plot(xpoints1, ypoints1)
plt.legend()
# plt.show()
plt.savefig('l1_1000_MatrixMultiply.png')

View File

@@ -0,0 +1,55 @@
import matplotlib.pyplot as plt
import numpy as np
# ypoints = np.array([19636392729, 9856229208,9445728437,5148906386])
# xpoints = np.array([5,10,15,20])
# ypoints1 = np.array([10062197042, 9873241615,12034929886,5118684853])
# xpoints1 = np.array([5,10,15,20])
ypoints = np.array([int(x) for x in """0
2722
0
0
84290
185921
251521
356452""".replace(' ',',').replace('\n','').split(",")])
xpoints = np.array([(i) for i, x in enumerate(ypoints, 1)])
ypoints1 = np.array([int(x) for x in """1310
1658
86
0
73097
171472
237158
161478""".replace(' ',',').replace('\n','').split(",")])
xpoints1 = np.array([(i) for i, x in enumerate(ypoints1, 1)])
plt.plot(xpoints, ypoints,label='Malloc Physically contigous with bounds')
plt.plot(xpoints1, ypoints1,label='System memory allocator')
'''
DTLB_WALK
The counter counts each access counted by L1D_TLB that causes a
refill of a data or unified
TLB involving at least one translation table walk access.
This includes each complete or partial translation table walk that causes an
access to memory, including to data or translation table walk caches.
If Armv8.7 is not implemented, it is IMPLEMENTATION DEFINED whether accesses
that cause an update of an existing TLB entry involving at least one translation
table walk access are counted. If Armv8.7 is implemented, these accesses
are counted.
'''
# plt.title("Data TLB access, read \n ARM Performance counter: DTLB_WALK \n Data TLB access with at least one translation table walk \n This includes each complete or partial translation table walk that causes an access to memory, including to data or translation table walk caches. \n Matrix multiply size 1000")
plt.xlabel("time in seconds")
plt.ylabel("DTLB walks")
# plt.plot(xpoints1, ypoints1)
plt.legend()
# plt.show()
plt.savefig('dtlb_walk_1000_MatrixMultiply.png')

View File

@@ -0,0 +1,50 @@
import matplotlib.pyplot as plt
import numpy as np
# ypoints = np.array([19636392729, 9856229208,9445728437,5148906386])
# xpoints = np.array([5,10,15,20])
# ypoints1 = np.array([10062197042, 9873241615,12034929886,5118684853])
# xpoints1 = np.array([5,10,15,20])
ypoints = np.array([int(x) for x in """0
0
3182857841
2676269451
3632836262
5086931936
4921595689
2380537223""".replace(' ',',').replace('\n','').split(",")])
xpoints = np.array([(i) for i, x in enumerate(ypoints, 1)])
ypoints1 = np.array([int(x) for x in """0
1662045387
2568704269
0
5404906944
4946152426
5097512016
1934071481""".replace(' ',',').replace('\n','').split(",")])
xpoints1 = np.array([(i) for i, x in enumerate(ypoints1, 1)])
plt.plot(xpoints, ypoints,label='Malloc Physically contigous with bounds')
plt.plot(xpoints1, ypoints1,label='System memory allocator')
'''
L1D_TLB
The counter counts each Memory-read operation or Memory-write operation that causes a TLB
access to at least the Level 1 data or unified TLB.
Each access to a TLB entry is counted including multiple accesses caused by single instructions
such as LDM or STM.
'''
# plt.title("Level 1 data TLB access, read \n ARM Performance counter: L1D_TLB_RD \n This counter counts each access counted by \n L1D_TLB that is a Memory-read operation. \n Matrix multiply size 1000")
plt.xlabel("time in seconds")
plt.ylabel("L1 DTLB reads")
# plt.plot(xpoints1, ypoints1)
plt.legend()
# plt.show()
plt.savefig('l1_data_1000_MatrixMultiply.png')

View File

@@ -0,0 +1,55 @@
import matplotlib.pyplot as plt
import numpy as np
# ypoints = np.array([19636392729, 9856229208,9445728437,5148906386])
# xpoints = np.array([5,10,15,20])
# ypoints1 = np.array([10062197042, 9873241615,12034929886,5118684853])
# xpoints1 = np.array([5,10,15,20])
ypoints = np.array([int(x) for x in """13933616
0
0
55855105
177840659
380285140
292719568
163746827""".replace(' ',',').replace('\n','').split(",")])
xpoints = np.array([(i) for i, x in enumerate(ypoints, 1)])
ypoints1 = np.array([int(x) for x in """0
0
48672313
0
243876172
332240431
283300132
151566198""".replace(' ',',').replace('\n','').split(",")])
xpoints1 = np.array([(i) for i, x in enumerate(ypoints1, 1)])
xpoints1 = np.array([(i) for i, x in enumerate(ypoints1, 1)])
plt.plot(xpoints, ypoints,label='Malloc Physically contigous with bounds')
plt.plot(xpoints1, ypoints1,label='System memory allocator')
'''
DTLB_WALK
The counter counts each Memory-read operation or Memory-write operation that causes a
TLB access to at least the Level 2 data or unified TLB.
Each access to a TLB entry is counted including refills
of Level 1 TLBs.
The counter does not count the access if the access i
s due to a TLB maintenance instruction.
'''
# plt.title("Level 2 data TLB acces, read \n ARM Performance counter: L2D_TLB \n The counter counts each Memory-read operation or Memory-write operation that causes a TLB access to at least the Level 2 data or unified TLB. \n Matrix multiply size 1000")
plt.xlabel("time in seconds")
plt.ylabel("L2 DTLB reads")
# plt.plot(xpoints1, ypoints1)
plt.legend()
# plt.show()
plt.savefig('l2_tlb_1000_MatrixMultiply.png')

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

View File

@@ -0,0 +1,41 @@
import matplotlib.pyplot as plt
import numpy as np
# ypoints = np.array([19636392729, 9856229208,9445728437,5148906386])
# xpoints = np.array([5,10,15,20])
# ypoints1 = np.array([10062197042, 9873241615,12034929886,5118684853])
# xpoints1 = np.array([5,10,15,20])
ypoints = np.array([92265,94650])
xpoints = ["Malloc Physically contigous with bounds","System memory allocator"]
# ypoints1 = np.array([19384360])
# xpoints1 = np.array([(i) for i, x in enumerate(ypoints1, 1)])
plt.bar(xpoints, ypoints)
# plt.bar(xpoints1, ypoints1,label='System memory allocator')
'''
L1D_CACHE_LMISS_RD
The counter counts each Memory-read operation to the Level 1 data or unified cache counted by L1D_CACHE that incurs additional latency because it returns data from outside of the Level 1 data or unified cache of this PE.
The event indicates to software that the access missed in the Level 1 data or unified cache and might have a significant performance impact due to the additional latency compared to the latency of an access that hits in the Level 1 data or unified cache.
The counter does not count:
• Accesses where the additional latency is unlikely to be significantly performance-impacting. For example, if the access hits in another cache in the same local cluster, and the additional latency is small when compared to a miss in all Level 1 caches that the access looks up in and results in an access being made to a Level 2 cache or elsewhere beyond the Level 1 data or unified cache.
• A miss that does not cause a new cache refill but is satisfied from a previous miss.
An implementation is not required to measure the latency, nor to track the access to determine whether the additional latency caused a performance impact. An implementation can extend the definition of this event with additional scenarios where an access might have a significant performance impact due to additional latency for the access.
It is IMPLEMENTATION DEFINED whether accesses that result from cache maintenance operations are counted.
If the cache is shared and the Effective value of PMEVTYPER<n>_EL0.MT for the counter is 0, then the counter counts only events Attributable to the PE counting the event. For a multithreaded processor implementation, if the cache is shared by PEs other than the PEs in the multithreaded processor and the Effective value of PMEVTYPER<n>_EL0.MT for the counter is 1, then the counter counts only events Attributable to PEs in the multithreaded processor. In all other cases, it is IMPLEMENTATION DEFINED whether only events Attributable to the PE counting the event or all events are counted, and might depend on the Effective value of PMEVTYPER<n>_EL1.MT.
PMCEID1_EL0[25] reads as 1 if this event is implemented and 0 otherwise. This event must be implemented if FEAT_PMUv3p4 is implemented.
'''
# plt.title("L1D cache miss read \n ARM Performance counter: L1D_CACHE_LMISS_RD \n each Memory-read operation or Memory-write operation that causes a cache \n access to at least the Level 1 data or unified cache. This includes each complete or partial translation table walk that causes an access to memory, including to data or translation table walk caches. \n Histogram medium")
plt.xlabel("time in seconds")
plt.ylabel("L1D cache misses")
# plt.plot(xpoints1, ypoints1)
plt.legend()
# plt.show()
plt.savefig('ll_200_MatrixMultiply.png')

View File

@@ -0,0 +1,37 @@
import matplotlib.pyplot as plt
import numpy as np
# ypoints = np.array([19636392729, 9856229208,9445728437,5148906386])
# xpoints = np.array([5,10,15,20])
# ypoints1 = np.array([10062197042, 9873241615,12034929886,5118684853])
# xpoints1 = np.array([5,10,15,20])
ypoints = np.array([26005,8517])
xpoints = ["Malloc Physically contigous with bounds","System memory allocator"]
plt.bar(xpoints, ypoints)
'''
DTLB_WALK
The counter counts each access counted by L1D_TLB that causes a
refill of a data or unified
TLB involving at least one translation table walk access.
This includes each complete or partial translation table walk that causes an
access to memory, including to data or translation table walk caches.
If Armv8.7 is not implemented, it is IMPLEMENTATION DEFINED whether accesses
that cause an update of an existing TLB entry involving at least one translation
table walk access are counted. If Armv8.7 is implemented, these accesses
are counted.
'''
# plt.title("Data TLB access, read \n ARM Performance counter: DTLB_WALK \n Data TLB access with at least one translation table walk \n This includes each complete or partial translation table walk that causes an access to memory, including to data or translation table walk caches. \n Matrix multiply size 200")
plt.xlabel("time in seconds")
plt.ylabel("DTLB walks")
# plt.plot(xpoints1, ypoints1)
plt.legend()
# plt.show()
plt.savefig('dtlb_walk_200_MatrixMultiply.png')

View File

@@ -0,0 +1,31 @@
import matplotlib.pyplot as plt
import numpy as np
# ypoints = np.array([19636392729, 9856229208,9445728437,5148906386])
# xpoints = np.array([5,10,15,20])
# ypoints1 = np.array([10062197042, 9873241615,12034929886,5118684853])
# xpoints1 = np.array([5,10,15,20])
ypoints = np.array([399876441,380500198])
xpoints = ["Malloc Physically contigous with bounds","System memory allocator"]
plt.bar(xpoints, ypoints,label='Malloc Physically contigous with bounds')
'''
L1D_TLB
The counter counts each Memory-read operation or Memory-write operation that causes a TLB
access to at least the Level 1 data or unified TLB.
Each access to a TLB entry is counted including multiple accesses caused by single instructions
such as LDM or STM.
'''
# plt.title("Level 1 data TLB access, read \n ARM Performance counter: L1D_TLB_RD \n This counter counts each access counted by \n L1D_TLB that is a Memory-read operation. \n Matrix multiply size 200")
plt.xlabel("time in seconds")
plt.ylabel("L1 DTLB reads")
# plt.plot(xpoints1, ypoints1)
# plt.legend()
# plt.show()
plt.savefig('l1_tlb_200_MatrixMultiply.png')

View File

@@ -0,0 +1,33 @@
import matplotlib.pyplot as plt
import numpy as np
# ypoints = np.array([19636392729, 9856229208,9445728437,5148906386])
# xpoints = np.array([5,10,15,20])
# ypoints1 = np.array([10062197042, 9873241615,12034929886,5118684853])
# xpoints1 = np.array([5,10,15,20])
ypoints = np.array([3013349,2946541])
xpoints = ["Malloc Physically contigous with bounds","System memory allocator"]
plt.bar(xpoints, ypoints)
'''
The counter counts each Memory-read operation or Memory-write operation that causes a
TLB access to at least the Level 2 data or unified TLB.
Each access to a TLB entry is counted including refills
of Level 1 TLBs.
The counter does not count the access if the access i
s due to a TLB maintenance instruction.
'''
# plt.title("Level 2 data TLB acces, read \n ARM Performance counter: L2D_TLB \n The counter counts each Memory-read operation or Memory-write operation that causes a TLB access to at least the Level 2 data or unified TLB. \n Matrix Multiply size 200")
plt.xlabel("time in seconds")
plt.ylabel("L2 DTLB reads")
# plt.plot(xpoints1, ypoints1)
plt.legend()
# plt.show()
plt.savefig('l2_tlb_200_MatrixMultiply.png')

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View File

@@ -0,0 +1,331 @@
import matplotlib.pyplot as plt
import numpy as np
# ypoints = np.array([19636392729, 9856229208,9445728437,5148906386])
# xpoints = np.array([5,10,15,20])
# ypoints1 = np.array([10062197042, 9873241615,12034929886,5118684853])
# xpoints1 = np.array([5,10,15,20])
ypoints1 = np.array(np.array([int(x) for x in """0
0
0
326765
0
143484
0
0
0
0
0
0
464576
99734
70229
78698
50530
93548
64971
10767
137521
7028
132692
73331
73142
0
138998
0
78208
0
198635
0
126237
77513
73931
72472
75476
0
87771
88689
110750
73056
70395
0
137320
0
106593
0
113893
0
0
247353
71688
0
0
0
306619
48398
76920
72885
0
160647
56256
58108
99557
0
122549
79748
77494
0
142310
0
131992
71645
0
152255
73324
70870
67944
72820
72185
71309
70495
74632
0
142266
15879
123504
0
138605
70871
68983
17283
125136
45899
49622
62345
123180
0
127536
83637
19920
116609
23423
70723
52828
88384
75240
74572
15926815
21348754
20703968
22389062
20992753
21657595
21797899
21449332
22178036
21222075
20807027
24825060
24390913
27926846
24373458
23572469
21851595
21905648
21818847
24682778
25138079
24572099
22573802
24027619
25668582
23439214
21842812
21773955
21937392
22182668
21837997
22016854
23966253
25743918
22093267
23362716
21546631
23028139
25033183
24980317
24431848
22165558
22660672
22342552
21674610
21231647
23343685
25355447
21432591
15824624
19407533
24295429
22510455
17120495
19704211
20393780
24520902
25454814
22826189
23197333
23909896
24263964
21327971
17364694
15234428
21608937
22042900
24071774
21218994
24225649
24232228
22718402
22553169
24904231
5354218""".replace(' ',',').replace('\n','').split(",")]))
xpoints1 = np.array([(i) for i, x in enumerate(ypoints1, 1)])
ypoints = np.array(np.array([int(x) for x in """99132
38980
0
197161
0
67519
0
140400
0
143043
0
0
0
284282
0
140444
0
134435
83831
50211
75049
0
0
0
288554
74050
71429
74809
73262
73649
0
140714
70424
0
147499
68600
81265
0
139783
64799
0
151170
68801
0
145452
0
125288
0
163795
0
141640
73859
74317
64148
0
136959
72307
69894
77496
67138
0
139846
70331
0
132302
70375
0
84102
123513
0
144565
3028
137573
5823
71125
134909
0
138289
0
134450
0
142950
0
86537
111946
0
114053
0
128592
91062
0
0
238779
74466
70433
77585
28764
73445
110675
34944
106227
73441
66853
38920
72495
104062
11226
105905
70625
56476""".replace(' ',',').replace('\n','').split(",")]))
xpoints = np.array([(i) for i, x in enumerate(ypoints, 1)])
plt.plot(xpoints, ypoints,label='Malloc Physically contigous with bounds')
plt.plot(xpoints1, ypoints1,label='System memory allocator')
'''
L1D_CACHE_LMISS_RD
The counter counts each Memory-read operation to the Level 1 data or unified cache counted by L1D_CACHE that incurs additional latency because it returns data from outside of the Level 1 data or unified cache of this PE.
The event indicates to software that the access missed in the Level 1 data or unified cache and might have a significant performance impact due to the additional latency compared to the latency of an access that hits in the Level 1 data or unified cache.
The counter does not count:
• Accesses where the additional latency is unlikely to be significantly performance-impacting. For example, if the access hits in another cache in the same local cluster, and the additional latency is small when compared to a miss in all Level 1 caches that the access looks up in and results in an access being made to a Level 2 cache or elsewhere beyond the Level 1 data or unified cache.
• A miss that does not cause a new cache refill but is satisfied from a previous miss.
An implementation is not required to measure the latency, nor to track the access to determine whether the additional latency caused a performance impact. An implementation can extend the definition of this event with additional scenarios where an access might have a significant performance impact due to additional latency for the access.
It is IMPLEMENTATION DEFINED whether accesses that result from cache maintenance operations are counted.
If the cache is shared and the Effective value of PMEVTYPER<n>_EL0.MT for the counter is 0, then the counter counts only events Attributable to the PE counting the event. For a multithreaded processor implementation, if the cache is shared by PEs other than the PEs in the multithreaded processor and the Effective value of PMEVTYPER<n>_EL0.MT for the counter is 1, then the counter counts only events Attributable to PEs in the multithreaded processor. In all other cases, it is IMPLEMENTATION DEFINED whether only events Attributable to the PE counting the event or all events are counted, and might depend on the Effective value of PMEVTYPER<n>_EL1.MT.
PMCEID1_EL0[25] reads as 1 if this event is implemented and 0 otherwise. This event must be implemented if FEAT_PMUv3p4 is implemented.
'''
plt.title("L1D cache miss read \n ARM Performance counter: L1D_CACHE_LMISS_RD \n each Memory-read operation or Memory-write operation that causes a cache \n access to at least the Level 1 data or unified cache. This includes each complete or partial translation table walk that causes an access to memory, including to data or translation table walk caches. \n Histogram medium")
plt.xlabel("time in seconds")
plt.ylabel("DTLB walks")
# plt.plot(xpoints1, ypoints1)
plt.legend()
plt.show()

Some files were not shown because too many files have changed in this diff Show More