Skip to content
Snippets Groups Projects
Commit 28ca6aed authored by Jammer, Tim's avatar Jammer, Tim
Browse files

Merge branch 'devel-TJ' into 'main'

Initial template infrastructure

See merge request !1
parents 8d828dba 344a5f81
Branches
No related tags found
1 merge request!1Initial template infrastructure
Showing with 696 additions and 0 deletions
# Use our own docker image, that was generated and pushed with the following commands:
# docker login registry.gitlab.inria.fr
# docker build -t registry.gitlab.inria.fr/quinson/mbi2 .
# docker push registry.gitlab.inria.fr/quinson/mbi2
# image: registry.gitlab.com/mwapl/benchmarking-mpi:latest
# image: registry.gitlab.inria.fr/quinson/mbi2:latest
image: registry.hub.docker.com/mquinson/mbi
variables:
GIT_SUBMODULE_STRATEGY: none
stages:
- build
- test
- gather # For the tests that are split in several jobs (ISP, MUST, CIVL), rerun them all in one
- deploy
build-must:
stage: build
needs: []
script:
- scripts/ensure_python3 ./MBI.py -x must -c build
artifacts:
untracked: false
paths:
- builds/MUST
test-must-1:
stage: test
needs:
- job: build-must
artifacts: true
before_script:
- apt-get install -y psmisc
script:
- rm -rf /MBI/*; scripts/ensure_python3 ./MBI.py -c generate
- scripts/ensure_python3 ./MBI.py -x must -c run -b 1/10
artifacts:
untracked: false
when: always
paths:
- logs
test-must-2:
stage: test
needs:
- job: build-must
artifacts: true
before_script:
- apt-get install -y psmisc
script:
- rm -rf /MBI/*; scripts/ensure_python3 ./MBI.py -c generate
- scripts/ensure_python3 ./MBI.py -x must -c run -b 2/10
artifacts:
untracked: false
when: always
paths:
- logs
test-must-3:
stage: test
needs:
- job: build-must
artifacts: true
before_script:
- apt-get install -y psmisc
script:
- rm -rf /MBI/*; scripts/ensure_python3 ./MBI.py -c generate
- scripts/ensure_python3 ./MBI.py -x must -c run -b 3/10
artifacts:
untracked: false
when: always
paths:
- logs
test-must-4:
stage: test
needs:
- job: build-must
artifacts: true
before_script:
- apt-get install -y psmisc
script:
- rm -rf /MBI/*; scripts/ensure_python3 ./MBI.py -c generate
- scripts/ensure_python3 ./MBI.py -x must -c run -b 4/10
artifacts:
untracked: false
when: always
paths:
- logs
test-must-5:
stage: test
needs:
- job: build-must
artifacts: true
before_script:
- apt-get install -y psmisc
script:
- rm -rf /MBI/*; scripts/ensure_python3 ./MBI.py -c generate
- scripts/ensure_python3 ./MBI.py -x must -c run -b 5/10
artifacts:
untracked: false
when: always
paths:
- logs
test-must-6:
stage: test
needs:
- job: build-must
artifacts: true
before_script:
- apt-get install -y psmisc
script:
- rm -rf /MBI/*; scripts/ensure_python3 ./MBI.py -c generate
- scripts/ensure_python3 ./MBI.py -x must -c run -b 6/10
artifacts:
untracked: false
when: always
paths:
- logs
test-must-7:
stage: test
needs:
- job: build-must
artifacts: true
before_script:
- apt-get install -y psmisc
script:
- rm -rf /MBI/*; scripts/ensure_python3 ./MBI.py -c generate
- scripts/ensure_python3 ./MBI.py -x must -c run -b 7/10
artifacts:
untracked: false
when: always
paths:
- logs
test-must-8:
stage: test
needs:
- job: build-must
artifacts: true
before_script:
- apt-get install -y psmisc
script:
- rm -rf /MBI/*; scripts/ensure_python3 ./MBI.py -c generate
- scripts/ensure_python3 ./MBI.py -x must -c run -b 8/10
artifacts:
untracked: false
when: always
paths:
- logs
test-must-9:
stage: test
needs:
- job: build-must
artifacts: true
before_script:
- apt-get install -y psmisc
script:
- rm -rf /MBI/*; scripts/ensure_python3 ./MBI.py -c generate
- scripts/ensure_python3 ./MBI.py -x must -c run -b 9/10
artifacts:
untracked: false
when: always
paths:
- logs
test-must-10:
stage: test
needs:
- job: build-must
artifacts: true
before_script:
- apt-get install -y psmisc
script:
- rm -rf /MBI/*; scripts/ensure_python3 ./MBI.py -c generate
- scripts/ensure_python3 ./MBI.py -x must -c run -b 10/10
artifacts:
untracked: false
when: always
paths:
- logs
test-must-all:
stage: gather
needs:
- job: build-must
artifacts: true
- job: test-must-1
artifacts: true
- job: test-must-2
artifacts: true
- job: test-must-3
artifacts: true
- job: test-must-4
artifacts: true
- job: test-must-5
artifacts: true
- job: test-must-6
artifacts: true
- job: test-must-7
artifacts: true
- job: test-must-8
artifacts: true
- job: test-must-9
artifacts: true
- job: test-must-10
artifacts: true
script:
- rm -rf /MBI/*; scripts/ensure_python3 ./MBI.py -c generate
- scripts/ensure_python3 ./MBI.py -x must
artifacts:
untracked: false
when: always
paths:
- logs/*
build-aislinn:
stage: build
needs: []
image: ubuntu:18.04
script:
- scripts/ensure_python3 ./MBI.py -x aislinn -c build
artifacts:
untracked: false
when: always
paths:
- tools/aislinn-git/*
test-aislinn:
stage: test
image: ubuntu:18.04
needs:
- job: build-aislinn
artifacts: true
script:
- rm -rf /MBI/*; scripts/ensure_python3 ./MBI.py -c generate
- scripts/ensure_python3 ./MBI.py -x aislinn
artifacts:
untracked: false
when: always
paths:
- logs
# MPI-SV refuses to build on nested virtualization as we have when using docker on gitlab-CI
#test-mpisv:
# stage: test
# image: mpisv/mpi-sv
# needs: []
# tags:
# - baremetal
# image: registry.hub.docker.com/mquinson/mbi
# script:
# - rm -rf /MBI/*; scripts/ensure_python3 ./MBI.py -c generate
# - scripts/ensure_python3 ./MBI.py -x mpisv
# artifacts:
# untracked: false
# when: always
# paths:
# - logs
test-civl-1:
stage: test
needs: []
script:
- rm -rf /MBI/*; scripts/ensure_python3 ./MBI.py -c generate
- scripts/ensure_python3 ./MBI.py -x civl -c run -b 1/4
artifacts:
untracked: false
when: always
paths:
- logs
test-civl-2:
stage: test
needs: []
script:
- rm -rf /MBI/*; scripts/ensure_python3 ./MBI.py -c generate
- scripts/ensure_python3 ./MBI.py -x civl -c run -b 2/4
artifacts:
untracked: false
when: always
paths:
- logs
test-civl-3:
stage: test
needs: []
script:
- rm -rf /MBI/*; scripts/ensure_python3 ./MBI.py -c generate
- scripts/ensure_python3 ./MBI.py -x civl -c run -b 3/4
artifacts:
untracked: false
when: always
paths:
- logs
test-civl-4:
stage: test
needs: []
script:
- rm -rf /MBI/*; scripts/ensure_python3 ./MBI.py -c generate
- scripts/ensure_python3 ./MBI.py -x civl -c run -b 4/4
artifacts:
untracked: false
when: always
paths:
- logs
test-civl-all:
stage: gather
needs:
- job: test-civl-1
artifacts: true
- job: test-civl-2
artifacts: true
- job: test-civl-3
artifacts: true
- job: test-civl-4
artifacts: true
script:
- rm -rf /MBI/*; scripts/ensure_python3 ./MBI.py -c generate
- scripts/ensure_python3 ./MBI.py -x civl
artifacts:
untracked: false
when: always
paths:
- logs/*
build-parcoach:
stage: build
needs: []
script:
- scripts/ensure_python3 ./MBI.py -x parcoach -c build
artifacts:
untracked: false
when: always
paths:
- builds/parcoach/*
test-parcoach:
stage: test
needs:
- job: build-parcoach
artifacts: true
script:
- rm -rf /MBI/*; scripts/ensure_python3 ./MBI.py -c generate
- scripts/ensure_python3 ./MBI.py -x parcoach
artifacts:
untracked: false
when: always
paths:
- logs
build-simgrid:
stage: build
needs: []
script:
- scripts/ensure_python3 ./MBI.py -x simgrid -c build
cache:
paths:
- SimGrid/*
artifacts:
untracked: false
when: always
paths:
- builds/SimGrid
test-simgrid:
stage: test
needs:
- job: build-simgrid
artifacts: true
script:
- rm -rf /MBI/*; scripts/ensure_python3 ./MBI.py -c generate
- scripts/ensure_python3 ./MBI.py -x simgrid
artifacts:
untracked: false
when: always
paths:
- logs
test-smpi:
stage: test
needs:
- job: build-simgrid
artifacts: true
script:
- rm -rf /MBI/*; scripts/ensure_python3 ./MBI.py -c generate
- scripts/ensure_python3 ./MBI.py -x smpi
artifacts:
untracked: false
when: always
paths:
- logs
test-smpivg-1:
stage: test
needs:
- job: build-simgrid
artifacts: true
script:
- rm -rf /MBI/*; scripts/ensure_python3 ./MBI.py -c generate
- scripts/ensure_python3 ./MBI.py -x smpivg -b 1/3
artifacts:
untracked: false
when: always
paths:
- logs
test-smpivg-2:
stage: test
needs:
- job: build-simgrid
artifacts: true
script:
- rm -rf /MBI/*; scripts/ensure_python3 ./MBI.py -c generate
- scripts/ensure_python3 ./MBI.py -x smpivg -b 2/3
artifacts:
untracked: false
when: always
paths:
- logs
test-smpivg-3:
stage: test
needs:
- job: build-simgrid
artifacts: true
script:
- rm -rf /MBI/*; scripts/ensure_python3 ./MBI.py -c generate
- scripts/ensure_python3 ./MBI.py -x smpivg -b 3/3
artifacts:
untracked: false
when: always
paths:
- logs
test-smpivg-all:
stage: gather
needs:
- job: test-smpivg-1
artifacts: true
- job: test-smpivg-2
artifacts: true
- job: test-smpivg-3
artifacts: true
script:
- rm -rf /MBI/*; scripts/ensure_python3 ./MBI.py -c generate
- scripts/ensure_python3 ./MBI.py -x smpivg
artifacts:
untracked: false
when: always
paths:
- logs
#test-itac:
# stage: test
# needs: []
# tags:
# - baremetal
# image: registry.hub.docker.com/mquinson/mbi
# script:
# - rm -rf /MBI/*; scripts/ensure_python3 ./MBI.py -c generate
# - scripts/ensure_python3 ./MBI.py -x itac -c run
# artifacts:
# untracked: false
# when: always
# paths:
# - logs
build-isp:
stage: build
needs: []
script:
- scripts/ensure_python3 ./MBI.py -x isp -c build
artifacts:
untracked: false
when: always
paths:
- ./builds/ISP
test-isp-1:
stage: test
needs:
- job: build-isp
artifacts: true
script:
- rm -rf /MBI/*; scripts/ensure_python3 ./MBI.py -c generate
- scripts/ensure_python3 ./MBI.py -x isp -c run -b 1/2
artifacts:
untracked: false
when: always
paths:
- logs
test-isp-2:
stage: test
needs:
- job: build-isp
artifacts: true
script:
- rm -rf /MBI/*; scripts/ensure_python3 ./MBI.py -c generate
- scripts/ensure_python3 ./MBI.py -x isp -c run -b 2/2
artifacts:
untracked: false
when: always
paths:
- logs
test-isp-all:
stage: gather
needs:
- job: test-isp-1
artifacts: true
- job: test-isp-2
artifacts: true
script:
- rm -rf /MBI/*; scripts/ensure_python3 ./MBI.py -c generate
- scripts/ensure_python3 ./MBI.py -x isp
artifacts:
untracked: false
when: always
paths:
- logs/*
latex:
stage: deploy
when: always
script:
- apt update ; apt -y install texlive-latex-base texlive-latex-extra texlive-pictures
- rm -rf /MBI/*; scripts/ensure_python3 ./MBI.py -c generate
- scripts/ensure_python3 ./MBI.py -c latex
- cd script ; ./tools/gen_latex.py ; cd ..
- cd latex ; pdflatex -batch dashboard.tex ; cd ..
artifacts:
untracked: false
when: always
paths:
- latex
pages:
stage: deploy
when: always
script:
- rm -rf /MBI/*; scripts/ensure_python3 ./MBI.py -c generate
- scripts/ensure_python3 ./MBI.py -c html
- pwd ; ls
- mkdir public
- cp -r *.html gencodes img logs public/
artifacts:
untracked: false
when: always
paths:
- public
builds
logs
gencodes
*.log
*.html
*.tex
*.csv
*~
.git
.vscode
*~
gencodes/
builds/
logs
*.tex
*.log
*.html
__pycache__/
*.pyc
scripts/original_MBI_generators/__pycache__/
scripts/tools/__pycache__/
scripts/__pycache__/
# OS generated files #
######################
*.DS_Store
#IDE specific files
.idea
<svg xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 0 40 45">
<text x="20" y="40" style="fill: orange; stroke: #000000; font-size: 48px; text-anchor: middle">C</text>
</svg>
<svg xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 0 40 45">
<text x="20" y="40" style="fill: yellow; stroke: #000000; font-size: 48px; text-anchor: middle">R</text>
</svg>
<svg xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 0 40 45">
<text x="20" y="40" style="fill: blue; stroke: #000000; font-size: 48px; text-anchor: middle">T</text>
</svg>
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
width="526.3157894736842" height="126.05042016806722" viewBox="0 -126.05042016806722 526.3157894736842 126.05042016806722">
<defs>
</defs>
<image x="10" y="-118.65546218487394" width="35.08771929824561" height="12.605042016806722" xlink:href="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDIxLjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCINCgkgdmlld0JveD0iMCAwIDgwLjU4OCA2MS4xNTgiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDgwLjU4OCA2MS4xNTg7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxwYXRoIHN0eWxlPSJmaWxsOmdyZWVuOyIgZD0iTTI5LjY1OCw2MS4xNTdjLTEuMjM4LDAtMi40MjctMC40OTEtMy4zMDUtMS4zNjlMMS4zNywzNC44MDhjLTEuODI2LTEuODI1LTEuODI2LTQuNzg1LDAtNi42MTENCgljMS44MjUtMS44MjYsNC43ODYtMS44MjcsNi42MTEsMGwyMS40ODUsMjEuNDgxTDcyLjQyNiwxLjU2MWMxLjcxOS0xLjkyNCw0LjY3NC0yLjA5NCw2LjYwMS0wLjM3NA0KCWMxLjkyNiwxLjcyLDIuMDk0LDQuNjc1LDAuMzc0LDYuNjAxTDMzLjE0NSw1OS41OTVjLTAuODU2LDAuOTU5LTIuMDcsMS41MjMtMy4zNTUsMS41NkMyOS43NDYsNjEuMTU2LDI5LjcwMiw2MS4xNTcsMjkuNjU4LDYxLjE1N3oNCgkiLz4NCjwvc3ZnPg0K" />
<rect x="10" y="-118.65546218487394" width="35.08771929824561" height="12.605042016806722" fill="none" stroke="black" stroke-width="0.2" />
<text x="62.63157894736841" y="-106.05042016806722" font-size="15" fill="black" dy="0em">Right</text>
<image x="10" y="-99.74789915966386" width="35.08771929824561" height="12.605042016806722" xlink:href="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJjcm9zcy0xNSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMTVweCIgaGVpZ2h0PSIxNXB4IiB2aWV3Qm94PSIwIDAgMTUgMTUiPgogIDxwYXRoIGQ9Ik0yLjY0LDEuMjdMNy41LDYuMTNsNC44NC00Ljg0QzEyLjUxMTQsMS4xMDc2LDEyLjc0OTcsMS4wMDI5LDEzLDFjMC41NTIzLDAsMSwwLjQ0NzcsMSwxJiN4QTsmI3g5O2MwLjAwNDcsMC4yNDc4LTAuMDkzLDAuNDg2Ni0wLjI3LDAuNjZMOC44NCw3LjVsNC44OSw0Ljg5YzAuMTY0OCwwLjE2MTIsMC4yNjE1LDAuMzc5NiwwLjI3LDAuNjFjMCwwLjU1MjMtMC40NDc3LDEtMSwxJiN4QTsmI3g5O2MtMC4yNTc3LDAuMDEwNy0wLjUwOC0wLjA4NzMtMC42OS0wLjI3TDcuNSw4Ljg3bC00Ljg1LDQuODVDMi40NzkzLDEzLjg5NjMsMi4yNDUzLDEzLjk5NzEsMiwxNGMtMC41NTIzLDAtMS0wLjQ0NzctMS0xJiN4QTsmI3g5O2MtMC4wMDQ3LTAuMjQ3OCwwLjA5My0wLjQ4NjYsMC4yNy0wLjY2TDYuMTYsNy41TDEuMjcsMi42MUMxLjEwNTIsMi40NDg4LDEuMDA4NSwyLjIzMDQsMSwyYzAtMC41NTIzLDAuNDQ3Ny0xLDEtMSYjeEE7JiN4OTtDMi4yNDA0LDEuMDAyOSwyLjQ3MDEsMS4wOTk4LDIuNjQsMS4yN3oiIHN0cm9rZT0icmVkIi8+Cjwvc3ZnPgo=" />
<rect x="10" y="-99.74789915966386" width="35.08771929824561" height="12.605042016806722" fill="none" stroke="black" stroke-width="0.2" />
<text x="62.63157894736841" y="-87.14285714285714" font-size="15" fill="black" dy="0em">Wrong</text>
<image x="10" y="-80.84033613445378" width="35.08771929824561" height="12.605042016806722" xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgICAgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiCiAgICAgdmlld0JveD0iMCAwIDQwIDQ1Ij4KCiAgICA8dGV4dCB4PSIyMCIgeT0iNDAiIHN0eWxlPSJmaWxsOiBibHVlOyBzdHJva2U6ICMwMDAwMDA7ICBmb250LXNpemU6IDQ4cHg7IHRleHQtYW5jaG9yOiBtaWRkbGUiPlQ8L3RleHQ+Cjwvc3ZnPgo=" />
<rect x="10" y="-80.84033613445378" width="35.08771929824561" height="12.605042016806722" fill="none" stroke="black" stroke-width="0.2" />
<text x="62.63157894736841" y="-68.23529411764706" font-size="15" fill="black" dy="0em">Time Out</text>
<image x="10" y="-61.9327731092437" width="35.08771929824561" height="12.605042016806722" xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgICAgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiCiAgICAgdmlld0JveD0iMCAwIDQwIDQ1Ij4KCiAgICA8dGV4dCB4PSIyMCIgeT0iNDAiIHN0eWxlPSJmaWxsOiBvcmFuZ2U7IHN0cm9rZTogIzAwMDAwMDsgIGZvbnQtc2l6ZTogNDhweDsgdGV4dC1hbmNob3I6IG1pZGRsZSI+QzwvdGV4dD4KPC9zdmc+Cg==" />
<rect x="10" y="-61.9327731092437" width="35.08771929824561" height="12.605042016806722" fill="none" stroke="black" stroke-width="0.2" />
<text x="62.63157894736841" y="-49.32773109243698" font-size="15" fill="black" dy="0em">Unsupported feature</text>
<image x="10" y="-43.02521008403362" width="35.08771929824561" height="12.605042016806722" xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgICAgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiCiAgICAgdmlld0JveD0iMCAwIDQwIDQ1Ij4KCiAgICA8dGV4dCB4PSIyMCIgeT0iNDAiIHN0eWxlPSJmaWxsOiB5ZWxsb3c7IHN0cm9rZTogIzAwMDAwMDsgIGZvbnQtc2l6ZTogNDhweDsgdGV4dC1hbmNob3I6IG1pZGRsZSI+UjwvdGV4dD4KPC9zdmc+Cg==" />
<rect x="10" y="-43.02521008403362" width="35.08771929824561" height="12.605042016806722" fill="none" stroke="black" stroke-width="0.2" />
<text x="62.63157894736841" y="-30.420168067226893" font-size="15" fill="black" dy="0em">Run time error</text>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg version="1.1" id="cross-15" xmlns="http://www.w3.org/2000/svg" width="15px" height="15px" viewBox="0 0 15 15">
<path d="M2.64,1.27L7.5,6.13l4.84-4.84C12.5114,1.1076,12.7497,1.0029,13,1c0.5523,0,1,0.4477,1,1&#xA;&#x9;c0.0047,0.2478-0.093,0.4866-0.27,0.66L8.84,7.5l4.89,4.89c0.1648,0.1612,0.2615,0.3796,0.27,0.61c0,0.5523-0.4477,1-1,1&#xA;&#x9;c-0.2577,0.0107-0.508-0.0873-0.69-0.27L7.5,8.87l-4.85,4.85C2.4793,13.8963,2.2453,13.9971,2,14c-0.5523,0-1-0.4477-1-1&#xA;&#x9;c-0.0047-0.2478,0.093-0.4866,0.27-0.66L6.16,7.5L1.27,2.61C1.1052,2.4488,1.0085,2.2304,1,2c0-0.5523,0.4477-1,1-1&#xA;&#x9;C2.2404,1.0029,2.4701,1.0998,2.64,1.27z" stroke="red"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 0 50 45">
<text x="24" y="28" style="fill: green; stroke: green; font-size: 19px; text-anchor: middle">COLL</text>
</svg>
<svg xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 0 50 45">
<text x="24" y="28" style="fill: pink; stroke: black; font-size: 21px; text-anchor: middle">COM</text>
</svg>
<svg xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 0 50 45">
<text x="24" y="28" style="fill: blue; stroke: blue; font-size: 19px; text-anchor: middle">DATA</text>
</svg>
<svg xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 0 50 45">
<text x="24" y="28" style="fill: brown; stroke: brown; font-size: 22px; text-anchor: middle">GRP</text>
</svg>
<svg xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 0 50 45">
<text x="24" y="28" style="fill: grey; stroke: grey; font-size: 23px; text-anchor: middle">HYB</text>
</svg>
<svg xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 0 50 45">
<text x="24.5" y="32" style="fill: orange; stroke: #000000; font-size: 31px; text-anchor: middle">IO</text>
</svg>
<svg xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 0 50 45">
<text x="24" y="28" style="fill: black; stroke: #000000; font-size: 18px; text-anchor: middle">LOOP</text>
</svg>
<svg xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 0 50 45">
<text x="24.5" y="32" style="fill: orange; stroke: #000000; font-size: 31px; text-anchor: middle">OP</text>
</svg>
<svg xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 0 50 45">
<text x="24" y="28" style="fill: orange; stroke: orange; font-size: 25px; text-anchor: middle">P2P</text>
</svg>
<svg xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 0 50 45">
<text x="24" y="28" style="fill: #d4bd2a; stroke: #d4bd2a; font-size: 18px; text-anchor: middle">PERS</text>
</svg>
<svg xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 0 50 45">
<text x="24" y="28" style="fill: purple; stroke: purple; font-size: 17px; text-anchor: middle">PROB</text>
</svg>
<svg xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 0 50 45">
<text x="24" y="28" style="fill: red; stroke: red; font-size: 22px; text-anchor: middle">RMA</text>
</svg>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment