Compare commits
644 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
9826879bcd | ||
a7103f8510 | |||
![]() |
d931a68b3e | ||
![]() |
a297adab7a | ||
![]() |
b5fd438ce0 | ||
![]() |
a4a5bf0d37 | ||
180ac51aea | |||
73b19ca1c4 | |||
31e8802803 | |||
fe860b2e38 | |||
60b575c8f8 | |||
3a20cb717c | |||
3bbfe0f0ec | |||
04d984d4fc | |||
05c4ed4963 | |||
7cf69d055a | |||
4c80cb3ed1 | |||
4c5e3ae151 | |||
86d0d11869 | |||
bf8c609dbd | |||
706aa4a787 | |||
dd5b85d2c8 | |||
53aa3b3679 | |||
6c33a2f4c0 | |||
ea77f3d72e | |||
c190d27467 | |||
ecf4c5da8c | |||
6285a47f72 | |||
5d4fa15eb9 | |||
bb4e4d7e56 | |||
c9bbd542c5 | |||
6e99d91dae | |||
4c2071e906 | |||
b49671d530 | |||
5c11c469f2 | |||
361290e24f | |||
65d1a5ecec | |||
6af367ba76 | |||
65907a96f4 | |||
05c1724234 | |||
4180300e87 | |||
c61f5a8772 | |||
fdcff58318 | |||
72e60e97ea | |||
132b2fd536 | |||
12835ad23a | |||
06a2262db9 | |||
cc5578e306 | |||
8765588667 | |||
9a8dc382a2 | |||
85859a488d | |||
e54e3e684e | |||
17c74d2e32 | |||
c60f22f7f7 | |||
36cf3121d1 | |||
c8b95313ff | |||
e5448af6d8 | |||
49149e452c | |||
b2d91391b3 | |||
13f70be87b | |||
71aa33d22f | |||
4c3da12ea1 | |||
a47082730a | |||
99dc3904af | |||
acf18c1bb4 | |||
e9788e22ad | |||
6cb983a7c4 | |||
7496a6a866 | |||
c8750b9dfd | |||
d98ca97624 | |||
61d57901b1 | |||
9c82038561 | |||
15dfa48d2d | |||
2457e50712 | |||
92c36502bc | |||
439b716a71 | |||
97282ff051 | |||
093c91521a | |||
74aa7b4ea6 | |||
3d8c84e17c | |||
91e8367d35 | |||
129020e1c5 | |||
d03fe10be8 | |||
3fdbb95080 | |||
![]() |
3103018404 | ||
![]() |
478ed1f5d0 | ||
42feb53c86 | |||
391d695144 | |||
038b9d8564 | |||
5448b5c0ec | |||
be45235d15 | |||
87e4b829c5 | |||
1ab605b70d | |||
fbb78ae22d | |||
a21dc76d81 | |||
49cecb798a | |||
e31f0f1ded | |||
43792fb349 | |||
d6a83a0520 | |||
c803a7566f | |||
670edb6ddc | |||
f5d1e0a3cb | |||
a58b3d194c | |||
d9180d950b | |||
9da7234684 | |||
610b1223d9 | |||
6954f05dee | |||
db57136f1b | |||
2c111fd98c | |||
90f8ae4188 | |||
b4d445b378 | |||
ea79c90c89 | |||
1b2f72cc3a | |||
505245d54c | |||
93ab5a5833 | |||
247ea7e7c3 | |||
d1e8a62396 | |||
2ac67cff18 | |||
eed2273ddf | |||
31d6eb076c | |||
bb5e406af3 | |||
aab33ccfab | |||
98164afc90 | |||
819e83d138 | |||
16b9b2ba85 | |||
9d94189165 | |||
![]() |
9fb53df45d | ||
92cc779caf | |||
e3d72fb14e | |||
014152fc89 | |||
3a300c816e | |||
8c8bde4a0f | |||
0c64f62d01 | |||
d5d5f2fcd4 | |||
51269a478b | |||
bf3165af8b | |||
bd629136ef | |||
e3bd221d01 | |||
8f1f7a2040 | |||
eb1fc0f7da | |||
aaa7769448 | |||
70f34e9e33 | |||
c7dbf643d3 | |||
4fba6cd10e | |||
37a567299e | |||
d1e4f46128 | |||
7cd4fa2bf0 | |||
6aff4388eb | |||
31fa1508f7 | |||
d1312ff6e9 | |||
f4296c66e4 | |||
![]() |
7cb67ecaee | ||
31c3c965c7 | |||
2c58a6058b | |||
929cc12c04 | |||
0404304803 | |||
f8fdcc0a79 | |||
3e5b949c4e | |||
f81c5695f1 | |||
096775f08f | |||
24324ae734 | |||
50837d6173 | |||
815633221d | |||
27a23f25ca | |||
a0e7fad83e | |||
bdd5696641 | |||
989685b134 | |||
55318d9da7 | |||
![]() |
bf2b3b73a0 | ||
454504d0cc | |||
![]() |
3e7006cec7 | ||
4993197fb9 | |||
233e35e8ff | |||
4d95f046ea | |||
7a62e396cb | |||
68fc8b0eba | |||
df0e7b2bd4 | |||
402ea82847 | |||
e4da326c76 | |||
028aa48b98 | |||
b878e5290a | |||
1792c650ec | |||
bae38d1d26 | |||
a2b2d11b0d | |||
1930cc4fd6 | |||
7212273141 | |||
6bfacf0e1e | |||
0439399f05 | |||
75833f5e21 | |||
1918ab6669 | |||
2b2a0eea8e | |||
ae7ef21014 | |||
0a534f6c46 | |||
1959ad047f | |||
f56bc51dd5 | |||
0496aeffc6 | |||
bf2b4af15a | |||
6d584c646c | |||
0f7ccc89de | |||
998200d507 | |||
c424a3177d | |||
3267ea873f | |||
e002db72fd | |||
2b18171e94 | |||
effdf36f7e | |||
927837df25 | |||
c7e8b256d2 | |||
423e3b15d2 | |||
855dd76678 | |||
93fdfd51de | |||
70e886fcfe | |||
f02994c149 | |||
f34479712a | |||
d836b7e46d | |||
6b0b5bfbbd | |||
58fe0d1b4b | |||
72b7eb8332 | |||
25cf46036d | |||
fa436604b7 | |||
6f7ce4063f | |||
59385fad03 | |||
30d5e4b0ca | |||
d45041e00c | |||
354f2f50eb | |||
3d10bef305 | |||
428e0b44b8 | |||
ab42ac4557 | |||
5d9aef4ed8 | |||
7a33deffb7 | |||
c13d57f0f6 | |||
2d5046654d | |||
e6537b78b0 | |||
906f4cc40a | |||
8de5f329d9 | |||
eda93acc49 | |||
4b4f1bd218 | |||
0df018cf5f | |||
0db35980a0 | |||
d1bf4e7520 | |||
![]() |
7b4ebca002 | ||
![]() |
24252ebbb3 | ||
![]() |
3ea89edac7 | ||
d100b42e5a | |||
b6903bc445 | |||
![]() |
afb81172a7 | ||
![]() |
9a628e78ca | ||
![]() |
1e2102c0a0 | ||
![]() |
276afd5479 | ||
![]() |
9269dd7202 | ||
b1ee2e7143 | |||
a3ffb2443a | |||
bf8a2213c1 | |||
97c936d41f | |||
7e96c0cb2a | |||
f08595b3a7 | |||
f8c6b7c7c0 | |||
bb946fa5f6 | |||
74557ab348 | |||
c257405060 | |||
721dabf007 | |||
6fbdd8fd6b | |||
2b612166d7 | |||
7c68922a95 | |||
48df02f102 | |||
e2119f77d6 | |||
ee9111a1ec | |||
4abd92e139 | |||
cd2e844066 | |||
![]() |
7346d1ba3b | ||
5a9086e6d1 | |||
929af74d3f | |||
cd0d0eb7c7 | |||
05979df34d | |||
d9b82494d0 | |||
c1b0768e7d | |||
553d0a1c62 | |||
f8a15df1b9 | |||
5a7f7b0f70 | |||
f2e8e46fcb | |||
64c2d52a7a | |||
9814abbcdf | |||
f5a911485a | |||
778c119bd6 | |||
cec52ada83 | |||
d0a47783f2 | |||
7d7c59bbf8 | |||
44d120d7a8 | |||
fb435842b2 | |||
7089db0bd0 | |||
c2b6bfd3a8 | |||
8a92023cf3 | |||
a8944b3763 | |||
3b51902713 | |||
7262133782 | |||
ff340df5b5 | |||
3a28e1c3d3 | |||
4a936dcb99 | |||
bc513832a5 | |||
49f915fda5 | |||
3c6c6ed230 | |||
![]() |
26d01d18eb | ||
ff2f33abb9 | |||
d0f50c9e3d | |||
63e79a9a73 | |||
1ec6f799f1 | |||
b16c30a5e6 | |||
6cafd347ce | |||
171e439bd4 | |||
6eead7e28e | |||
bfff1a815e | |||
9568d4f379 | |||
676e30b4ca | |||
e69df2e5c8 | |||
1d8b5e6f09 | |||
80b8b209fa | |||
9e105413fd | |||
602daabe23 | |||
7aa3434e79 | |||
3c6027056b | |||
29a7011141 | |||
0e75a2b6ad | |||
14dc70c6a2 | |||
c30a5d94b5 | |||
999a79b074 | |||
1c82470bfc | |||
b17ff6d166 | |||
1582a60522 | |||
a827113c2a | |||
881e556e06 | |||
cc09920c80 | |||
6711afdb58 | |||
acd63a915e | |||
30812e134e | |||
5b64737ad9 | |||
30f68ea5df | |||
467cc9aa7e | |||
e287087d3b | |||
35de33e0f9 | |||
d7caca2a37 | |||
0134ceee9d | |||
e838d687f0 | |||
a90768c1d4 | |||
6b8099b6af | |||
35872354e0 | |||
1909d8106c | |||
c624374cc8 | |||
920866d8af | |||
4b053b9a38 | |||
4f440c5104 | |||
f3bcdeccd1 | |||
43fa556fa9 | |||
31f24a2a55 | |||
029e185c6c | |||
70b29b6459 | |||
a4ce0e2a1e | |||
f848ddb37f | |||
54527b0006 | |||
5c5f9f0f1a | |||
34a823f36d | |||
3d8e2000fd | |||
f35741bac7 | |||
a04fc71ae9 | |||
7827ef58e1 | |||
9657de2004 | |||
d86d5fec5f | |||
d8a9f33075 | |||
7f63d1e048 | |||
757a8e9f39 | |||
0041738578 | |||
266b1638d4 | |||
2c09e40c44 | |||
76efd7c216 | |||
080d1df3e1 | |||
5b240ce372 | |||
d20483ed13 | |||
848a1de963 | |||
1e822c248e | |||
09e7de548d | |||
ddbb7dd9f4 | |||
e471df9c1a | |||
740d8b0d4b | |||
f22d9084ba | |||
3d957f444c | |||
81875450a8 | |||
c0afc79d4e | |||
648411c686 | |||
3f44be9f2f | |||
91957b4ed6 | |||
9a0d0df33d | |||
7772541f7d | |||
ad88e25278 | |||
9a4a4a0005 | |||
5a03fd49e9 | |||
9cb752e102 | |||
2e91d29ae9 | |||
9304e84262 | |||
2be46393e1 | |||
06c250500c | |||
7b0d446b02 | |||
9b209fab20 | |||
5556c521a0 | |||
74f253b575 | |||
96cfd6247e | |||
b42fb4d2f3 | |||
9de0b18db2 | |||
38ebc3afce | |||
fb95abcc25 | |||
9572d79f72 | |||
4a2a9ec685 | |||
0bdfea309a | |||
eaafd916be | |||
6deef0308a | |||
8da0342760 | |||
e625897766 | |||
ab3e823134 | |||
7fba5cbdcc | |||
411ea962ff | |||
f61711047c | |||
36bf4250f3 | |||
f957461c92 | |||
6c7b64f7f2 | |||
2442d5decb | |||
82f1cc287d | |||
eb8d10771b | |||
6f31af0612 | |||
4c7b44510a | |||
a4452dee8c | |||
dc2a016c6b | |||
a0a70b1ffc | |||
b08e148cbe | |||
5adfd80bce | |||
78c4bba62e | |||
30761c266b | |||
31b2ef5ffe | |||
c57bef14a3 | |||
aab6808f4e | |||
246e3cfeab | |||
34c9f34f04 | |||
17a0d241f6 | |||
4aebe81940 | |||
97dac6e83b | |||
64360796b9 | |||
803945dbc8 | |||
864ce4222f | |||
c508929835 | |||
68690b4127 | |||
55624d4c68 | |||
8c509475f9 | |||
c39e75a8d5 | |||
53c10aab2d | |||
d432595c7d | |||
a24477629d | |||
48cd4de92e | |||
15e1a5a0e9 | |||
1d9d592b63 | |||
6039bf73c7 | |||
e907474ea9 | |||
c55a92872b | |||
c8f4fd1b05 | |||
038498846e | |||
8bf5d8c571 | |||
0eb88af4b9 | |||
e0adf2f4a5 | |||
c2064c125e | |||
f640bc851e | |||
b3c898f306 | |||
2ebae042a8 | |||
4f49289bf5 | |||
69506e5079 | |||
80eb1f3bdd | |||
933b0f48f9 | |||
7dbd5d4228 | |||
1e39bea929 | |||
334971d2dc | |||
7731c090ee | |||
55c8af6b4d | |||
02dbf0b993 | |||
2eac823014 | |||
b1e3cf7403 | |||
1b30d5989c | |||
01153d3d2c | |||
65ecc75afd | |||
98b698473d | |||
722e32617a | |||
899b82c36f | |||
7b80aa6aaf | |||
a1cc8ba87c | |||
9407616c2b | |||
b5eb652580 | |||
a49555fe46 | |||
7f82aa08f8 | |||
2ae702e3e4 | |||
b98ccfe3ad | |||
1c90947f82 | |||
0447c52f0b | |||
5b980734ed | |||
7bbd74cb17 | |||
2f3dcbed1f | |||
e06651bbb6 | |||
7ba810fd4a | |||
3a4722a83e | |||
e33d6b9158 | |||
49743d4b9e | |||
ce4552add5 | |||
69e8f5ba12 | |||
b265442b8c | |||
2b84318ebe | |||
d34a25a62d | |||
8310127e78 | |||
b9cc81fc52 | |||
c709938206 | |||
626aa84814 | |||
9d7ff947b1 | |||
9d3fe80e93 | |||
e0842bde74 | |||
4a1fba74f3 | |||
bc901f58c2 | |||
70ad9e86aa | |||
c43caccfd4 | |||
5961c4fa96 | |||
fe6db823a7 | |||
c72f71e61e | |||
2d8b68bff2 | |||
54cf4d3409 | |||
3cc3d831f5 | |||
3da9e27190 | |||
28517c2000 | |||
e22e6a21e0 | |||
10de4c8f09 | |||
2d05fbaeea | |||
4fb77610d2 | |||
a654527e32 | |||
6b132f243e | |||
e3339fef3b | |||
c6860854b4 | |||
2fbf022823 | |||
f2b6db6a08 | |||
0a9530dc6d | |||
f76d160c69 | |||
819f767dbd | |||
451d4be386 | |||
61b0efee34 | |||
2c5cfbb467 | |||
1bf5049567 | |||
ada4525e85 | |||
3c0521f936 | |||
cd39230089 | |||
819b9aefa7 | |||
5741cc383f | |||
de8439c55b | |||
1b82415ce2 | |||
02db4b6369 | |||
d48c9758bc | |||
e471930fd5 | |||
259de4df43 | |||
09f58610ec | |||
1ac276a220 | |||
8727126551 | |||
0746d2a0ec | |||
a818795d88 | |||
55a5be7d13 | |||
e344044b43 | |||
2ce91de173 | |||
c13e004c6f | |||
99fe0c4311 | |||
f1b130eb39 | |||
a91b1c554a | |||
dbea90f525 | |||
c5aa784caa | |||
4a08add5ab | |||
e674c92f13 | |||
4e2164646c | |||
c94a786c1e | |||
2a12af8e56 | |||
553e51741a | |||
e3880d178e | |||
9041583207 | |||
123178c340 | |||
8ed9063488 | |||
242ea71ee6 | |||
2c43a6c155 | |||
9202085267 | |||
cc5582c493 | |||
0e8b23c918 | |||
4a8255e227 | |||
524ccc4dd5 | |||
070c0f5e24 | |||
04029995be | |||
12bfd3fe26 | |||
f5db3a9814 | |||
5de74f15cb | |||
5bd04d8435 | |||
aad925ffca | |||
e1880e09f6 | |||
183df35459 | |||
0687197f08 | |||
9a4af7e0ec | |||
d6f9ed7125 | |||
b4d5e33d6c | |||
fe5f16bb7a | |||
894e972a65 | |||
f4e8b0b8a8 | |||
fb06a3ec32 | |||
bac907dba0 | |||
382cd7a371 | |||
1024ce8ecd | |||
a4f235dd97 | |||
b3e6c21b7c | |||
aafc3471cc | |||
c6a5e3b34d | |||
183634c8c4 | |||
b3b1164fed | |||
d394bb88c3 | |||
e240937e58 | |||
ecc07012c0 | |||
9928758f91 | |||
36d0a44b57 | |||
97b96801d1 | |||
f40a0a8d12 | |||
227a2d91df | |||
9cc563d0dd | |||
0944f84ac9 | |||
e1e0e9662d | |||
1cea193ea3 | |||
2d44c4763f | |||
d34e0baa17 | |||
e6cbe67254 | |||
730082024f | |||
5a9f667553 | |||
410c52235d | |||
5a982d61c9 | |||
168ba99828 | |||
3c49517b76 | |||
593ed84f1b | |||
1ea1768728 | |||
ee462d92e8 | |||
7c7ba729f5 | |||
a9526ae663 | |||
d3ce4a8765 | |||
5404cc5e83 | |||
877bbcd9de | |||
e47cf8fe22 | |||
b6ce54b7ee | |||
df169c89c3 |
@ -7,6 +7,7 @@ BasedOnStyle: LLVM
|
||||
AlignAfterOpenBracket: DontAlign
|
||||
AlignConsecutiveAssignments: None
|
||||
AllowShortBlocksOnASingleLine: false
|
||||
AllowShortEnumsOnASingleLine: true
|
||||
AllowShortFunctionsOnASingleLine: None
|
||||
AllowShortIfStatementsOnASingleLine: false
|
||||
AlwaysBreakAfterDefinitionReturnType: true
|
||||
@ -15,12 +16,14 @@ BreakBeforeBraces: Custom
|
||||
BreakConstructorInitializers: AfterColon
|
||||
BraceWrapping:
|
||||
AfterControlStatement: false
|
||||
AfterEnum: false
|
||||
AfterFunction: true
|
||||
AfterStruct: false
|
||||
AfterUnion: false
|
||||
BeforeElse: false
|
||||
ColumnLimit: 0
|
||||
ContinuationIndentWidth: 16
|
||||
Cpp11BracedListStyle: false
|
||||
IncludeBlocks: Preserve
|
||||
IndentCaseLabels: true
|
||||
IndentWidth: 8
|
||||
|
45
.gitea/workflows/ci.yaml
Normal file
@ -0,0 +1,45 @@
|
||||
name: CI
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
pull_request:
|
||||
branches:
|
||||
- master
|
||||
|
||||
jobs:
|
||||
build:local:
|
||||
runs-on: native
|
||||
steps:
|
||||
- uses: https://gitea.com/ScMi1/checkout@v1.4
|
||||
- run: nix build -L --no-link .#ovniPackages.local
|
||||
|
||||
build:rt:
|
||||
runs-on: native
|
||||
steps:
|
||||
- uses: https://gitea.com/ScMi1/checkout@v1.4
|
||||
- run: nix build -L --no-link .#ovniPackages.rt
|
||||
|
||||
build:debug:
|
||||
runs-on: native
|
||||
steps:
|
||||
- uses: https://gitea.com/ScMi1/checkout@v1.4
|
||||
- run: nix build -L --no-link .#ovniPackages.debug
|
||||
|
||||
build:asan:
|
||||
runs-on: native
|
||||
steps:
|
||||
- uses: https://gitea.com/ScMi1/checkout@v1.4
|
||||
- run: nix build -L --no-link .#ovniPackages.asan
|
||||
|
||||
build:nompi:
|
||||
runs-on: native
|
||||
steps:
|
||||
- uses: https://gitea.com/ScMi1/checkout@v1.4
|
||||
- run: nix build -L --no-link .#ovniPackages.nompi
|
||||
|
||||
build:compilers:
|
||||
runs-on: native
|
||||
steps:
|
||||
- uses: https://gitea.com/ScMi1/checkout@v1.4
|
||||
- run: nix build -L --no-link .#ovniPackages.compilers
|
@ -2,7 +2,6 @@ build:debian-testing:
|
||||
image: debian:testing
|
||||
tags:
|
||||
- docker
|
||||
- mestral
|
||||
stage: build
|
||||
before_script:
|
||||
- apt update && apt -y install make autoconf gfortran libopenmpi-dev cmake
|
||||
@ -15,9 +14,72 @@ build:debian-testing:
|
||||
paths:
|
||||
- install/
|
||||
|
||||
build:rt-tests:
|
||||
build:local:
|
||||
stage: build
|
||||
tags:
|
||||
- nix
|
||||
script:
|
||||
- nix build -L --tarball-ttl 0 --file nix/rt.nix
|
||||
script:
|
||||
- nix build -L --no-link .#ovniPackages.local
|
||||
|
||||
build:rt:
|
||||
stage: build
|
||||
tags:
|
||||
- nix
|
||||
script:
|
||||
- nix build -L --no-link .#ovniPackages.rt
|
||||
|
||||
build:debug:
|
||||
stage: build
|
||||
tags:
|
||||
- nix
|
||||
script:
|
||||
- nix build -L --no-link .#ovniPackages.debug
|
||||
|
||||
build:asan:
|
||||
stage: build
|
||||
tags:
|
||||
- nix
|
||||
script:
|
||||
- nix build -L --no-link .#ovniPackages.asan
|
||||
|
||||
build:ubsan:
|
||||
stage: build
|
||||
tags:
|
||||
- nix
|
||||
script:
|
||||
- nix build -L --no-link .#ovniPackages.ubsan
|
||||
|
||||
build:nompi:
|
||||
stage: build
|
||||
tags:
|
||||
- nix
|
||||
script:
|
||||
- nix build -L --no-link .#ovniPackages.nompi
|
||||
|
||||
build:compilers:
|
||||
stage: build
|
||||
tags:
|
||||
- nix
|
||||
script:
|
||||
- nix build -L --no-link .#ovniPackages.compilers
|
||||
|
||||
build:armv7:
|
||||
stage: build
|
||||
tags:
|
||||
- nix
|
||||
script:
|
||||
- nix build -L --no-link .#ovniPackages.armv7
|
||||
|
||||
build:aarch64:
|
||||
stage: build
|
||||
tags:
|
||||
- nix
|
||||
script:
|
||||
- nix build -L --no-link .#ovniPackages.aarch64
|
||||
|
||||
build:riscv64:
|
||||
stage: build
|
||||
tags:
|
||||
- nix
|
||||
script:
|
||||
- nix build -L --no-link .#ovniPackages.riscv64
|
||||
|
20
.readthedocs.yaml
Normal file
@ -0,0 +1,20 @@
|
||||
# .readthedocs.yaml
|
||||
# Read the Docs configuration file
|
||||
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
|
||||
|
||||
# Required
|
||||
version: 2
|
||||
|
||||
# Set the version of Python and other tools you might need
|
||||
build:
|
||||
os: ubuntu-22.04
|
||||
tools:
|
||||
python: "3.11"
|
||||
|
||||
mkdocs:
|
||||
configuration: mkdocs.yml
|
||||
fail_on_warning: false
|
||||
|
||||
python:
|
||||
install:
|
||||
- requirements: doc/requirements.txt
|
312
CHANGELOG.md
Normal file
@ -0,0 +1,312 @@
|
||||
# Changelog
|
||||
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
### Changed
|
||||
|
||||
- OpenMP model version increased to 1.2.0.
|
||||
|
||||
### Added
|
||||
|
||||
- Add support OpenMP label and task ID views.
|
||||
|
||||
## [1.11.0] - 2024-11-08
|
||||
|
||||
### Added
|
||||
|
||||
- Introduce part model.
|
||||
- Support for `nosv_cond_wait`, `nosv_cond_signal` and `nosv_cond_broadcast` events VA{oOgGkK}.
|
||||
|
||||
### Changed
|
||||
|
||||
- Enable -Wconversion and -Wsign-conversion.
|
||||
- Update trace format to version 3.
|
||||
- The ovni.require metadata key is now mandatory.
|
||||
- Store process metadata in thread metadata.
|
||||
- nOS-V model version increased to 2.4.0.
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fix bug in ovnisort when injecting events in a previously modified section.
|
||||
|
||||
## [1.10.0] - 2024-07-26
|
||||
|
||||
### Changed
|
||||
|
||||
- nOS-V model version increased to 2.3.0.
|
||||
- Prevent accidental use of nOS-V traces without required events for the
|
||||
breakdown model using the `nosv.can_breakdown` attribute.
|
||||
- Increase ovni model version to 1.1.0 for the mark events `OM*`.
|
||||
|
||||
### Added
|
||||
|
||||
- Add support for nOS-V progressing events VP{pra}.
|
||||
- Add breakdown model for nOS-V.
|
||||
- New API to manage stream metadata `ovni_attr_*()`.
|
||||
- New mark API `ovni_mark_*()` to emit user-defined events.
|
||||
|
||||
### Fixed
|
||||
|
||||
- Cross-compilation for ARM 32 bits.
|
||||
|
||||
## [1.9.1] - 2024-05-10
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fix breakdown model error that was preventing a zero value to be written in
|
||||
the PRV trace.
|
||||
- Fix gcc 11.3.1 -Wstringop-overflow warning.
|
||||
|
||||
## [1.9.0] - 2024-04-25
|
||||
|
||||
### Added
|
||||
|
||||
- Consistency check for events emitted when the kernel has removed the thread
|
||||
from the CPU.
|
||||
- The nOS-V model version is bumped to 2.1.0.
|
||||
- Add support for `nosv_mutex_lock`, `nosv_mutex_trylock` and
|
||||
`nosv_mutex_unlock` events VA{lLtTuU}.
|
||||
- Add support for the `nosv_barrier_event` event VA{bB}.
|
||||
|
||||
### Fixed
|
||||
|
||||
- Open Paraver windows at (100,100) instead of (0,0) to avoid them appearing
|
||||
under the menu bar in Mac OS.
|
||||
|
||||
## [1.8.0] - 2024-03-18
|
||||
|
||||
### Added
|
||||
|
||||
- Add new body model to support parallel tasks in nOS-V (used in taskfor).
|
||||
- Add the ability to restrict transitions in the task model states.
|
||||
- Add nOS-V support for parallel tasks reading the body id from the
|
||||
event payload.
|
||||
- Keep a changelog of emulation model versions.
|
||||
|
||||
### Changed
|
||||
|
||||
- The task model now requires the previous task body to be paused before nesting
|
||||
another one. A compatibility flag is still available to still allow the old
|
||||
behavior.
|
||||
- Nanos6 model version increased to 1.1.0.
|
||||
- nOS-V model version increased to 2.0.0.
|
||||
|
||||
## [1.7.0] - 2024-03-12
|
||||
|
||||
### Added
|
||||
|
||||
- Add OpenMP model (`P`) at version 1.1.0 (currently it only supports subsystems
|
||||
and only works with the OpenMP-V runtime, on top of nOS-V).
|
||||
|
||||
### Changed
|
||||
|
||||
- Add support for `nosv_attach` and `nosv_detach` events VA{aAeE}.
|
||||
- Ignore old nOS-V attach events VH{aA}.
|
||||
- The nOS-V model version is bumped to 1.1.0.
|
||||
|
||||
## [1.6.0] - 2024-02-14
|
||||
|
||||
### Changed
|
||||
|
||||
- All events now must be declared for each emulation model and given a
|
||||
description including the payload arguments.
|
||||
|
||||
### Added
|
||||
|
||||
- Manual page for ovnidump(1).
|
||||
- Describe events in human readable format with ovnidump.
|
||||
- New `-x` option in ovnidump to show the payload in hexadecimal.
|
||||
|
||||
## [1.5.1] - 2023-12-20
|
||||
|
||||
### Fixed
|
||||
|
||||
- Calling `ovni_thread_isready()` after `ovni_thread_free()` now returns 0.
|
||||
- Emitting events in a non-ready thread now aborts the program with a
|
||||
message rather than causing a segfault.
|
||||
|
||||
## [1.5.0] - 2023-12-15
|
||||
|
||||
### Added
|
||||
|
||||
- New function `ovni_thread_require()` to selectively enable emulation models
|
||||
and check their version is compatible (if not used all models will be
|
||||
enabled).
|
||||
- Support for per-thread metadata
|
||||
- Store the version of libovni in the metadata
|
||||
- Streams are marked as finished when `ovni_thread_free()` is called. A warning
|
||||
is emitted in the emulator for those streams that are not finished properly.
|
||||
- List the emulation models and versions with `ovniemu -h`
|
||||
- New `-a` ovniemu option to enable all models
|
||||
|
||||
### Changed
|
||||
|
||||
- Updated process metadata to version 2 (traces generated with an older libovni
|
||||
are not compatible with the emulator).
|
||||
- Emulation models now have a semantic version (X.Y.Z) instead of just a number.
|
||||
- Install ovniver with the runpath set.
|
||||
|
||||
### Fixed
|
||||
|
||||
- Close stream FD on `ovni_thread_free()`.
|
||||
|
||||
## [1.4.1] - 2023-11-16
|
||||
|
||||
### Changed
|
||||
|
||||
- Fix emulation for level 2 or lower in nOS-V with inline tasks by
|
||||
allowing duplicates in the subsystem channel.
|
||||
|
||||
## [1.4.0] - 2023-11-08
|
||||
|
||||
### Added
|
||||
|
||||
- Add `OVNI_TRACEDIR` envar to change the trace directory (default is `ovni`).
|
||||
|
||||
### Changed
|
||||
|
||||
- Don't modify nOS-V subsystem state on task pause. The "Task: Running"
|
||||
state is now renamed to "Task: In body" to reflect the change.
|
||||
- Use pkg-config to locate the nOS-V library and get the version. Use
|
||||
`PKG_CONFIG_LIBDIR=/path/to/nosv/install/lib/pkgconfig` to use a custom
|
||||
installation path.
|
||||
|
||||
## [1.3.0] - 2023-09-07
|
||||
|
||||
### Added
|
||||
|
||||
- Add `ovni_version_get()` function.
|
||||
- Add the `ovniver` program to report the libovni version and commit.
|
||||
- Add nOS-V API subsystem events for `nosv_create()` and `nosv_destroy()`.
|
||||
- Add TAMPI model with `T` code.
|
||||
- Add subsytem events and cfgs for TAMPI model.
|
||||
- Add MPI model with `M` code.
|
||||
- Add function events and cfgs for MPI model.
|
||||
|
||||
## [1.2.2] - 2022-07-26
|
||||
|
||||
### Added
|
||||
|
||||
- Add this CHANGELOG.md file to keep track of changes.
|
||||
|
||||
### Fixed
|
||||
|
||||
- Don't rely on /tmp or $TMPDIR in tests.
|
||||
- Fix misleading message in version check.
|
||||
- Fix error message when opening missing trace directories
|
||||
|
||||
## [1.2.1] - 2022-07-25
|
||||
|
||||
### Fixed
|
||||
|
||||
- Set default visibility to hidden to prevent clashes with other functions such
|
||||
as the verr() in the glibc.
|
||||
- Don't hardcore destination directory names like lib, to use the ones in the
|
||||
destination host (like lib64).
|
||||
- Add support in ovnisort for cases where in the sorting region there are flush
|
||||
events.
|
||||
- Remove CI nix roots from the builds to allow the garbage collector to remove
|
||||
the build.
|
||||
- Fix the detection of the -fompss-2 flag in cmake by setting the flag at link
|
||||
time too.
|
||||
- Fix spawn task test by waiting for the task to finish before exiting.
|
||||
|
||||
## [1.2.0] - 2022-05-02
|
||||
|
||||
This version adds the initial support for the breakdown view and some fixes.
|
||||
|
||||
### Added
|
||||
|
||||
- Add the initial breakdown view showing the task type, the subsystem or the
|
||||
idle state.
|
||||
- Added the sort module for channels to support the breakdown view.
|
||||
- Add the -b option in ovniemu to enable the breakdown trace.
|
||||
- Add support for sponge CPUs in Nanos6.
|
||||
- Add the cmake option `-DUSE_MPI=OFF` to build ovni without MPI.
|
||||
- Add a test for two nOS-V shared memory segments.
|
||||
|
||||
### Fixed
|
||||
|
||||
- Sort the timeline rows in MPI rank order if given.
|
||||
- Skip duplicated entries when ovnisync to runs multiple times in the same node.
|
||||
- Allow tasks to be re-executed to support the taskiter in the nOS-V model.
|
||||
- Use the signed `int64_t` type for clock offsets, so they can be negative.
|
||||
- Avoid fmemopen() due to a bug in old glibc versions.
|
||||
- Fix clang format for braced list
|
||||
- Fix buffer overflow in `sort_replace()` of the sort module.
|
||||
- Set the size of the channel property arrays to prevent a buffer overflow.
|
||||
|
||||
## [1.1.0] - 2022-03-24
|
||||
|
||||
This version introduces the patch bay and a big redesign in the way the channels
|
||||
are used along with some other changes.
|
||||
|
||||
### Changed
|
||||
|
||||
- The channels are now connected using the patch bay, where they must be
|
||||
registered using an unique name.
|
||||
- The tracking modes are implemented by using a mux, and an arbitrary way of
|
||||
tracking other channels is now possible, as it is required for the breakdown
|
||||
model.
|
||||
- The channels don't have visibility with other parts of the code, they interact
|
||||
with a callback only.
|
||||
- The emulator code has been split into smaller modules which are independent of
|
||||
each other, so we can unit test them separately.
|
||||
- The models are now implemented following the model spec functions.
|
||||
- Updated the ovni and Nanos6 models
|
||||
- Model data is now stored by the `extend_set`/`get` methods, so it is kept
|
||||
separate between models.
|
||||
- The CPU and thread channels have been moved to the emulator while the ones
|
||||
specific to the user space tracing with libovni.so are controlled by the ovni
|
||||
model. This allows other thread/CPU tracing mechanisms (kernel events) to
|
||||
update the emulator channels while the other models are not affected.
|
||||
- The trace streams are now independent of the hierarchy loom/proc/thread, and
|
||||
end with the suffix .obs, so we can add other types of traces in the future.
|
||||
- Models can register any arbitrary number of channels on runtime, so we can add
|
||||
load hardware counters in one channel each.
|
||||
- Channels have a user friendly name so debugging is easier
|
||||
- The die() abort mechanism has been transformed into if() + return -1, so we
|
||||
can do unit testing and check the errors and also finish the PRV traces when
|
||||
the emulator encounters an error and open them in Paraver with the last
|
||||
processed event.
|
||||
- The emulator can be stopped with ^C, producing a valid Paraver trace.
|
||||
- Prevents leaving threads in the running state by adding a check at the end of
|
||||
emulation
|
||||
- The Paraver configurations files are copied into the trace directory.
|
||||
|
||||
### Removed
|
||||
|
||||
- The TAMPI and OpenMP models have been removed as they are not maintained.
|
||||
- Punctual events are not implemented for now.
|
||||
- No error states, when more than one thread is running in the virtual
|
||||
CPU, no subsystem is shown in the CPU view.
|
||||
|
||||
## [1.0.0] - 2022-12-16
|
||||
|
||||
### Added
|
||||
|
||||
- First ovni release.
|
||||
|
||||
[unreleased]: https://jungle.bsc.es/git/rarias/ovni
|
||||
[1.11.0]: https://github.com/rodarima/ovni/releases/tag/1.11.0
|
||||
[1.10.0]: https://github.com/rodarima/ovni/releases/tag/1.10.0
|
||||
[1.9.1]: https://github.com/rodarima/ovni/releases/tag/1.9.1
|
||||
[1.9.0]: https://github.com/rodarima/ovni/releases/tag/1.9.0
|
||||
[1.8.0]: https://github.com/rodarima/ovni/releases/tag/1.8.0
|
||||
[1.7.0]: https://github.com/rodarima/ovni/releases/tag/1.7.0
|
||||
[1.6.0]: https://github.com/rodarima/ovni/releases/tag/1.6.0
|
||||
[1.5.1]: https://github.com/rodarima/ovni/releases/tag/1.5.1
|
||||
[1.5.0]: https://github.com/rodarima/ovni/releases/tag/1.5.0
|
||||
[1.4.1]: https://github.com/rodarima/ovni/releases/tag/1.4.1
|
||||
[1.4.0]: https://github.com/rodarima/ovni/releases/tag/1.4.0
|
||||
[1.3.0]: https://github.com/rodarima/ovni/releases/tag/1.3.0
|
||||
[1.2.2]: https://github.com/rodarima/ovni/releases/tag/1.2.2
|
||||
[1.2.1]: https://github.com/rodarima/ovni/releases/tag/1.2.1
|
||||
[1.2.0]: https://github.com/rodarima/ovni/releases/tag/1.2.0
|
||||
[1.1.0]: https://github.com/rodarima/ovni/releases/tag/1.1.0
|
||||
[1.0.0]: https://github.com/rodarima/ovni/releases/tag/1.0.0
|
@ -1,28 +1,39 @@
|
||||
# Copyright (c) 2021-2022 Barcelona Supercomputing Center (BSC)
|
||||
# Copyright (c) 2021-2024 Barcelona Supercomputing Center (BSC)
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
cmake_minimum_required(VERSION 3.20)
|
||||
|
||||
project(OVNI LANGUAGES C)
|
||||
project(OVNI LANGUAGES C VERSION 1.11.0)
|
||||
|
||||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/")
|
||||
|
||||
add_compile_options(-Wall -Wextra -Wformat
|
||||
-Wmissing-prototypes -Wstrict-prototypes
|
||||
#-Wconversion -Wsign-conversion
|
||||
-Wconversion -Wsign-conversion
|
||||
-Wold-style-definition -pedantic
|
||||
-Werror
|
||||
)
|
||||
|
||||
set(CMAKE_C_VISIBILITY_PRESET hidden)
|
||||
|
||||
set(CMAKE_C_STANDARD 11)
|
||||
set(CMAKE_C_STANDARD_REQUIRED TRUE)
|
||||
set(CMAKE_C_EXTENSIONS FALSE)
|
||||
|
||||
option(ENABLE_DEBUG_LOG "Enable debug messages (very verbose)")
|
||||
option(ENABLE_ALL_TESTS "Forces the execution of all tests")
|
||||
set(OVNI_GIT_COMMIT "unknown" CACHE STRING "Set the git commit")
|
||||
|
||||
if("${OVNI_GIT_COMMIT}" STREQUAL "unknown")
|
||||
message(WARNING "OVNI_GIT_COMMIT is unknown, please specify the git commit")
|
||||
endif()
|
||||
|
||||
if(ENABLE_DEBUG_LOG)
|
||||
add_definitions(-DENABLE_DEBUG)
|
||||
endif()
|
||||
|
||||
add_definitions(-D_POSIX_C_SOURCE=200809L)
|
||||
|
||||
if(NOT CMAKE_BUILD_TYPE)
|
||||
set(CMAKE_BUILD_TYPE "Release" CACHE STRING
|
||||
"Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel Asan UBsan." FORCE)
|
||||
@ -36,10 +47,16 @@ include(CheckIPOSupported)
|
||||
check_ipo_supported(RESULT ipo_available OUTPUT error LANGUAGES C)
|
||||
|
||||
# Enable IPO by default, if available
|
||||
if(ipo_available)
|
||||
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE)
|
||||
else()
|
||||
message(WARNING "IPO is not supported, expect performance penalty")
|
||||
if(NOT DEFINED CMAKE_INTERPROCEDURAL_OPTIMIZATION)
|
||||
if(ipo_available)
|
||||
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE)
|
||||
else()
|
||||
message(WARNING "IPO is not supported, disabling")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(NOT CMAKE_INTERPROCEDURAL_OPTIMIZATION)
|
||||
message(WARNING "IPO is not enabled, expect performance penalty")
|
||||
endif()
|
||||
|
||||
# Extra build type for AddressSanitizer (Asan)
|
||||
@ -50,9 +67,21 @@ set(CMAKE_C_FLAGS_ASAN "${CMAKE_C_FLAGS_DEBUG} \
|
||||
-fno-omit-frame-pointer"
|
||||
CACHE STRING "Flags used by the C compiler during AddressSanitizer builds." FORCE)
|
||||
|
||||
set(CMAKE_C_FLAGS_UBSAN "${CMAKE_C_FLAGS_DEBUG} -fsanitize=undefined"
|
||||
set(CMAKE_C_FLAGS_UBSAN "${CMAKE_C_FLAGS_DEBUG} \
|
||||
-fsanitize=undefined \
|
||||
-fno-sanitize-recover=all"
|
||||
CACHE STRING "Flags used by the C compiler during UndefinedBehaviorSanitizer builds." FORCE)
|
||||
|
||||
find_program(IWYU NAMES include-what-you-use iwyu)
|
||||
|
||||
if(IWYU)
|
||||
set(IWYU_CMD ${IWYU} -Xiwyu --no_comments)
|
||||
set(CMAKE_C_INCLUDE_WHAT_YOU_USE ${IWYU_CMD})
|
||||
message(STATUS "IWYU found")
|
||||
else()
|
||||
message(WARNING "IWYU not found, skipping")
|
||||
endif()
|
||||
|
||||
# Required for clock_gettime() in glibc <= 2.17
|
||||
include(CheckLibraryExists)
|
||||
check_library_exists(c clock_gettime "" HAVE_CLOCK_GETTIME)
|
||||
@ -67,6 +96,7 @@ if (NOT HAVE_CLOCK_GETTIME)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
add_subdirectory(include)
|
||||
add_subdirectory(src)
|
||||
|
||||
include(CTest)
|
||||
@ -75,3 +105,6 @@ if(BUILD_TESTING)
|
||||
endif()
|
||||
|
||||
install(DIRECTORY cfg/ DESTINATION "${OVNI_CONFIG_RELDIR}")
|
||||
|
||||
include(FeatureSummary)
|
||||
feature_summary(WHAT ALL)
|
||||
|
@ -4,13 +4,13 @@ ConfigFile.NumWindows: 1
|
||||
|
||||
|
||||
################################################################################
|
||||
< NEW DISPLAYING WINDOW CPU: Context switches of the ACTIVE thread >
|
||||
< NEW DISPLAYING WINDOW CPU: Context switches of the RUNNING thread >
|
||||
################################################################################
|
||||
window_name CPU: Context switches of the ACTIVE thread
|
||||
window_name CPU: Context switches of the RUNNING thread
|
||||
window_type single
|
||||
window_id 1
|
||||
window_position_x 0
|
||||
window_position_y 0
|
||||
window_position_x 100
|
||||
window_position_y 100
|
||||
window_width 600
|
||||
window_height 150
|
||||
window_comm_lines_enabled true
|
||||
@ -38,5 +38,5 @@ window_labels_to_draw 1
|
||||
window_selected_functions { 14, { {cpu, Active Thd}, {appl, Adding}, {task, Adding}, {thread, Last Evt Val}, {node, Adding}, {system, Adding}, {workload, Adding}, {from_obj, All}, {to_obj, All}, {tag_msg, All}, {size_msg, All}, {bw_msg, All}, {evt_type, =}, {evt_value, All} } }
|
||||
window_compose_functions { 9, { {compose_cpu, As Is}, {compose_appl, As Is}, {compose_task, As Is}, {compose_thread, As Is}, {compose_node, As Is}, {compose_system, As Is}, {compose_workload, As Is}, {topcompose1, As Is}, {topcompose2, As Is} } }
|
||||
window_filter_module evt_type 1 45
|
||||
window_filter_module evt_type_label 1 "CPU: Context switches of the ACTIVE thread"
|
||||
window_filter_module evt_type_label 1 "CPU: Context switches of the RUNNING thread"
|
||||
|
||||
|
@ -4,13 +4,13 @@ ConfigFile.NumWindows: 1
|
||||
|
||||
|
||||
################################################################################
|
||||
< NEW DISPLAYING WINDOW CPU: OpenMP mode of the RUNNING thread >
|
||||
< NEW DISPLAYING WINDOW CPU: MPI function of the RUNNING thread >
|
||||
################################################################################
|
||||
window_name CPU: OpenMP mode of the RUNNING thread
|
||||
window_name CPU: MPI function of the RUNNING thread
|
||||
window_type single
|
||||
window_id 1
|
||||
window_position_x 0
|
||||
window_position_y 0
|
||||
window_position_x 100
|
||||
window_position_y 100
|
||||
window_width 600
|
||||
window_height 150
|
||||
window_comm_lines_enabled true
|
||||
@ -38,5 +38,5 @@ window_labels_to_draw 1
|
||||
window_selected_functions { 14, { {cpu, Active Thd}, {appl, Adding}, {task, Adding}, {thread, Last Evt Val}, {node, Adding}, {system, Adding}, {workload, Adding}, {from_obj, All}, {to_obj, All}, {tag_msg, All}, {size_msg, All}, {bw_msg, All}, {evt_type, =}, {evt_value, All} } }
|
||||
window_compose_functions { 9, { {compose_cpu, As Is}, {compose_appl, As Is}, {compose_task, As Is}, {compose_thread, As Is}, {compose_node, As Is}, {compose_system, As Is}, {compose_workload, As Is}, {topcompose1, As Is}, {topcompose2, As Is} } }
|
||||
window_filter_module evt_type 1 25
|
||||
window_filter_module evt_type_label 1 "CPU: OpenMP mode of the RUNNING thread"
|
||||
window_filter_module evt_type_label 1 "CPU: MPI function of the RUNNING thread"
|
||||
|
44
cfg/cpu/nanos6/breakdown.cfg
Normal file
@ -0,0 +1,44 @@
|
||||
#ParaverCFG
|
||||
ConfigFile.Version: 3.4
|
||||
ConfigFile.NumWindows: 1
|
||||
|
||||
|
||||
################################################################################
|
||||
< NEW DISPLAYING WINDOW CPU: Nanos6 Runtime/Idle/Task breakdown >
|
||||
################################################################################
|
||||
window_name CPU: Nanos6 Runtime/Idle/Task breakdown
|
||||
window_type single
|
||||
window_id 1
|
||||
window_position_x 100
|
||||
window_position_y 100
|
||||
window_width 600
|
||||
window_height 150
|
||||
window_comm_lines_enabled false
|
||||
window_flags_enabled false
|
||||
window_noncolor_mode true
|
||||
window_custom_color_enabled true
|
||||
window_custom_color_palette {1.000000000000:0,70,0},{3.000000000000:99,131,0},{4.000000000000:53,121,221},{5.000000000000:223,108,0},{6.000000000000:75,127,82},{7.000000000000:242,110,162},{8.000000000000:255,190,0},{9.000000000000:153,114,0},{10.000000000000:156,12,231},{11.000000000000:177,25,229},{12.000000000000:255,72,50},{15.000000000000:0,171,255},{16.000000000000:124,213,228},{17.000000000000:242,239,141},{18.000000000000:80,80,80},{19.000000000000:94,0,0},{20.000000000000:128,165,214},{22.000000000000:222,101,128},{23.000000000000:110,148,255},{100.000000000000:0,100,0},{101.000000000000:100,100,177},{102.000000000000:150,150,0}
|
||||
window_logical_filtered true
|
||||
window_physical_filtered false
|
||||
window_comm_fromto true
|
||||
window_comm_tagsize true
|
||||
window_comm_typeval true
|
||||
window_units Microseconds
|
||||
window_maximum_y 1000.0
|
||||
window_minimum_y 1.0
|
||||
window_compute_y_max true
|
||||
window_level thread
|
||||
window_scale_relative 1.000000000000
|
||||
window_end_time_relative 1.000000000000
|
||||
window_object appl { 1, { All } }
|
||||
window_begin_time_relative 0.000000000000
|
||||
window_open true
|
||||
window_drawmode draw_randnotzero
|
||||
window_drawmode_rows draw_randnotzero
|
||||
window_pixel_size 1
|
||||
window_labels_to_draw 1
|
||||
window_selected_functions { 14, { {cpu, Active Thd}, {appl, Adding}, {task, Adding}, {thread, Last Evt Val}, {node, Adding}, {system, Adding}, {workload, Adding}, {from_obj, All}, {to_obj, All}, {tag_msg, All}, {size_msg, All}, {bw_msg, All}, {evt_type, =}, {evt_value, All} } }
|
||||
window_compose_functions { 9, { {compose_cpu, As Is}, {compose_appl, As Is}, {compose_task, As Is}, {compose_thread, As Is}, {compose_node, As Is}, {compose_system, As Is}, {compose_workload, As Is}, {topcompose1, As Is}, {topcompose2, As Is} } }
|
||||
window_filter_module evt_type 1 41
|
||||
window_filter_module evt_type_label 1 "CPU: Nanos6 Runtime/Idle/Task breakdown"
|
||||
|
44
cfg/cpu/nanos6/idle.cfg
Normal file
@ -0,0 +1,44 @@
|
||||
#ParaverCFG
|
||||
ConfigFile.Version: 3.4
|
||||
ConfigFile.NumWindows: 1
|
||||
|
||||
|
||||
################################################################################
|
||||
< NEW DISPLAYING WINDOW CPU: Nanos6 idle state of the RUNNING thread >
|
||||
################################################################################
|
||||
window_name CPU: Nanos6 idle state of the RUNNING thread
|
||||
window_type single
|
||||
window_id 1
|
||||
window_position_x 100
|
||||
window_position_y 100
|
||||
window_width 600
|
||||
window_height 150
|
||||
window_comm_lines_enabled false
|
||||
window_flags_enabled false
|
||||
window_noncolor_mode true
|
||||
window_custom_color_enabled true
|
||||
window_custom_color_palette {100.000000000000:0,100,0},{101.000000000000:100,100,177},{102.000000000000:150,150,0}
|
||||
window_logical_filtered true
|
||||
window_physical_filtered false
|
||||
window_comm_fromto true
|
||||
window_comm_tagsize true
|
||||
window_comm_typeval true
|
||||
window_units Microseconds
|
||||
window_maximum_y 1000.0
|
||||
window_minimum_y 1.0
|
||||
window_compute_y_max true
|
||||
window_level thread
|
||||
window_scale_relative 1.000000000000
|
||||
window_end_time_relative 1.000000000000
|
||||
window_object appl { 1, { All } }
|
||||
window_begin_time_relative 0.000000000000
|
||||
window_open true
|
||||
window_drawmode draw_randnotzero
|
||||
window_drawmode_rows draw_randnotzero
|
||||
window_pixel_size 1
|
||||
window_labels_to_draw 1
|
||||
window_selected_functions { 14, { {cpu, Active Thd}, {appl, Adding}, {task, Adding}, {thread, Last Evt Val}, {node, Adding}, {system, Adding}, {workload, Adding}, {from_obj, All}, {to_obj, All}, {tag_msg, All}, {size_msg, All}, {bw_msg, All}, {evt_type, =}, {evt_value, All} } }
|
||||
window_compose_functions { 9, { {compose_cpu, As Is}, {compose_appl, As Is}, {compose_task, As Is}, {compose_thread, As Is}, {compose_node, As Is}, {compose_system, As Is}, {compose_workload, As Is}, {topcompose1, As Is}, {topcompose2, As Is} } }
|
||||
window_filter_module evt_type 1 40
|
||||
window_filter_module evt_type_label 1 "CPU: Nanos6 idle state of the RUNNING thread"
|
||||
|
@ -9,8 +9,8 @@ ConfigFile.NumWindows: 1
|
||||
window_name CPU: Nanos6 task MPI rank of the RUNNING thread
|
||||
window_type single
|
||||
window_id 1
|
||||
window_position_x 0
|
||||
window_position_y 0
|
||||
window_position_x 100
|
||||
window_position_y 100
|
||||
window_width 600
|
||||
window_height 150
|
||||
window_comm_lines_enabled false
|
||||
|
@ -9,15 +9,15 @@ ConfigFile.NumWindows: 1
|
||||
window_name CPU: Nanos6 subsystem of the RUNNING thread
|
||||
window_type single
|
||||
window_id 1
|
||||
window_position_x 0
|
||||
window_position_y 0
|
||||
window_position_x 100
|
||||
window_position_y 100
|
||||
window_width 600
|
||||
window_height 150
|
||||
window_comm_lines_enabled false
|
||||
window_flags_enabled false
|
||||
window_noncolor_mode true
|
||||
window_custom_color_enabled true
|
||||
window_custom_color_palette {1.000000000000:0,70,0},{2.000000000000:99,131,0},{3.000000000000:53,121,221},{4.000000000000:223,108,0},{5.000000000000:75,127,82},{6.000000000000:242,110,162},{7.000000000000:255,190,0},{8.000000000000:153,114,0},{9.000000000000:156,12,231},{10.000000000000:177,25,229},{11.000000000000:255,72,50},{14.000000000000:0,171,255},{15.000000000000:124,213,228},{16.000000000000:242,239,141},{17.000000000000:80,80,80},{18.000000000000:94,0,0},{19.000000000000:128,165,214},{21.000000000000:222,101,128},{22.000000000000:110,148,255}
|
||||
window_custom_color_palette {1.000000000000:0,70,0},{3.000000000000:99,131,0},{4.000000000000:53,121,221},{5.000000000000:223,108,0},{6.000000000000:75,127,82},{7.000000000000:242,110,162},{8.000000000000:255,190,0},{9.000000000000:153,114,0},{10.000000000000:156,12,231},{11.000000000000:177,25,229},{12.000000000000:255,72,50},{15.000000000000:0,171,255},{16.000000000000:124,213,228},{17.000000000000:242,239,141},{18.000000000000:80,80,80},{19.000000000000:94,0,0},{20.000000000000:128,165,214},{22.000000000000:222,101,128},{23.000000000000:110,148,255}
|
||||
window_logical_filtered true
|
||||
window_physical_filtered false
|
||||
window_comm_fromto true
|
||||
|
@ -9,8 +9,8 @@ ConfigFile.NumWindows: 1
|
||||
window_name CPU: Nanos6 task ID of the RUNNING thread
|
||||
window_type single
|
||||
window_id 1
|
||||
window_position_x 0
|
||||
window_position_y 0
|
||||
window_position_x 100
|
||||
window_position_y 100
|
||||
window_width 600
|
||||
window_height 150
|
||||
window_comm_lines_enabled false
|
||||
|
@ -9,8 +9,8 @@ ConfigFile.NumWindows: 1
|
||||
window_name CPU: Nanos6 task type of the RUNNING thread
|
||||
window_type single
|
||||
window_id 1
|
||||
window_position_x 0
|
||||
window_position_y 0
|
||||
window_position_x 100
|
||||
window_position_y 100
|
||||
window_width 600
|
||||
window_height 150
|
||||
window_comm_lines_enabled false
|
||||
|
@ -9,8 +9,8 @@ ConfigFile.NumWindows: 1
|
||||
window_name CPU: Nanos6 thread type of the RUNNING thread
|
||||
window_type single
|
||||
window_id 1
|
||||
window_position_x 0
|
||||
window_position_y 0
|
||||
window_position_x 100
|
||||
window_position_y 100
|
||||
window_width 600
|
||||
window_height 150
|
||||
window_comm_lines_enabled false
|
||||
|
@ -9,8 +9,8 @@ ConfigFile.NumWindows: 1
|
||||
window_name CPU: NODES subsystem of the RUNNING thread
|
||||
window_type single
|
||||
window_id 1
|
||||
window_position_x 0
|
||||
window_position_y 0
|
||||
window_position_x 100
|
||||
window_position_y 100
|
||||
window_width 600
|
||||
window_height 150
|
||||
window_comm_lines_enabled true
|
||||
|
42
cfg/cpu/nosv/body-id.cfg
Normal file
@ -0,0 +1,42 @@
|
||||
#ParaverCFG
|
||||
ConfigFile.Version: 3.4
|
||||
ConfigFile.NumWindows: 1
|
||||
|
||||
|
||||
################################################################################
|
||||
< NEW DISPLAYING WINDOW CPU: nOS-V task body ID of the RUNNING thread >
|
||||
################################################################################
|
||||
window_name CPU: nOS-V task body ID of the RUNNING thread
|
||||
window_type single
|
||||
window_id 1
|
||||
window_position_x 100
|
||||
window_position_y 100
|
||||
window_width 600
|
||||
window_height 150
|
||||
window_comm_lines_enabled true
|
||||
window_flags_enabled false
|
||||
window_noncolor_mode true
|
||||
window_color_mode window_in_null_gradient_mode
|
||||
window_logical_filtered true
|
||||
window_physical_filtered false
|
||||
window_comm_fromto true
|
||||
window_comm_tagsize true
|
||||
window_comm_typeval true
|
||||
window_units Microseconds
|
||||
window_maximum_y 1000.0
|
||||
window_minimum_y 1.0
|
||||
window_compute_y_max true
|
||||
window_level thread
|
||||
window_scale_relative 1.000000000000
|
||||
window_end_time_relative 1.000000000000
|
||||
window_object appl { 1, { All } }
|
||||
window_begin_time_relative 0.000000000000
|
||||
window_open true
|
||||
window_drawmode draw_randnotzero
|
||||
window_drawmode_rows draw_randnotzero
|
||||
window_pixel_size 1
|
||||
window_labels_to_draw 1
|
||||
window_selected_functions { 14, { {cpu, Active Thd}, {appl, Adding}, {task, Adding}, {thread, Last Evt Val}, {node, Adding}, {system, Adding}, {workload, Adding}, {from_obj, All}, {to_obj, All}, {tag_msg, All}, {size_msg, All}, {bw_msg, All}, {evt_type, =}, {evt_value, All} } }
|
||||
window_compose_functions { 9, { {compose_cpu, As Is}, {compose_appl, As Is}, {compose_task, As Is}, {compose_thread, As Is}, {compose_node, As Is}, {compose_system, As Is}, {compose_workload, As Is}, {topcompose1, As Is}, {topcompose2, As Is} } }
|
||||
window_filter_module evt_type 1 15
|
||||
window_filter_module evt_type_label 1 "CPU: nOS-V task body ID of the RUNNING thread"
|
44
cfg/cpu/nosv/breakdown.cfg
Normal file
@ -0,0 +1,44 @@
|
||||
#ParaverCFG
|
||||
ConfigFile.Version: 3.4
|
||||
ConfigFile.NumWindows: 1
|
||||
|
||||
|
||||
################################################################################
|
||||
< NEW DISPLAYING WINDOW CPU: nOS-V Runtime/Idle/Task breakdown >
|
||||
################################################################################
|
||||
window_name CPU: nOS-V Runtime/Idle/Task breakdown
|
||||
window_type single
|
||||
window_id 1
|
||||
window_position_x 0
|
||||
window_position_y 0
|
||||
window_width 600
|
||||
window_height 150
|
||||
window_comm_lines_enabled false
|
||||
window_flags_enabled false
|
||||
window_noncolor_mode true
|
||||
window_custom_color_enabled true
|
||||
window_custom_color_palette {6.000000000000:94,0,0},{7.000000000000:153,114,0},{9.000000000000:124,213,228},{10.000000000000:242,239,141},{11.000000000000:0,70,0},{19.000000000000:195,96,151},{20.000000000000:255,162,255},{21.000000000000:203,255,3},{22.000000000000:7,255,12},{23.000000000000:21,224,189},{24.000000000000:255,103,0},{25.000000000000:0,99,162},{26.000000000000:110,77,252},{100.000000000000:0,100,0},{101.000000000000:60,60,60},{102.000000000000:150,150,0}
|
||||
window_logical_filtered true
|
||||
window_physical_filtered false
|
||||
window_comm_fromto true
|
||||
window_comm_tagsize true
|
||||
window_comm_typeval true
|
||||
window_units Microseconds
|
||||
window_maximum_y 1000.0
|
||||
window_minimum_y 1.0
|
||||
window_compute_y_max true
|
||||
window_level thread
|
||||
window_scale_relative 1.000000000000
|
||||
window_end_time_relative 1.000000000000
|
||||
window_object appl { 1, { All } }
|
||||
window_begin_time_relative 0.000000000000
|
||||
window_open true
|
||||
window_drawmode draw_randnotzero
|
||||
window_drawmode_rows draw_randnotzero
|
||||
window_pixel_size 1
|
||||
window_labels_to_draw 1
|
||||
window_selected_functions { 14, { {cpu, Active Thd}, {appl, Adding}, {task, Adding}, {thread, Last Evt Val}, {node, Adding}, {system, Adding}, {workload, Adding}, {from_obj, All}, {to_obj, All}, {tag_msg, All}, {size_msg, All}, {bw_msg, All}, {evt_type, =}, {evt_value, All} } }
|
||||
window_compose_functions { 9, { {compose_cpu, As Is}, {compose_appl, As Is}, {compose_task, As Is}, {compose_thread, As Is}, {compose_node, As Is}, {compose_system, As Is}, {compose_workload, As Is}, {topcompose1, As Is}, {topcompose2, As Is} } }
|
||||
window_filter_module evt_type 1 17
|
||||
window_filter_module evt_type_label 1 "CPU: nOS-V Runtime/Idle/Task breakdown"
|
||||
|
44
cfg/cpu/nosv/idle.cfg
Normal file
@ -0,0 +1,44 @@
|
||||
#ParaverCFG
|
||||
ConfigFile.Version: 3.4
|
||||
ConfigFile.NumWindows: 1
|
||||
|
||||
|
||||
################################################################################
|
||||
< NEW DISPLAYING WINDOW CPU: nOS-V idle state of the RUNNING thread >
|
||||
################################################################################
|
||||
window_name CPU: nOS-V idle state of the RUNNING thread
|
||||
window_type single
|
||||
window_id 1
|
||||
window_position_x 0
|
||||
window_position_y 0
|
||||
window_width 600
|
||||
window_height 150
|
||||
window_comm_lines_enabled false
|
||||
window_flags_enabled false
|
||||
window_noncolor_mode true
|
||||
window_custom_color_enabled true
|
||||
window_custom_color_palette {100.000000000000:0,100,0},{101.000000000000:60,60,60},{102.000000000000:150,150,0}
|
||||
window_logical_filtered true
|
||||
window_physical_filtered false
|
||||
window_comm_fromto true
|
||||
window_comm_tagsize true
|
||||
window_comm_typeval true
|
||||
window_units Microseconds
|
||||
window_maximum_y 1000.0
|
||||
window_minimum_y 1.0
|
||||
window_compute_y_max true
|
||||
window_level thread
|
||||
window_scale_relative 1.000000000000
|
||||
window_end_time_relative 1.000000000000
|
||||
window_object appl { 1, { All } }
|
||||
window_begin_time_relative 0.000000000000
|
||||
window_open true
|
||||
window_drawmode draw_randnotzero
|
||||
window_drawmode_rows draw_randnotzero
|
||||
window_pixel_size 1
|
||||
window_labels_to_draw 1
|
||||
window_selected_functions { 14, { {cpu, Active Thd}, {appl, Adding}, {task, Adding}, {thread, Last Evt Val}, {node, Adding}, {system, Adding}, {workload, Adding}, {from_obj, All}, {to_obj, All}, {tag_msg, All}, {size_msg, All}, {bw_msg, All}, {evt_type, =}, {evt_value, All} } }
|
||||
window_compose_functions { 9, { {compose_cpu, As Is}, {compose_appl, As Is}, {compose_task, As Is}, {compose_thread, As Is}, {compose_node, As Is}, {compose_system, As Is}, {compose_workload, As Is}, {topcompose1, As Is}, {topcompose2, As Is} } }
|
||||
window_filter_module evt_type 1 16
|
||||
window_filter_module evt_type_label 1 "CPU: nOS-V idle state of the RUNNING thread"
|
||||
|
@ -9,15 +9,15 @@ ConfigFile.NumWindows: 1
|
||||
window_name CPU: nOS-V subsystem of the RUNNING thread
|
||||
window_type single
|
||||
window_id 1
|
||||
window_position_x 0
|
||||
window_position_y 0
|
||||
window_position_x 100
|
||||
window_position_y 100
|
||||
window_width 600
|
||||
window_height 150
|
||||
window_comm_lines_enabled true
|
||||
window_flags_enabled false
|
||||
window_noncolor_mode true
|
||||
window_custom_color_enabled true
|
||||
window_custom_color_palette {6.000000000000:94,0,0},{7.000000000000:153,114,0},{9.000000000000:124,213,228},{10.000000000000:242,239,141},{11.000000000000:0,70,0}
|
||||
window_custom_color_palette {6.000000000000:94,0,0},{7.000000000000:153,114,0},{9.000000000000:124,213,228},{10.000000000000:242,239,141},{11.000000000000:0,70,0},{19.000000000000:195,96,151},{20.000000000000:255,162,255},{21.000000000000:203,255,3},{22.000000000000:7,255,12},{23.000000000000:21,165,118},{24.000000000000:255,103,0},{25.000000000000:200,30,5},{26.000000000000:255,10,200},{27.000000000000:98,133,80},{28.000000000000:0,99,162},{29.000000000000:110,77,252}
|
||||
window_logical_filtered true
|
||||
window_physical_filtered false
|
||||
window_comm_fromto true
|
||||
|
@ -9,8 +9,8 @@ ConfigFile.NumWindows: 1
|
||||
window_name CPU: nOS-V task AppID of the RUNNING thread
|
||||
window_type single
|
||||
window_id 1
|
||||
window_position_x 0
|
||||
window_position_y 0
|
||||
window_position_x 100
|
||||
window_position_y 100
|
||||
window_width 600
|
||||
window_height 150
|
||||
window_comm_lines_enabled true
|
||||
|
@ -9,8 +9,8 @@ ConfigFile.NumWindows: 1
|
||||
window_name CPU: nOS-V TaskID of the RUNNING thread
|
||||
window_type single
|
||||
window_id 1
|
||||
window_position_x 0
|
||||
window_position_y 0
|
||||
window_position_x 100
|
||||
window_position_y 100
|
||||
window_width 600
|
||||
window_height 150
|
||||
window_comm_lines_enabled true
|
||||
|
@ -9,8 +9,8 @@ ConfigFile.NumWindows: 1
|
||||
window_name CPU: nOS-V task rank+1 of the RUNNING thread
|
||||
window_type single
|
||||
window_id 1
|
||||
window_position_x 0
|
||||
window_position_y 0
|
||||
window_position_x 100
|
||||
window_position_y 100
|
||||
window_width 600
|
||||
window_height 150
|
||||
window_comm_lines_enabled true
|
||||
|
@ -9,8 +9,8 @@ ConfigFile.NumWindows: 1
|
||||
window_name CPU: nOS-V task type of the RUNNING thread
|
||||
window_type single
|
||||
window_id 1
|
||||
window_position_x 0
|
||||
window_position_y 0
|
||||
window_position_x 100
|
||||
window_position_y 100
|
||||
window_width 600
|
||||
window_height 150
|
||||
window_comm_lines_enabled true
|
||||
|
41
cfg/cpu/openmp/label.cfg
Normal file
@ -0,0 +1,41 @@
|
||||
#ParaverCFG
|
||||
ConfigFile.Version: 3.4
|
||||
ConfigFile.NumWindows: 1
|
||||
|
||||
|
||||
################################################################################
|
||||
< NEW DISPLAYING WINDOW CPU: OpenMP label of the RUNNING thread >
|
||||
################################################################################
|
||||
window_name CPU: OpenMP label of the RUNNING thread
|
||||
window_type single
|
||||
window_id 1
|
||||
window_position_x 100
|
||||
window_position_y 100
|
||||
window_width 600
|
||||
window_height 150
|
||||
window_comm_lines_enabled true
|
||||
window_flags_enabled false
|
||||
window_noncolor_mode true
|
||||
window_logical_filtered true
|
||||
window_physical_filtered false
|
||||
window_comm_fromto true
|
||||
window_comm_tagsize true
|
||||
window_comm_typeval true
|
||||
window_units Microseconds
|
||||
window_maximum_y 1000.0
|
||||
window_minimum_y 1.0
|
||||
window_compute_y_max true
|
||||
window_level thread
|
||||
window_scale_relative 1.000000000000
|
||||
window_end_time_relative 1.000000000000
|
||||
window_object appl { 1, { All } }
|
||||
window_begin_time_relative 0.000000000000
|
||||
window_open true
|
||||
window_drawmode draw_randnotzero
|
||||
window_drawmode_rows draw_randnotzero
|
||||
window_pixel_size 1
|
||||
window_labels_to_draw 1
|
||||
window_selected_functions { 14, { {cpu, Active Thd}, {appl, Adding}, {task, Adding}, {thread, Last Evt Val}, {node, Adding}, {system, Adding}, {workload, Adding}, {from_obj, All}, {to_obj, All}, {tag_msg, All}, {size_msg, All}, {bw_msg, All}, {evt_type, =}, {evt_value, All} } }
|
||||
window_compose_functions { 9, { {compose_cpu, As Is}, {compose_appl, As Is}, {compose_task, As Is}, {compose_thread, As Is}, {compose_node, As Is}, {compose_system, As Is}, {compose_workload, As Is}, {topcompose1, As Is}, {topcompose2, As Is} } }
|
||||
window_filter_module evt_type 1 51
|
||||
window_filter_module evt_type_label 1 "CPU: OpenMP label of the RUNNING thread"
|
44
cfg/cpu/openmp/subsystem.cfg
Normal file
@ -0,0 +1,44 @@
|
||||
#ParaverCFG
|
||||
ConfigFile.Version: 3.4
|
||||
ConfigFile.NumWindows: 1
|
||||
|
||||
|
||||
################################################################################
|
||||
< NEW DISPLAYING WINDOW CPU: OpenMP subsystem of the RUNNING thread >
|
||||
################################################################################
|
||||
window_name CPU: OpenMP subsystem of the RUNNING thread
|
||||
window_type single
|
||||
window_id 1
|
||||
window_position_x 100
|
||||
window_position_y 100
|
||||
window_width 600
|
||||
window_height 150
|
||||
window_comm_lines_enabled true
|
||||
window_flags_enabled false
|
||||
window_noncolor_mode true
|
||||
window_custom_color_enabled true
|
||||
window_custom_color_palette {1.000000000000:255,177,245},{2.000000000000:255,86,239},{3.000000000000:122,44,22},{5.000000000000:239,188,0},{6.000000000000:160,89,0},{8.000000000000:0,255,73},{10.000000000000:86,209,43},{11.000000000000:203,208,93},{12.000000000000:0,176,169},{13.000000000000:190,82,201},{14.000000000000:124,114,183},{15.000000000000:157,231,255},{16.000000000000:199,194,0},{17.000000000000:96,0,200},{18.000000000000:255,255,124},{19.000000000000:35,152,0},{21.000000000000:255,251,174},{22.000000000000:232,0,0},{23.000000000000:210,66,40},{26.000000000000:101,101,99},{27.000000000000:200,0,255},{28.000000000000:0,203,249},{30.000000000000:255,219,0},{31.000000000000:48,103,107},{34.000000000000:194,105,126}
|
||||
window_logical_filtered true
|
||||
window_physical_filtered false
|
||||
window_comm_fromto true
|
||||
window_comm_tagsize true
|
||||
window_comm_typeval true
|
||||
window_units Microseconds
|
||||
window_maximum_y 1000.0
|
||||
window_minimum_y 1.0
|
||||
window_compute_y_max true
|
||||
window_level thread
|
||||
window_scale_relative 1.000000000000
|
||||
window_end_time_relative 1.000000000000
|
||||
window_object appl { 1, { All } }
|
||||
window_begin_time_relative 0.000000000000
|
||||
window_open true
|
||||
window_drawmode draw_randnotzero
|
||||
window_drawmode_rows draw_randnotzero
|
||||
window_pixel_size 1
|
||||
window_labels_to_draw 1
|
||||
window_selected_functions { 14, { {cpu, Active Thd}, {appl, Adding}, {task, Adding}, {thread, Last Evt Val}, {node, Adding}, {system, Adding}, {workload, Adding}, {from_obj, All}, {to_obj, All}, {tag_msg, All}, {size_msg, All}, {bw_msg, All}, {evt_type, =}, {evt_value, All} } }
|
||||
window_compose_functions { 9, { {compose_cpu, As Is}, {compose_appl, As Is}, {compose_task, As Is}, {compose_thread, As Is}, {compose_node, As Is}, {compose_system, As Is}, {compose_workload, As Is}, {topcompose1, As Is}, {topcompose2, As Is} } }
|
||||
window_filter_module evt_type 1 50
|
||||
window_filter_module evt_type_label 1 "CPU: OpenMP subsystem of the RUNNING thread"
|
||||
|
41
cfg/cpu/openmp/task-id.cfg
Normal file
@ -0,0 +1,41 @@
|
||||
#ParaverCFG
|
||||
ConfigFile.Version: 3.4
|
||||
ConfigFile.NumWindows: 1
|
||||
|
||||
|
||||
################################################################################
|
||||
< NEW DISPLAYING WINDOW CPU: OpenMP task id of the RUNNING thread >
|
||||
################################################################################
|
||||
window_name CPU: OpenMP task id of the RUNNING thread
|
||||
window_type single
|
||||
window_id 1
|
||||
window_position_x 100
|
||||
window_position_y 100
|
||||
window_width 600
|
||||
window_height 150
|
||||
window_comm_lines_enabled true
|
||||
window_flags_enabled false
|
||||
window_noncolor_mode true
|
||||
window_logical_filtered true
|
||||
window_physical_filtered false
|
||||
window_comm_fromto true
|
||||
window_comm_tagsize true
|
||||
window_comm_typeval true
|
||||
window_units Microseconds
|
||||
window_maximum_y 1000.0
|
||||
window_minimum_y 1.0
|
||||
window_compute_y_max true
|
||||
window_level thread
|
||||
window_scale_relative 1.000000000000
|
||||
window_end_time_relative 1.000000000000
|
||||
window_object appl { 1, { All } }
|
||||
window_begin_time_relative 0.000000000000
|
||||
window_open true
|
||||
window_drawmode draw_randnotzero
|
||||
window_drawmode_rows draw_randnotzero
|
||||
window_pixel_size 1
|
||||
window_labels_to_draw 1
|
||||
window_selected_functions { 14, { {cpu, Active Thd}, {appl, Adding}, {task, Adding}, {thread, Last Evt Val}, {node, Adding}, {system, Adding}, {workload, Adding}, {from_obj, All}, {to_obj, All}, {tag_msg, All}, {size_msg, All}, {bw_msg, All}, {evt_type, =}, {evt_value, All} } }
|
||||
window_compose_functions { 9, { {compose_cpu, As Is}, {compose_appl, As Is}, {compose_task, As Is}, {compose_thread, As Is}, {compose_node, As Is}, {compose_system, As Is}, {compose_workload, As Is}, {topcompose1, As Is}, {topcompose2, As Is} } }
|
||||
window_filter_module evt_type 1 52
|
||||
window_filter_module evt_type_label 1 "CPU: OpenMP task id of the RUNNING thread"
|
@ -9,8 +9,8 @@ ConfigFile.NumWindows: 1
|
||||
window_name CPU: Flushing state of the RUNNING thread
|
||||
window_type single
|
||||
window_id 1
|
||||
window_position_x 0
|
||||
window_position_y 0
|
||||
window_position_x 100
|
||||
window_position_y 100
|
||||
window_width 600
|
||||
window_height 150
|
||||
window_comm_lines_enabled true
|
||||
|
41
cfg/cpu/ovni/mark.cfg
Normal file
@ -0,0 +1,41 @@
|
||||
#ParaverCFG
|
||||
ConfigFile.Version: 3.4
|
||||
ConfigFile.NumWindows: 1
|
||||
|
||||
|
||||
################################################################################
|
||||
< NEW DISPLAYING WINDOW CPU: Mark value of the RUNNING thread >
|
||||
################################################################################
|
||||
window_name CPU: Mark value of the RUNNING thread
|
||||
window_type single
|
||||
window_id 1
|
||||
window_position_x 100
|
||||
window_position_y 100
|
||||
window_width 600
|
||||
window_height 150
|
||||
window_comm_lines_enabled true
|
||||
window_flags_enabled false
|
||||
window_noncolor_mode true
|
||||
window_logical_filtered true
|
||||
window_physical_filtered false
|
||||
window_comm_fromto true
|
||||
window_comm_tagsize true
|
||||
window_comm_typeval true
|
||||
window_units Microseconds
|
||||
window_maximum_y 1000.0
|
||||
window_minimum_y 1.0
|
||||
window_compute_y_max true
|
||||
window_level thread
|
||||
window_scale_relative 1.000000000000
|
||||
window_end_time_relative 1.000000000000
|
||||
window_object appl { 1, { All } }
|
||||
window_begin_time_relative 0.000000000000
|
||||
window_open true
|
||||
window_drawmode draw_randnotzero
|
||||
window_drawmode_rows draw_randnotzero
|
||||
window_pixel_size 1
|
||||
window_labels_to_draw 1
|
||||
window_selected_functions { 14, { {cpu, Active Thd}, {appl, Adding}, {task, Adding}, {thread, Last Evt Val}, {node, Adding}, {system, Adding}, {workload, Adding}, {from_obj, All}, {to_obj, All}, {tag_msg, All}, {size_msg, All}, {bw_msg, All}, {evt_type, =}, {evt_value, All} } }
|
||||
window_compose_functions { 9, { {compose_cpu, As Is}, {compose_appl, As Is}, {compose_task, As Is}, {compose_thread, As Is}, {compose_node, As Is}, {compose_system, As Is}, {compose_workload, As Is}, {topcompose1, As Is}, {topcompose2, As Is} } }
|
||||
window_filter_module evt_type 1 100
|
||||
window_filter_module evt_type_label 1 "CPU: Mark value of the RUNNING thread"
|
@ -9,8 +9,8 @@ ConfigFile.NumWindows: 1
|
||||
window_name CPU: Number of RUNNING threads
|
||||
window_type single
|
||||
window_id 1
|
||||
window_position_x 0
|
||||
window_position_y 0
|
||||
window_position_x 100
|
||||
window_position_y 100
|
||||
window_width 600
|
||||
window_height 150
|
||||
window_comm_lines_enabled true
|
||||
|
@ -9,8 +9,8 @@ ConfigFile.NumWindows: 1
|
||||
window_name CPU: PID of the RUNNING thread
|
||||
window_type single
|
||||
window_id 1
|
||||
window_position_x 0
|
||||
window_position_y 0
|
||||
window_position_x 100
|
||||
window_position_y 100
|
||||
window_width 600
|
||||
window_height 150
|
||||
window_comm_lines_enabled true
|
||||
|
@ -9,8 +9,8 @@ ConfigFile.NumWindows: 1
|
||||
window_name CPU: TID of the RUNNING thread
|
||||
window_type single
|
||||
window_id 1
|
||||
window_position_x 0
|
||||
window_position_y 0
|
||||
window_position_x 100
|
||||
window_position_y 100
|
||||
window_width 600
|
||||
window_height 150
|
||||
window_comm_lines_enabled true
|
||||
|
@ -4,13 +4,13 @@ ConfigFile.NumWindows: 1
|
||||
|
||||
|
||||
################################################################################
|
||||
< NEW DISPLAYING WINDOW CPU: TAMPI mode of the RUNNING thread >
|
||||
< NEW DISPLAYING WINDOW CPU: TAMPI subsystem of the RUNNING thread >
|
||||
################################################################################
|
||||
window_name CPU: TAMPI mode of the RUNNING thread
|
||||
window_name CPU: TAMPI subsystem of the RUNNING thread
|
||||
window_type single
|
||||
window_id 1
|
||||
window_position_x 0
|
||||
window_position_y 0
|
||||
window_position_x 100
|
||||
window_position_y 100
|
||||
window_width 600
|
||||
window_height 150
|
||||
window_comm_lines_enabled true
|
||||
@ -38,5 +38,5 @@ window_labels_to_draw 1
|
||||
window_selected_functions { 14, { {cpu, Active Thd}, {appl, Adding}, {task, Adding}, {thread, Last Evt Val}, {node, Adding}, {system, Adding}, {workload, Adding}, {from_obj, All}, {to_obj, All}, {tag_msg, All}, {size_msg, All}, {bw_msg, All}, {evt_type, =}, {evt_value, All} } }
|
||||
window_compose_functions { 9, { {compose_cpu, As Is}, {compose_appl, As Is}, {compose_task, As Is}, {compose_thread, As Is}, {compose_node, As Is}, {compose_system, As Is}, {compose_workload, As Is}, {topcompose1, As Is}, {topcompose2, As Is} } }
|
||||
window_filter_module evt_type 1 20
|
||||
window_filter_module evt_type_label 1 "CPU: TAMPI mode of the RUNNING thread"
|
||||
window_filter_module evt_type_label 1 "CPU: TAMPI subsystem of the RUNNING thread"
|
||||
|
@ -9,8 +9,8 @@ ConfigFile.NumWindows: 1
|
||||
window_name Thread: Context switches of the CURRENT thread
|
||||
window_type single
|
||||
window_id 1
|
||||
window_position_x 0
|
||||
window_position_y 0
|
||||
window_position_x 100
|
||||
window_position_y 100
|
||||
window_width 600
|
||||
window_height 150
|
||||
window_comm_lines_enabled true
|
||||
@ -38,5 +38,5 @@ window_labels_to_draw 1
|
||||
window_selected_functions { 14, { {cpu, Active Thd}, {appl, Adding}, {task, Adding}, {thread, Last Evt Val}, {node, Adding}, {system, Adding}, {workload, Adding}, {from_obj, All}, {to_obj, All}, {tag_msg, All}, {size_msg, All}, {bw_msg, All}, {evt_type, =}, {evt_value, All} } }
|
||||
window_compose_functions { 9, { {compose_cpu, As Is}, {compose_appl, As Is}, {compose_task, As Is}, {compose_thread, As Is}, {compose_node, As Is}, {compose_system, As Is}, {compose_workload, As Is}, {topcompose1, As Is}, {topcompose2, As Is} } }
|
||||
window_filter_module evt_type 1 45
|
||||
window_filter_module evt_type_label 1 "Thread: Context switches of the CURRENT thread"
|
||||
window_filter_module evt_type_label 1 "Thread: Context switches"
|
||||
|
||||
|
@ -4,13 +4,13 @@ ConfigFile.NumWindows: 1
|
||||
|
||||
|
||||
################################################################################
|
||||
< NEW DISPLAYING WINDOW Thread: OpenMP mode of the RUNNING thread >
|
||||
< NEW DISPLAYING WINDOW Thread: MPI function of the RUNNING thread >
|
||||
################################################################################
|
||||
window_name Thread: OpenMP mode of the RUNNING thread
|
||||
window_name Thread: MPI function of the RUNNING thread
|
||||
window_type single
|
||||
window_id 1
|
||||
window_position_x 0
|
||||
window_position_y 0
|
||||
window_position_x 100
|
||||
window_position_y 100
|
||||
window_width 600
|
||||
window_height 150
|
||||
window_comm_lines_enabled true
|
||||
@ -38,5 +38,5 @@ window_labels_to_draw 1
|
||||
window_selected_functions { 14, { {cpu, Active Thd}, {appl, Adding}, {task, Adding}, {thread, Last Evt Val}, {node, Adding}, {system, Adding}, {workload, Adding}, {from_obj, All}, {to_obj, All}, {tag_msg, All}, {size_msg, All}, {bw_msg, All}, {evt_type, =}, {evt_value, All} } }
|
||||
window_compose_functions { 9, { {compose_cpu, As Is}, {compose_appl, As Is}, {compose_task, As Is}, {compose_thread, As Is}, {compose_node, As Is}, {compose_system, As Is}, {compose_workload, As Is}, {topcompose1, As Is}, {topcompose2, As Is} } }
|
||||
window_filter_module evt_type 1 25
|
||||
window_filter_module evt_type_label 1 "Thread: OpenMP mode of the RUNNING thread"
|
||||
window_filter_module evt_type_label 1 "Thread: MPI function of the RUNNING thread"
|
||||
|
44
cfg/thread/nanos6/idle.cfg
Normal file
@ -0,0 +1,44 @@
|
||||
#ParaverCFG
|
||||
ConfigFile.Version: 3.4
|
||||
ConfigFile.NumWindows: 1
|
||||
|
||||
|
||||
################################################################################
|
||||
< NEW DISPLAYING WINDOW Thread: Nanos6 idle state >
|
||||
################################################################################
|
||||
window_name Thread: Nanos6 idle state
|
||||
window_type single
|
||||
window_id 1
|
||||
window_position_x 100
|
||||
window_position_y 100
|
||||
window_width 600
|
||||
window_height 150
|
||||
window_comm_lines_enabled false
|
||||
window_flags_enabled false
|
||||
window_noncolor_mode true
|
||||
window_custom_color_enabled true
|
||||
window_custom_color_palette {100.000000000000:0,100,0},{101.000000000000:100,100,177},{102.000000000000:150,150,0}
|
||||
window_logical_filtered true
|
||||
window_physical_filtered false
|
||||
window_comm_fromto true
|
||||
window_comm_tagsize true
|
||||
window_comm_typeval true
|
||||
window_units Microseconds
|
||||
window_maximum_y 1000.0
|
||||
window_minimum_y 1.0
|
||||
window_compute_y_max true
|
||||
window_level thread
|
||||
window_scale_relative 1.000000000000
|
||||
window_end_time_relative 1.000000000000
|
||||
window_object appl { 1, { All } }
|
||||
window_begin_time_relative 0.000000000000
|
||||
window_open true
|
||||
window_drawmode draw_randnotzero
|
||||
window_drawmode_rows draw_randnotzero
|
||||
window_pixel_size 1
|
||||
window_labels_to_draw 1
|
||||
window_selected_functions { 14, { {cpu, Active Thd}, {appl, Adding}, {task, Adding}, {thread, Last Evt Val}, {node, Adding}, {system, Adding}, {workload, Adding}, {from_obj, All}, {to_obj, All}, {tag_msg, All}, {size_msg, All}, {bw_msg, All}, {evt_type, =}, {evt_value, All} } }
|
||||
window_compose_functions { 9, { {compose_cpu, As Is}, {compose_appl, As Is}, {compose_task, As Is}, {compose_thread, As Is}, {compose_node, As Is}, {compose_system, As Is}, {compose_workload, As Is}, {topcompose1, As Is}, {topcompose2, As Is} } }
|
||||
window_filter_module evt_type 1 40
|
||||
window_filter_module evt_type_label 1 "Thread: Nanos6 idle state"
|
||||
|
@ -9,8 +9,8 @@ ConfigFile.NumWindows: 1
|
||||
window_name Thread: Nanos6 task MPI rank of the RUNNING thread
|
||||
window_type single
|
||||
window_id 1
|
||||
window_position_x 0
|
||||
window_position_y 0
|
||||
window_position_x 100
|
||||
window_position_y 100
|
||||
window_width 600
|
||||
window_height 150
|
||||
window_comm_lines_enabled false
|
||||
|
@ -9,15 +9,15 @@ ConfigFile.NumWindows: 1
|
||||
window_name Thread: Nanos6 subsystem of the ACTIVE thread
|
||||
window_type single
|
||||
window_id 1
|
||||
window_position_x 0
|
||||
window_position_y 0
|
||||
window_position_x 100
|
||||
window_position_y 100
|
||||
window_width 600
|
||||
window_height 150
|
||||
window_comm_lines_enabled false
|
||||
window_flags_enabled false
|
||||
window_noncolor_mode true
|
||||
window_custom_color_enabled true
|
||||
window_custom_color_palette {1.000000000000:0,70,0},{2.000000000000:99,131,0},{3.000000000000:53,121,221},{4.000000000000:223,108,0},{5.000000000000:75,127,82},{6.000000000000:242,110,162},{7.000000000000:255,190,0},{8.000000000000:153,114,0},{9.000000000000:156,12,231},{10.000000000000:177,25,229},{11.000000000000:255,72,50},{14.000000000000:0,171,255},{15.000000000000:124,213,228},{16.000000000000:242,239,141},{17.000000000000:80,80,80},{18.000000000000:94,0,0},{19.000000000000:128,165,214},{21.000000000000:222,101,128},{22.000000000000:110,148,255}
|
||||
window_custom_color_palette {1.000000000000:0,70,0},{3.000000000000:99,131,0},{4.000000000000:53,121,221},{5.000000000000:223,108,0},{6.000000000000:75,127,82},{7.000000000000:242,110,162},{8.000000000000:255,190,0},{9.000000000000:153,114,0},{10.000000000000:156,12,231},{11.000000000000:177,25,229},{12.000000000000:255,72,50},{15.000000000000:0,171,255},{16.000000000000:124,213,228},{17.000000000000:242,239,141},{18.000000000000:80,80,80},{19.000000000000:94,0,0},{20.000000000000:128,165,214},{22.000000000000:222,101,128},{23.000000000000:110,148,255}
|
||||
window_logical_filtered true
|
||||
window_physical_filtered false
|
||||
window_comm_fromto true
|
||||
|
@ -9,8 +9,8 @@ ConfigFile.NumWindows: 1
|
||||
window_name Thread: Nanos6 task ID of the RUNNING thread
|
||||
window_type single
|
||||
window_id 1
|
||||
window_position_x 0
|
||||
window_position_y 0
|
||||
window_position_x 100
|
||||
window_position_y 100
|
||||
window_width 600
|
||||
window_height 150
|
||||
window_comm_lines_enabled false
|
||||
|
@ -9,8 +9,8 @@ ConfigFile.NumWindows: 1
|
||||
window_name Thread: Nanos6 task type of the RUNNING thread
|
||||
window_type single
|
||||
window_id 1
|
||||
window_position_x 0
|
||||
window_position_y 0
|
||||
window_position_x 100
|
||||
window_position_y 100
|
||||
window_width 600
|
||||
window_height 150
|
||||
window_comm_lines_enabled false
|
||||
|
@ -9,8 +9,8 @@ ConfigFile.NumWindows: 1
|
||||
window_name Thread: Nanos6 thread type
|
||||
window_type single
|
||||
window_id 1
|
||||
window_position_x 0
|
||||
window_position_y 0
|
||||
window_position_x 100
|
||||
window_position_y 100
|
||||
window_width 600
|
||||
window_height 150
|
||||
window_comm_lines_enabled false
|
||||
|
@ -4,13 +4,13 @@ ConfigFile.NumWindows: 1
|
||||
|
||||
|
||||
################################################################################
|
||||
< NEW DISPLAYING WINDOW Thread: NODES subsystem of the RUNNING thread >
|
||||
< NEW DISPLAYING WINDOW Thread: NODES subsystem of the ACTIVE thread >
|
||||
################################################################################
|
||||
window_name Thread: NODES subsystem of the RUNNING thread
|
||||
window_name Thread: NODES subsystem of the ACTIVE thread
|
||||
window_type single
|
||||
window_id 1
|
||||
window_position_x 0
|
||||
window_position_y 0
|
||||
window_position_x 100
|
||||
window_position_y 100
|
||||
window_width 600
|
||||
window_height 150
|
||||
window_comm_lines_enabled true
|
||||
@ -38,5 +38,5 @@ window_labels_to_draw 1
|
||||
window_selected_functions { 14, { {cpu, Active Thd}, {appl, Adding}, {task, Adding}, {thread, Last Evt Val}, {node, Adding}, {system, Adding}, {workload, Adding}, {from_obj, All}, {to_obj, All}, {tag_msg, All}, {size_msg, All}, {bw_msg, All}, {evt_type, =}, {evt_value, All} } }
|
||||
window_compose_functions { 9, { {compose_cpu, As Is}, {compose_appl, As Is}, {compose_task, As Is}, {compose_thread, As Is}, {compose_node, As Is}, {compose_system, As Is}, {compose_workload, As Is}, {topcompose1, As Is}, {topcompose2, As Is} } }
|
||||
window_filter_module evt_type 1 30
|
||||
window_filter_module evt_type_label 1 "Thread: NODES subsystem of the RUNNING thread"
|
||||
window_filter_module evt_type_label 1 "Thread: NODES subsystem of the ACTIVE thread"
|
||||
|
||||
|
42
cfg/thread/nosv/body-id.cfg
Normal file
@ -0,0 +1,42 @@
|
||||
#ParaverCFG
|
||||
ConfigFile.Version: 3.4
|
||||
ConfigFile.NumWindows: 1
|
||||
|
||||
|
||||
################################################################################
|
||||
< NEW DISPLAYING WINDOW Thread: nOS-V task body ID of the RUNNING thread >
|
||||
################################################################################
|
||||
window_name Thread: nOS-V task body ID of the RUNNING thread
|
||||
window_type single
|
||||
window_id 1
|
||||
window_position_x 100
|
||||
window_position_y 100
|
||||
window_width 600
|
||||
window_height 150
|
||||
window_comm_lines_enabled true
|
||||
window_flags_enabled false
|
||||
window_noncolor_mode true
|
||||
window_color_mode window_in_null_gradient_mode
|
||||
window_logical_filtered true
|
||||
window_physical_filtered false
|
||||
window_comm_fromto true
|
||||
window_comm_tagsize true
|
||||
window_comm_typeval true
|
||||
window_units Microseconds
|
||||
window_maximum_y 1000.0
|
||||
window_minimum_y 1.0
|
||||
window_compute_y_max true
|
||||
window_level thread
|
||||
window_scale_relative 1.000000000000
|
||||
window_end_time_relative 1.000000000000
|
||||
window_object appl { 1, { All } }
|
||||
window_begin_time_relative 0.000000000000
|
||||
window_open true
|
||||
window_drawmode draw_randnotzero
|
||||
window_drawmode_rows draw_randnotzero
|
||||
window_pixel_size 1
|
||||
window_labels_to_draw 1
|
||||
window_selected_functions { 14, { {cpu, Active Thd}, {appl, Adding}, {task, Adding}, {thread, Last Evt Val}, {node, Adding}, {system, Adding}, {workload, Adding}, {from_obj, All}, {to_obj, All}, {tag_msg, All}, {size_msg, All}, {bw_msg, All}, {evt_type, =}, {evt_value, All} } }
|
||||
window_compose_functions { 9, { {compose_cpu, As Is}, {compose_appl, As Is}, {compose_task, As Is}, {compose_thread, As Is}, {compose_node, As Is}, {compose_system, As Is}, {compose_workload, As Is}, {topcompose1, As Is}, {topcompose2, As Is} } }
|
||||
window_filter_module evt_type 1 15
|
||||
window_filter_module evt_type_label 1 "Thread: nOS-V task body ID of the RUNNING thread"
|
@ -9,15 +9,15 @@ ConfigFile.NumWindows: 1
|
||||
window_name Thread: nOS-V subsystem of the ACTIVE thread
|
||||
window_type single
|
||||
window_id 1
|
||||
window_position_x 0
|
||||
window_position_y 0
|
||||
window_position_x 100
|
||||
window_position_y 100
|
||||
window_width 600
|
||||
window_height 150
|
||||
window_comm_lines_enabled true
|
||||
window_flags_enabled false
|
||||
window_noncolor_mode true
|
||||
window_custom_color_enabled true
|
||||
window_custom_color_palette {6.000000000000:94,0,0},{7.000000000000:153,114,0},{9.000000000000:124,213,228},{10.000000000000:242,239,141},{11.000000000000:0,70,0}
|
||||
window_custom_color_palette {6.000000000000:94,0,0},{7.000000000000:153,114,0},{9.000000000000:124,213,228},{10.000000000000:242,239,141},{11.000000000000:0,70,0},{19.000000000000:195,96,151},{20.000000000000:255,162,255},{21.000000000000:203,255,3},{22.000000000000:7,255,12},{23.000000000000:21,165,118},{24.000000000000:255,103,0},{25.000000000000:200,30,5},{26.000000000000:255,10,200},{27.000000000000:98,133,80},{28.000000000000:0,99,162},{29.000000000000:110,77,252}
|
||||
window_logical_filtered true
|
||||
window_physical_filtered false
|
||||
window_comm_fromto true
|
||||
|
@ -9,8 +9,8 @@ ConfigFile.NumWindows: 1
|
||||
window_name Thread: nOS-V task AppID of the RUNNING thread
|
||||
window_type single
|
||||
window_id 1
|
||||
window_position_x 0
|
||||
window_position_y 0
|
||||
window_position_x 100
|
||||
window_position_y 100
|
||||
window_width 600
|
||||
window_height 150
|
||||
window_comm_lines_enabled true
|
||||
|
@ -9,8 +9,8 @@ ConfigFile.NumWindows: 1
|
||||
window_name Thread: nOS-V TaskID of the RUNNING thread
|
||||
window_type single
|
||||
window_id 1
|
||||
window_position_x 0
|
||||
window_position_y 0
|
||||
window_position_x 100
|
||||
window_position_y 100
|
||||
window_width 600
|
||||
window_height 150
|
||||
window_comm_lines_enabled true
|
||||
|
@ -9,8 +9,8 @@ ConfigFile.NumWindows: 1
|
||||
window_name Thread: nOS-V task rank+1 of the RUNNING thread
|
||||
window_type single
|
||||
window_id 1
|
||||
window_position_x 0
|
||||
window_position_y 0
|
||||
window_position_x 100
|
||||
window_position_y 100
|
||||
window_width 600
|
||||
window_height 150
|
||||
window_comm_lines_enabled true
|
||||
|
@ -9,8 +9,8 @@ ConfigFile.NumWindows: 1
|
||||
window_name Thread: nOS-V task type of the RUNNING thread
|
||||
window_type single
|
||||
window_id 1
|
||||
window_position_x 0
|
||||
window_position_y 0
|
||||
window_position_x 100
|
||||
window_position_y 100
|
||||
window_width 600
|
||||
window_height 150
|
||||
window_comm_lines_enabled true
|
||||
|
41
cfg/thread/openmp/label.cfg
Normal file
@ -0,0 +1,41 @@
|
||||
#ParaverCFG
|
||||
ConfigFile.Version: 3.4
|
||||
ConfigFile.NumWindows: 1
|
||||
|
||||
|
||||
################################################################################
|
||||
< NEW DISPLAYING WINDOW Thread: OpenMP label of the ACTIVE thread >
|
||||
################################################################################
|
||||
window_name Thread: OpenMP label of the ACTIVE thread
|
||||
window_type single
|
||||
window_id 1
|
||||
window_position_x 100
|
||||
window_position_y 100
|
||||
window_width 600
|
||||
window_height 150
|
||||
window_comm_lines_enabled true
|
||||
window_flags_enabled false
|
||||
window_noncolor_mode true
|
||||
window_logical_filtered true
|
||||
window_physical_filtered false
|
||||
window_comm_fromto true
|
||||
window_comm_tagsize true
|
||||
window_comm_typeval true
|
||||
window_units Microseconds
|
||||
window_maximum_y 1000.0
|
||||
window_minimum_y 1.0
|
||||
window_compute_y_max true
|
||||
window_level thread
|
||||
window_scale_relative 1.000000000000
|
||||
window_end_time_relative 1.000000000000
|
||||
window_object appl { 1, { All } }
|
||||
window_begin_time_relative 0.000000000000
|
||||
window_open true
|
||||
window_drawmode draw_randnotzero
|
||||
window_drawmode_rows draw_randnotzero
|
||||
window_pixel_size 1
|
||||
window_labels_to_draw 1
|
||||
window_selected_functions { 14, { {cpu, Active Thd}, {appl, Adding}, {task, Adding}, {thread, Last Evt Val}, {node, Adding}, {system, Adding}, {workload, Adding}, {from_obj, All}, {to_obj, All}, {tag_msg, All}, {size_msg, All}, {bw_msg, All}, {evt_type, =}, {evt_value, All} } }
|
||||
window_compose_functions { 9, { {compose_cpu, As Is}, {compose_appl, As Is}, {compose_task, As Is}, {compose_thread, As Is}, {compose_node, As Is}, {compose_system, As Is}, {compose_workload, As Is}, {topcompose1, As Is}, {topcompose2, As Is} } }
|
||||
window_filter_module evt_type 1 51
|
||||
window_filter_module evt_type_label 1 "Thread: OpenMP label of the ACTIVE thread"
|
44
cfg/thread/openmp/subsystem.cfg
Normal file
@ -0,0 +1,44 @@
|
||||
#ParaverCFG
|
||||
ConfigFile.Version: 3.4
|
||||
ConfigFile.NumWindows: 1
|
||||
|
||||
|
||||
################################################################################
|
||||
< NEW DISPLAYING WINDOW Thread: OpenMP subsystem of the ACTIVE thread >
|
||||
################################################################################
|
||||
window_name Thread: OpenMP subsystem of the ACTIVE thread
|
||||
window_type single
|
||||
window_id 1
|
||||
window_position_x 100
|
||||
window_position_y 100
|
||||
window_width 600
|
||||
window_height 150
|
||||
window_comm_lines_enabled true
|
||||
window_flags_enabled false
|
||||
window_noncolor_mode true
|
||||
window_custom_color_enabled true
|
||||
window_custom_color_palette {1.000000000000:255,177,245},{2.000000000000:255,86,239},{3.000000000000:122,44,22},{5.000000000000:239,188,0},{6.000000000000:160,89,0},{8.000000000000:0,255,73},{10.000000000000:86,209,43},{11.000000000000:203,208,93},{12.000000000000:0,176,169},{13.000000000000:190,82,201},{14.000000000000:124,114,183},{15.000000000000:157,231,255},{16.000000000000:199,194,0},{17.000000000000:96,0,200},{18.000000000000:255,255,124},{19.000000000000:35,152,0},{21.000000000000:255,251,174},{22.000000000000:232,0,0},{23.000000000000:210,66,40},{26.000000000000:101,101,99},{27.000000000000:200,0,255},{28.000000000000:0,203,249},{30.000000000000:255,219,0},{31.000000000000:48,103,107},{34.000000000000:194,105,126}
|
||||
window_logical_filtered true
|
||||
window_physical_filtered false
|
||||
window_comm_fromto true
|
||||
window_comm_tagsize true
|
||||
window_comm_typeval true
|
||||
window_units Microseconds
|
||||
window_maximum_y 1000.0
|
||||
window_minimum_y 1.0
|
||||
window_compute_y_max true
|
||||
window_level thread
|
||||
window_scale_relative 1.000000000000
|
||||
window_end_time_relative 1.000000000000
|
||||
window_object appl { 1, { All } }
|
||||
window_begin_time_relative 0.000000000000
|
||||
window_open true
|
||||
window_drawmode draw_randnotzero
|
||||
window_drawmode_rows draw_randnotzero
|
||||
window_pixel_size 1
|
||||
window_labels_to_draw 1
|
||||
window_selected_functions { 14, { {cpu, Active Thd}, {appl, Adding}, {task, Adding}, {thread, Last Evt Val}, {node, Adding}, {system, Adding}, {workload, Adding}, {from_obj, All}, {to_obj, All}, {tag_msg, All}, {size_msg, All}, {bw_msg, All}, {evt_type, =}, {evt_value, All} } }
|
||||
window_compose_functions { 9, { {compose_cpu, As Is}, {compose_appl, As Is}, {compose_task, As Is}, {compose_thread, As Is}, {compose_node, As Is}, {compose_system, As Is}, {compose_workload, As Is}, {topcompose1, As Is}, {topcompose2, As Is} } }
|
||||
window_filter_module evt_type 1 50
|
||||
window_filter_module evt_type_label 1 "Thread: OpenMP subsystem of the ACTIVE thread"
|
||||
|
41
cfg/thread/openmp/task-id.cfg
Normal file
@ -0,0 +1,41 @@
|
||||
#ParaverCFG
|
||||
ConfigFile.Version: 3.4
|
||||
ConfigFile.NumWindows: 1
|
||||
|
||||
|
||||
################################################################################
|
||||
< NEW DISPLAYING WINDOW Thread: OpenMP task id of the ACTIVE thread >
|
||||
################################################################################
|
||||
window_name Thread: OpenMP task id of the ACTIVE thread
|
||||
window_type single
|
||||
window_id 1
|
||||
window_position_x 100
|
||||
window_position_y 100
|
||||
window_width 600
|
||||
window_height 150
|
||||
window_comm_lines_enabled true
|
||||
window_flags_enabled false
|
||||
window_noncolor_mode true
|
||||
window_logical_filtered true
|
||||
window_physical_filtered false
|
||||
window_comm_fromto true
|
||||
window_comm_tagsize true
|
||||
window_comm_typeval true
|
||||
window_units Microseconds
|
||||
window_maximum_y 1000.0
|
||||
window_minimum_y 1.0
|
||||
window_compute_y_max true
|
||||
window_level thread
|
||||
window_scale_relative 1.000000000000
|
||||
window_end_time_relative 1.000000000000
|
||||
window_object appl { 1, { All } }
|
||||
window_begin_time_relative 0.000000000000
|
||||
window_open true
|
||||
window_drawmode draw_randnotzero
|
||||
window_drawmode_rows draw_randnotzero
|
||||
window_pixel_size 1
|
||||
window_labels_to_draw 1
|
||||
window_selected_functions { 14, { {cpu, Active Thd}, {appl, Adding}, {task, Adding}, {thread, Last Evt Val}, {node, Adding}, {system, Adding}, {workload, Adding}, {from_obj, All}, {to_obj, All}, {tag_msg, All}, {size_msg, All}, {bw_msg, All}, {evt_type, =}, {evt_value, All} } }
|
||||
window_compose_functions { 9, { {compose_cpu, As Is}, {compose_appl, As Is}, {compose_task, As Is}, {compose_thread, As Is}, {compose_node, As Is}, {compose_system, As Is}, {compose_workload, As Is}, {topcompose1, As Is}, {topcompose2, As Is} } }
|
||||
window_filter_module evt_type 1 52
|
||||
window_filter_module evt_type_label 1 "Thread: OpenMP task id of the ACTIVE thread"
|
@ -9,8 +9,8 @@ ConfigFile.NumWindows: 1
|
||||
window_name Thread: CPU affinity of the CURRENT thread
|
||||
window_type single
|
||||
window_id 1
|
||||
window_position_x 0
|
||||
window_position_y 0
|
||||
window_position_x 100
|
||||
window_position_y 100
|
||||
window_width 600
|
||||
window_height 150
|
||||
window_comm_lines_enabled true
|
||||
|
@ -9,8 +9,8 @@ ConfigFile.NumWindows: 1
|
||||
window_name Thread: Flushing state of the CURRENT thread
|
||||
window_type single
|
||||
window_id 1
|
||||
window_position_x 0
|
||||
window_position_y 0
|
||||
window_position_x 100
|
||||
window_position_y 100
|
||||
window_width 600
|
||||
window_height 150
|
||||
window_comm_lines_enabled true
|
||||
|
41
cfg/thread/ovni/mark.cfg
Normal file
@ -0,0 +1,41 @@
|
||||
#ParaverCFG
|
||||
ConfigFile.Version: 3.4
|
||||
ConfigFile.NumWindows: 1
|
||||
|
||||
|
||||
################################################################################
|
||||
< NEW DISPLAYING WINDOW Thread: Mark value of the ACTIVE thread >
|
||||
################################################################################
|
||||
window_name Thread: Mark value of the ACTIVE thread
|
||||
window_type single
|
||||
window_id 1
|
||||
window_position_x 100
|
||||
window_position_y 100
|
||||
window_width 600
|
||||
window_height 150
|
||||
window_comm_lines_enabled true
|
||||
window_flags_enabled false
|
||||
window_noncolor_mode true
|
||||
window_logical_filtered true
|
||||
window_physical_filtered false
|
||||
window_comm_fromto true
|
||||
window_comm_tagsize true
|
||||
window_comm_typeval true
|
||||
window_units Microseconds
|
||||
window_maximum_y 1000.0
|
||||
window_minimum_y 1.0
|
||||
window_compute_y_max true
|
||||
window_level thread
|
||||
window_scale_relative 1.000000000000
|
||||
window_end_time_relative 1.000000000000
|
||||
window_object appl { 1, { All } }
|
||||
window_begin_time_relative 0.000000000000
|
||||
window_open true
|
||||
window_drawmode draw_randnotzero
|
||||
window_drawmode_rows draw_randnotzero
|
||||
window_pixel_size 1
|
||||
window_labels_to_draw 1
|
||||
window_selected_functions { 14, { {cpu, Active Thd}, {appl, Adding}, {task, Adding}, {thread, Last Evt Val}, {node, Adding}, {system, Adding}, {workload, Adding}, {from_obj, All}, {to_obj, All}, {tag_msg, All}, {size_msg, All}, {bw_msg, All}, {evt_type, =}, {evt_value, All} } }
|
||||
window_compose_functions { 9, { {compose_cpu, As Is}, {compose_appl, As Is}, {compose_task, As Is}, {compose_thread, As Is}, {compose_node, As Is}, {compose_system, As Is}, {compose_workload, As Is}, {topcompose1, As Is}, {topcompose2, As Is} } }
|
||||
window_filter_module evt_type 1 100
|
||||
window_filter_module evt_type_label 1 "Thread: Mark value of the ACTIVE thread"
|
@ -9,8 +9,8 @@ ConfigFile.NumWindows: 1
|
||||
window_name CPU: PID of the RUNNING thread
|
||||
window_type single
|
||||
window_id 1
|
||||
window_position_x 0
|
||||
window_position_y 0
|
||||
window_position_x 100
|
||||
window_position_y 100
|
||||
window_width 600
|
||||
window_height 150
|
||||
window_comm_lines_enabled true
|
||||
|
@ -9,8 +9,8 @@ ConfigFile.NumWindows: 1
|
||||
window_name Thread: State of the CURRENT thread
|
||||
window_type single
|
||||
window_id 1
|
||||
window_position_x 0
|
||||
window_position_y 0
|
||||
window_position_x 100
|
||||
window_position_y 100
|
||||
window_width 600
|
||||
window_height 150
|
||||
window_comm_lines_enabled true
|
||||
|
@ -4,13 +4,13 @@ ConfigFile.NumWindows: 1
|
||||
|
||||
|
||||
################################################################################
|
||||
< NEW DISPLAYING WINDOW Thread: TID of the RUNNING thread >
|
||||
< NEW DISPLAYING WINDOW Thread: TID of the ACTIVE thread >
|
||||
################################################################################
|
||||
window_name Thread: TID of the RUNNING thread
|
||||
window_name Thread: TID of the ACTIVE thread
|
||||
window_type single
|
||||
window_id 1
|
||||
window_position_x 0
|
||||
window_position_y 0
|
||||
window_position_x 100
|
||||
window_position_y 100
|
||||
window_width 600
|
||||
window_height 150
|
||||
window_comm_lines_enabled true
|
||||
@ -38,4 +38,4 @@ window_labels_to_draw 1
|
||||
window_selected_functions { 14, { {cpu, Active Thd}, {appl, Adding}, {task, Adding}, {thread, Last Evt Val}, {node, Adding}, {system, Adding}, {workload, Adding}, {from_obj, All}, {to_obj, All}, {tag_msg, All}, {size_msg, All}, {bw_msg, All}, {evt_type, =}, {evt_value, All} } }
|
||||
window_compose_functions { 9, { {compose_cpu, As Is}, {compose_appl, As Is}, {compose_task, As Is}, {compose_thread, As Is}, {compose_node, As Is}, {compose_system, As Is}, {compose_workload, As Is}, {topcompose1, As Is}, {topcompose2, As Is} } }
|
||||
window_filter_module evt_type 1 2
|
||||
window_filter_module evt_type_label 1 "Thread: TID of the RUNNING thread"
|
||||
window_filter_module evt_type_label 1 "Thread: TID of the ACTIVE thread"
|
||||
|
@ -4,13 +4,13 @@ ConfigFile.NumWindows: 1
|
||||
|
||||
|
||||
################################################################################
|
||||
< NEW DISPLAYING WINDOW Thread: TAMPI mode of the RUNNING thread >
|
||||
< NEW DISPLAYING WINDOW Thread: TAMPI subsystem of the ACTIVE thread >
|
||||
################################################################################
|
||||
window_name Thread: TAMPI mode of the RUNNING thread
|
||||
window_name Thread: TAMPI subsystem of the ACTIVE thread
|
||||
window_type single
|
||||
window_id 1
|
||||
window_position_x 0
|
||||
window_position_y 0
|
||||
window_position_x 100
|
||||
window_position_y 100
|
||||
window_width 600
|
||||
window_height 150
|
||||
window_comm_lines_enabled true
|
||||
@ -38,5 +38,5 @@ window_labels_to_draw 1
|
||||
window_selected_functions { 14, { {cpu, Active Thd}, {appl, Adding}, {task, Adding}, {thread, Last Evt Val}, {node, Adding}, {system, Adding}, {workload, Adding}, {from_obj, All}, {to_obj, All}, {tag_msg, All}, {size_msg, All}, {bw_msg, All}, {evt_type, =}, {evt_value, All} } }
|
||||
window_compose_functions { 9, { {compose_cpu, As Is}, {compose_appl, As Is}, {compose_task, As Is}, {compose_thread, As Is}, {compose_node, As Is}, {compose_system, As Is}, {compose_workload, As Is}, {topcompose1, As Is}, {topcompose2, As Is} } }
|
||||
window_filter_module evt_type 1 20
|
||||
window_filter_module evt_type_label 1 "Thread: TAMPI mode of the RUNNING thread"
|
||||
window_filter_module evt_type_label 1 "Thread: TAMPI subsystem of the ACTIVE thread"
|
||||
|
7
cmake/CheckOmpSs2Compiler.cmake
Normal file
@ -0,0 +1,7 @@
|
||||
# Copyright (c) 2022-2023 Barcelona Supercomputing Center (BSC)
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
include(CheckCCompilerFlag)
|
||||
|
||||
set(CMAKE_REQUIRED_LINK_OPTIONS "-fompss-2")
|
||||
check_c_compiler_flag("-fompss-2" OMPSS2_COMPILER_FOUND)
|
20
cmake/CheckPerfParanoid.cmake
Normal file
@ -0,0 +1,20 @@
|
||||
# Copyright (c) 2024 Barcelona Supercomputing Center (BSC)
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
if(EXISTS "/proc/sys/kernel/perf_event_paranoid")
|
||||
file(READ "/proc/sys/kernel/perf_event_paranoid" paranoid_raw)
|
||||
|
||||
string(REPLACE "\n" "" paranoid_value "${paranoid_raw}")
|
||||
message(STATUS "Value of /proc/sys/kernel/perf_event_paranoid is ${paranoid_value}")
|
||||
|
||||
if(paranoid_value LESS_EQUAL 1)
|
||||
message(STATUS "Value of perf_event_paranoid suitable for Kernel tests")
|
||||
set(PERF_PARANOID_KERNEL ON)
|
||||
else()
|
||||
message(STATUS "Value of perf_event_paranoid NOT suitable for Kernel tests")
|
||||
set(PERF_PARANOID_KERNEL OFF)
|
||||
endif()
|
||||
else()
|
||||
message(STATUS "Missing /proc/sys/kernel/perf_event_paranoid")
|
||||
set(PERF_PARANOID_KERNEL OFF)
|
||||
endif()
|
@ -1,3 +1,6 @@
|
||||
# Copyright (c) 2022-2023 Barcelona Supercomputing Center (BSC)
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
include(GNUInstallDirs)
|
||||
|
||||
find_library(NANOS6_LIBRARY NAMES nanos6)
|
||||
|
@ -1,3 +1,6 @@
|
||||
# Copyright (c) 2022-2023 Barcelona Supercomputing Center (BSC)
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
include(GNUInstallDirs)
|
||||
|
||||
if(DEFINED ENV{NODES_HOME})
|
||||
@ -6,9 +9,9 @@ else()
|
||||
message(STATUS "NODES_HOME not set, refusing to search")
|
||||
endif()
|
||||
|
||||
find_library(NODES_LIBRARY NAMES nanos6 PATHS "${NODES_HOME}/lib" NO_DEFAULT_PATH)
|
||||
find_file(NODES_WRAPPER NAMES nanos6-main-wrapper.o PATHS "${NODES_HOME}/lib" NO_DEFAULT_PATH)
|
||||
find_path(NODES_INCLUDE_DIR nanos6.h PATHS "${NODES_HOME}/include" NO_DEFAULT_PATH)
|
||||
find_library(NODES_LIBRARY NAMES nodes PATHS "${NODES_HOME}/lib" NO_DEFAULT_PATH)
|
||||
find_file(NODES_WRAPPER NAMES nodes-main-wrapper.o PATHS "${NODES_HOME}/lib" NO_DEFAULT_PATH)
|
||||
find_path(NODES_INCLUDE_DIR nodes.h PATHS "${NODES_HOME}/include" NO_DEFAULT_PATH)
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
|
||||
|
19
cmake/FindNosv.cmake
Normal file
@ -0,0 +1,19 @@
|
||||
# Copyright (c) 2023 Barcelona Supercomputing Center (BSC)
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
find_package(PkgConfig)
|
||||
|
||||
if(NOT PKG_CONFIG_FOUND)
|
||||
message(STATUS "pkg-config not found, required to locate nOSV-V")
|
||||
return()
|
||||
endif()
|
||||
|
||||
# Use PKG_CONFIG_LIBDIR=/path/to/nosv/install/lib/pkgconfig to use a custom
|
||||
# installation.
|
||||
pkg_search_module(NOSV IMPORTED_TARGET nos-v)
|
||||
|
||||
if(NOT NOSV_FOUND)
|
||||
message(STATUS "nOS-V not found")
|
||||
else()
|
||||
message(STATUS "Found nOS-V ${NOSV_VERSION} at ${NOSV_LINK_LIBRARIES}")
|
||||
endif()
|
1
doc/CHANGELOG.md
Symbolic link
@ -0,0 +1 @@
|
||||
../CHANGELOG.md
|
@ -1,31 +0,0 @@
|
||||
# Overview
|
||||
|
||||
The objective of the ovni project is to provide insight into what
|
||||
happened at execution of a program.
|
||||
|
||||

|
||||
|
||||
The key pieces of software involved are instrumented so they emit events
|
||||
during the execution which allow the reconstruction of the execution
|
||||
later on.
|
||||
|
||||
During the execution phase, the information gathered in the events is
|
||||
kept very short and simple, so the overhead is kept at minimum to avoid
|
||||
disturbing the execution process. Here is an example of a single event
|
||||
emitted during the execution phase, informing the current thread to
|
||||
finish the execution:
|
||||
|
||||
00 4f 48 65 52 c0 27 b4 d3 ec 01 00
|
||||
|
||||
During the emulation phase, the events are read and processed in the
|
||||
emulator, reconstructing the execution. State transitions are recorded
|
||||
in a Paraver trace. Here is an example of the same thread ceasing the
|
||||
execution:
|
||||
|
||||
2:0:1:1:1:50105669:1:0
|
||||
|
||||
Finally, loading the trace in the Paraver program, we can generate a
|
||||
timeline visualization of the state change. Here is the example for the
|
||||
same state transition of the thread stopping the execution:
|
||||
|
||||

|
69
doc/dev/channels.md
Normal file
@ -0,0 +1,69 @@
|
||||
# Channels
|
||||
|
||||
As the emulation progresses, information is written in the PRV trace to record
|
||||
the new states. The emulator has specific mechanism to handle the output of new
|
||||
states in the PRV trace via channels. A channel stores a value that represents
|
||||
an state at a given point in time and typically corresponds to the value that
|
||||
will be observed in the Paraver timeline.
|
||||
|
||||
!!! Note
|
||||
|
||||
The emulator receives input *events* and performs *state*
|
||||
transitions which are written into the Paraver trace.
|
||||
|
||||
Channels become dirty when a new value is written to them. No other
|
||||
modifications are allowed by default until the channel is flushed by calling
|
||||
`chan_flush()`. This behavior can be controlled with the `CHAN_DIRTY_WRITE`
|
||||
property. By default, a duplicated value cannot be written into a channel,
|
||||
unless the `CHAN_ALLOW_DUP` or `CHAN_IGNORE_DUP` properties are set.
|
||||
|
||||
A channel has an unique name used to identify the channel when debugging and
|
||||
also to create derived channels. The name can be set following the printf style
|
||||
when calling `chan_init()`.
|
||||
|
||||
## Types
|
||||
|
||||
There are two types of channels, **single** and **stack**. The type single only
|
||||
stores one value which is updated by `chan_set()`. The stack type allows the
|
||||
channel to record multiple values in a stack by using `chan_push()` and
|
||||
`chan_pop()`. The value of the channels is the topmost in the stack (the last
|
||||
pushed).
|
||||
|
||||
Notice that the `chan_pop()` function uses the same value being pop()'ed as
|
||||
argument. The function checks that the stack contains the expected value,
|
||||
forcing the emulator to always receive a matching pair of push and pop values.
|
||||
|
||||
After the channel initialization, the value of the channels is null. A channel
|
||||
with an empty stack also returns the value null when being read.
|
||||
|
||||
## Data value
|
||||
|
||||
The data type of a channel is handled by the `value` structure. This structure
|
||||
can store a null value, a 64 bit integer or a double. Any data type can be
|
||||
written to a channel and multiple data types can be stored in the stack.
|
||||
|
||||
!!! Note
|
||||
|
||||
For now only null and int64 types are allowed when the channel is connected
|
||||
to a Paraver trace.
|
||||
|
||||
## Properties
|
||||
|
||||
Channels have properties that can be set by `chan_prop_set()`. Setting the
|
||||
`CHAN_DIRTY_WRITE` property to true allows a channel to modify its value while
|
||||
being in the dirty state.
|
||||
|
||||
## Duplicate values
|
||||
|
||||
By default, writing the same value to a channel twice is forbidden and will
|
||||
result in a error. The property `CHAN_ALLOW_DUP` allows writing the same value
|
||||
to the channel. However, the property `CHAN_IGNORE_DUP` will ignore the attempt
|
||||
to write the duplicated value with no error.
|
||||
|
||||
## Callback
|
||||
|
||||
A unique function can be set to each channel which will be called once a channel
|
||||
becomes dirty with `chan_set_dirty_cb()`. This callback will be called before
|
||||
`chan_set()`, `chan_push()` or `chan_pop()` returns. The [patch
|
||||
bay](patchbay.md) uses this callback to detect when a channel is modified an run
|
||||
other callbacks.
|
101
doc/dev/events.md
Normal file
@ -0,0 +1,101 @@
|
||||
# Emulator events
|
||||
|
||||
The events processed by the emulator are described in each model.
|
||||
Unrecognized events will cause a panic and stop the emulator in most
|
||||
cases.
|
||||
|
||||
The events may have additional arguments in the payload, which are also
|
||||
described. To this end, a simple language was created to specify the
|
||||
format of each event in a concise declaration.
|
||||
|
||||
Additionally, a printf-like string is declared for each event, so they
|
||||
can be explained in plain English. The values of the arguments are also
|
||||
substituted in the description of the event following a extended printf
|
||||
format described below.
|
||||
|
||||
## Event format
|
||||
|
||||
The events are defined by a small language that defines the MCV of an event, if
|
||||
is a jumbo and the arguments in the payload (if any).
|
||||
|
||||
The grammar of this language is as follows in [ABNF][abnf].
|
||||
|
||||
[abnf]: https://en.wikipedia.org/wiki/Augmented_Backus%E2%80%93Naur_form
|
||||
|
||||
```ABNF
|
||||
event-definition = event-mcv event-type [ "(" argument-list ")" ]
|
||||
event-mcv = VCHAR VCHAR VCHAR
|
||||
event-type = [ '+' ]
|
||||
argument-list = argument-type " " argument-name [ ", " argument-list ]
|
||||
argument-name = 1*(CHAR / DIGIT)
|
||||
argument-type = type-signed | type-unsigned | type-string
|
||||
type-signed = "i8" | "i16" | "i32" | "i64"
|
||||
type-unsigned = "u8" | "u16" | "u32" | "u64"
|
||||
type-string = "str"
|
||||
```
|
||||
|
||||
The `event-type` defines the type of event. Using the symbol `+` defines
|
||||
the event as jumbo. Otherwise, if not given it is considered a normal
|
||||
event.
|
||||
|
||||
Here are some examples:
|
||||
|
||||
- `OHp`: A normal event with `OHp` MCV and no payload.
|
||||
|
||||
- `OAs(i32 cpu)`: A normal event with `OAs` MCV that has the cpu stored in
|
||||
the payload as a 32 bits signed integer.
|
||||
|
||||
- `OHC(i32 cpu, u64 tag)`: A normal event with `OHC` MCV that has two
|
||||
arguments in the payload: the cpu stored as a 32 bit signed integer,
|
||||
and a tag stored as a 64 bit unsigned integer.
|
||||
|
||||
- `VYc+(u32 typeid, str label)`: A jumbo event with `VTc` MCV that has in the
|
||||
jumbo payload a 32 bits unsigned integer for the typeid followed by the label
|
||||
null-terminated string of variable size.
|
||||
|
||||
## Event description
|
||||
|
||||
To describe the meaning of each event, a description follows the event
|
||||
declaration. This description accepts printf-like format specifiers that
|
||||
are replaced with the value of the argument they refer to.
|
||||
|
||||
The formats are specified as follows:
|
||||
|
||||
```ABNF
|
||||
format-specifier = "%" [ printf-format] "{" argument-name "}"
|
||||
argument-name = 1*(CHAR / DIGIT)
|
||||
```
|
||||
|
||||
Where the optional `printf-format` is any string accepted by the format
|
||||
specifier of `printf()`, as defined in the manual `printf(3)`. If the
|
||||
`printf-format` is not given, the default format for the argument type
|
||||
is used.
|
||||
|
||||
Here are some examples of event descriptions of the previous events:
|
||||
|
||||
```c
|
||||
{ "OHp", "pauses the execution" },
|
||||
{ "OAs(i32 cpu)", "switches it's own affinity to the CPU %{cpu}" },
|
||||
{ "OHC(i32 cpu, u64 tag)", "creates a new thread on CPU %{cpu} with tag %#llx{tag}" },
|
||||
{ "VYc+(u32 typeid, str label)", "creates task type %{typeid} with label \"%{label}\"" },
|
||||
```
|
||||
|
||||
Which would be printed with ovnidump like:
|
||||
|
||||
```nohighlight
|
||||
OHp pauses the execution
|
||||
OAs switches it's own affinity to the CPU 7
|
||||
OHC creates a new thread on CPU 3 with tag 0x7f9239c6b6c0
|
||||
VYc creates task type 4 with label "block computation"
|
||||
```
|
||||
|
||||
## Model version
|
||||
|
||||
When adding new events of changing the format of already existing
|
||||
events, the version of the model that defines the event must be changed
|
||||
accordingly to the rules of [Semantic Versions](https://semver.org).
|
||||
|
||||
In general, adding new events will cause a minor increase in the
|
||||
version, while changing events will cause a major increase. Notice that
|
||||
the emulator will reject a stream which contains events from a model
|
||||
which is not compatible with the current model version.
|
26
doc/dev/extend.md
Normal file
@ -0,0 +1,26 @@
|
||||
# Extend
|
||||
|
||||
The extend mechanism allows a structure to be extended by a model. It works by
|
||||
placing an array of pointers indexed by the model identifier (char) inside the
|
||||
structure. Most of the structures of the emulator have a `ext` member, allowing
|
||||
them to be extended.
|
||||
|
||||
Models are forbidden to access information from other models than their own.
|
||||
|
||||
The function `void extend_set(struct extend *ext, int id, void *ctx)` stores the
|
||||
ctx pointer inside the extend structure for the model with the given id.
|
||||
|
||||
Use `void *extend_get(struct extend *ext, int id)` to retrieve its value.
|
||||
|
||||
A helper macro `EXT(st, m)` directly attempts to find the member `ext` in the
|
||||
structure st, and return the pointer of the model `m`.
|
||||
|
||||
Here is an example where Nanos6 stores its own CPU information:
|
||||
|
||||
struct cpu *syscpu;
|
||||
struct nanos6_cpu *cpu;
|
||||
|
||||
extend_set(&syscpu->ext, '6', cpu);
|
||||
|
||||
cpu = extend_get(&syscpu->ext, '6');
|
||||
cpu = EXT(syscpu, '6'); /* same */
|
BIN
doc/dev/fig/bay.jpg
Normal file
After Width: | Height: | Size: 952 KiB |
618
doc/dev/fig/mux.svg
Normal file
@ -0,0 +1,618 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="193.14583mm"
|
||||
height="150.8125mm"
|
||||
viewBox="0 0 193.14583 150.8125"
|
||||
version="1.1"
|
||||
id="svg5"
|
||||
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
|
||||
sodipodi:docname="mux.svg"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<sodipodi:namedview
|
||||
id="namedview7"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#999999"
|
||||
borderopacity="1"
|
||||
inkscape:showpageshadow="0"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:document-units="mm"
|
||||
showgrid="true"
|
||||
inkscape:zoom="2.139236"
|
||||
inkscape:cx="348.72263"
|
||||
inkscape:cy="452.03054"
|
||||
inkscape:window-width="1914"
|
||||
inkscape:window-height="1025"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="24"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="layer1">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid132"
|
||||
spacingx="0.26458333"
|
||||
spacingy="0.26458333"
|
||||
empspacing="10"
|
||||
originx="-5.2916663"
|
||||
originy="-23.812499" />
|
||||
</sodipodi:namedview>
|
||||
<defs
|
||||
id="defs2">
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="marker1653"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto-start-reverse"
|
||||
inkscape:stockid="Arrow1L"
|
||||
markerWidth="8.75"
|
||||
markerHeight="5"
|
||||
viewBox="0 0 8.75 5"
|
||||
inkscape:isstock="true"
|
||||
inkscape:collect="always"
|
||||
preserveAspectRatio="xMidYMid">
|
||||
<path
|
||||
style="fill:context-stroke;fill-rule:evenodd;stroke:none"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 Z"
|
||||
id="path1651"
|
||||
transform="scale(-0.5)" />
|
||||
</marker>
|
||||
</defs>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-5.2916665,-23.8125)">
|
||||
<rect
|
||||
style="fill:none;stroke:none;stroke-width:0.407208;stroke-dasharray:0.814415, 0.407208"
|
||||
id="rect1117"
|
||||
width="193.14583"
|
||||
height="150.8125"
|
||||
x="5.2916665"
|
||||
y="23.8125"
|
||||
rx="1.4210855e-14"
|
||||
ry="7.3638071e-15" />
|
||||
<rect
|
||||
style="fill:#4d4d4d;stroke-width:0.4;stroke-dasharray:none"
|
||||
id="rect3087"
|
||||
width="68.791656"
|
||||
height="26.458332"
|
||||
x="127"
|
||||
y="126.99999"
|
||||
rx="1.4210855e-14"
|
||||
ry="7.1054274e-15" />
|
||||
<rect
|
||||
style="fill:#4d4d4d;stroke-width:0.4;stroke-dasharray:none"
|
||||
id="rect2797"
|
||||
width="68.791656"
|
||||
height="26.458332"
|
||||
x="127.00001"
|
||||
y="47.625"
|
||||
rx="1.4210855e-14"
|
||||
ry="7.1054274e-15" />
|
||||
<path
|
||||
style="fill:#cccccc;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 58.208333,26.458333 15.875,5.291667 v 42.333332 l -15.875,5.291667 z"
|
||||
id="path409"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#marker1653)"
|
||||
d="m 7.9374999,37.041666 41.0104161,10e-7 h 9.260417"
|
||||
id="path1649"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:2.82222px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#0000ff;stroke-width:0.264583"
|
||||
x="29.095898"
|
||||
y="35.174423"
|
||||
id="text2523"><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-size:2.82222px;text-align:center;text-anchor:middle;fill:#0000ff;stroke-width:0.264583"
|
||||
x="29.095898"
|
||||
y="35.174423"
|
||||
id="tspan2527">nanos6.thread0.subsystem</tspan></text>
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#marker1653)"
|
||||
d="m 41.010413,42.333333 h 7.9375 9.26042"
|
||||
id="path2695"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#marker1653)"
|
||||
d="m 41.010413,47.624999 h 7.9375 9.26042"
|
||||
id="path2701"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#marker1653)"
|
||||
d="m 41.010413,52.916666 h 7.9375 9.26042"
|
||||
id="path2705"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#marker1653)"
|
||||
d="m 41.010413,58.208333 h 7.9375 9.26042"
|
||||
id="path2715"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#marker1653)"
|
||||
d="m 41.010413,63.499999 h 7.9375 9.26042"
|
||||
id="path2717"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#marker1653)"
|
||||
d="m 41.010413,68.791666 h 7.9375 9.26042"
|
||||
id="path2719"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#marker1653)"
|
||||
d="M 74.083333,52.916666 H 96.572923 127"
|
||||
id="path2725"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:2.82222px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#aa0000;stroke-width:0.264583"
|
||||
x="66.196129"
|
||||
y="90.697647"
|
||||
id="text2729"><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-size:2.82222px;text-align:center;text-anchor:middle;fill:#aa0000;stroke-width:0.264583"
|
||||
x="66.196129"
|
||||
y="90.697647"
|
||||
id="tspan2727">cpu0.th_running</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-size:2.82222px;text-align:center;text-anchor:middle;fill:#aa0000;stroke-width:0.264583"
|
||||
x="66.196129"
|
||||
y="94.225426"
|
||||
id="tspan7725">value=0</tspan></text>
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#marker1653)"
|
||||
d="M 66.145833,87.312499 V 82.020832 76.729166"
|
||||
id="path2731"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:3.52777px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="61.100502"
|
||||
y="72.721657"
|
||||
id="text2735"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan2733"
|
||||
style="stroke-width:0.264583"
|
||||
x="61.100502"
|
||||
y="72.721657">mux0</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:3.52777px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;stroke-width:0.264583"
|
||||
x="133.27351"
|
||||
y="53.858898"
|
||||
id="text2801"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan2799"
|
||||
style="fill:#ffffff;stroke-width:0.264583"
|
||||
x="133.27351"
|
||||
y="53.858898">cpu0</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:3.52777px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;stroke-width:0.264583"
|
||||
x="133.31915"
|
||||
y="59.127312"
|
||||
id="text2805"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan2803"
|
||||
style="fill:#ffffff;stroke-width:0.264583"
|
||||
x="133.31915"
|
||||
y="59.127312">cpu1</tspan></text>
|
||||
<rect
|
||||
style="fill:#00ffff;stroke-width:0.4;stroke-dasharray:none"
|
||||
id="rect2807"
|
||||
width="18.520834"
|
||||
height="5.2916665"
|
||||
x="153.45833"
|
||||
y="50.270832"
|
||||
rx="1.4210855e-14"
|
||||
ry="7.1054274e-15" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#marker1653)"
|
||||
d="m 116.41666,58.208333 h 5.29167 5.29166"
|
||||
id="path2967"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#marker1653)"
|
||||
d="m 116.41666,63.499999 h 5.29167 5.29166"
|
||||
id="path2969"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#marker1653)"
|
||||
d="m 116.41666,68.791666 h 5.29167 5.29166"
|
||||
id="path2971"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:3.52777px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;stroke-width:0.264583"
|
||||
x="133.2735"
|
||||
y="64.44223"
|
||||
id="text2975"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan2973"
|
||||
style="fill:#ffffff;stroke-width:0.264583"
|
||||
x="133.2735"
|
||||
y="64.44223">cpu2</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:3.52777px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;stroke-width:0.264583"
|
||||
x="133.31914"
|
||||
y="69.710648"
|
||||
id="text2979"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan2977"
|
||||
style="fill:#ffffff;stroke-width:0.264583"
|
||||
x="133.31914"
|
||||
y="69.710648">cpu3</tspan></text>
|
||||
<path
|
||||
style="fill:#ffffff;stroke:#ffffff;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 148.16666,50.270833 V 71.437499"
|
||||
id="path3079" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#marker1653)"
|
||||
d="m 31.75,37.041666 v 47.625 47.625004"
|
||||
id="path3083"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#marker1653)"
|
||||
d="M 74.083332,132.29167 H 95.249999 127"
|
||||
id="path3085"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:3.52777px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;stroke-width:0.264583"
|
||||
x="130.6277"
|
||||
y="133.23389"
|
||||
id="text3091"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3089"
|
||||
style="fill:#ffffff;stroke-width:0.264583"
|
||||
x="130.6277"
|
||||
y="133.23389">thread0</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:3.52777px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;stroke-width:0.264583"
|
||||
x="130.67334"
|
||||
y="138.5023"
|
||||
id="text3095"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3093"
|
||||
style="fill:#ffffff;stroke-width:0.264583"
|
||||
x="130.67334"
|
||||
y="138.5023">thread1</tspan></text>
|
||||
<rect
|
||||
style="fill:#00ffff;stroke-width:0.4;stroke-dasharray:none"
|
||||
id="rect3097"
|
||||
width="29.104164"
|
||||
height="5.2916698"
|
||||
x="153.45833"
|
||||
y="129.64581"
|
||||
rx="1.4210855e-14"
|
||||
ry="7.1054274e-15" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:3.52777px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;stroke-width:0.264583"
|
||||
x="130.62769"
|
||||
y="143.81721"
|
||||
id="text3109"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3107"
|
||||
style="fill:#ffffff;stroke-width:0.264583"
|
||||
x="130.62769"
|
||||
y="143.81721">thread2</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:3.52777px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;stroke-width:0.264583"
|
||||
x="130.67332"
|
||||
y="149.08563"
|
||||
id="text3113"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3111"
|
||||
style="fill:#ffffff;stroke-width:0.264583"
|
||||
x="130.67332"
|
||||
y="149.08563">thread3</tspan></text>
|
||||
<path
|
||||
style="fill:#ffffff;stroke:#ffffff;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 148.16666,129.64582 v 21.16666"
|
||||
id="path3115" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:2.82222px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="127.48028"
|
||||
y="45.757755"
|
||||
id="text3121"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3119"
|
||||
style="font-size:2.82222px;stroke-width:0.264583"
|
||||
x="127.48028"
|
||||
y="45.757755">CPU: Nanos6 subsystem of the RUNNING thread</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:2.82222px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="127.12749"
|
||||
y="125.13274"
|
||||
id="text3125"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3123"
|
||||
style="font-size:2.82222px;stroke-width:0.264583"
|
||||
x="127.12749"
|
||||
y="125.13274">Thread: Nanos6 subsystem of the ACTIVE thread</tspan></text>
|
||||
<path
|
||||
style="fill:#cccccc;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 58.208333,116.41667 15.875,5.29167 v 21.16667 l -15.875,5.29166 z"
|
||||
id="path3197" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#marker1653)"
|
||||
d="m 66.145833,164.04167 v -9.26041 -9.26042"
|
||||
id="path3199" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:2.82222px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#aa0000;stroke-width:0.264583"
|
||||
x="66.183037"
|
||||
y="167.73962"
|
||||
id="text3203"><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-size:2.82222px;text-align:center;text-anchor:middle;fill:#aa0000;stroke-width:0.264583"
|
||||
x="66.183037"
|
||||
y="167.73962"
|
||||
id="tspan3201">thread0.state</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-size:2.82222px;text-align:center;text-anchor:middle;fill:#aa0000;stroke-width:0.264583"
|
||||
x="66.183037"
|
||||
y="171.2674"
|
||||
id="tspan7727">value=Running</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:3.52777px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="61.146149"
|
||||
y="141.49007"
|
||||
id="text3207"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3205"
|
||||
style="stroke-width:0.264583"
|
||||
x="61.146149"
|
||||
y="141.49007">mux1</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif Italic';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;stroke-width:0.264583"
|
||||
x="100.44865"
|
||||
y="130.42442"
|
||||
id="text3211"><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Italic';text-align:center;text-anchor:middle;stroke-width:0.264583"
|
||||
x="100.44865"
|
||||
y="130.42442"
|
||||
id="tspan3209">nanos6.thread0.subsystem.act</tspan></text>
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#marker1653)"
|
||||
d="M 31.75,132.29167 H 47.624999 58.208333"
|
||||
id="path3213"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<rect
|
||||
style="fill:#4d4d4d;stroke-width:0.4;stroke-dasharray:none"
|
||||
id="rect3875"
|
||||
width="68.791656"
|
||||
height="26.458332"
|
||||
x="127.00001"
|
||||
y="87.3125"
|
||||
rx="1.4210855e-14"
|
||||
ry="7.1054274e-15" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:3.52777px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;stroke-width:0.264583"
|
||||
x="130.6277"
|
||||
y="93.546394"
|
||||
id="text3879"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3877"
|
||||
style="fill:#ffffff;stroke-width:0.264583"
|
||||
x="130.6277"
|
||||
y="93.546394">thread0</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:3.52777px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;stroke-width:0.264583"
|
||||
x="130.67334"
|
||||
y="98.814812"
|
||||
id="text3883"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3881"
|
||||
style="fill:#ffffff;stroke-width:0.264583"
|
||||
x="130.67334"
|
||||
y="98.814812">thread1</tspan></text>
|
||||
<rect
|
||||
style="fill:#00d400;stroke-width:0.4;stroke-dasharray:none"
|
||||
id="rect3885"
|
||||
width="29.104164"
|
||||
height="5.2916698"
|
||||
x="153.45833"
|
||||
y="89.958321"
|
||||
rx="1.4210855e-14"
|
||||
ry="7.1054274e-15" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:3.52777px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;stroke-width:0.264583"
|
||||
x="130.62769"
|
||||
y="104.12972"
|
||||
id="text3897"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3895"
|
||||
style="fill:#ffffff;stroke-width:0.264583"
|
||||
x="130.62769"
|
||||
y="104.12972">thread2</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:3.52777px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;stroke-width:0.264583"
|
||||
x="130.67332"
|
||||
y="109.39815"
|
||||
id="text3901"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3899"
|
||||
style="fill:#ffffff;stroke-width:0.264583"
|
||||
x="130.67332"
|
||||
y="109.39815">thread3</tspan></text>
|
||||
<path
|
||||
style="fill:#ffffff;stroke:#ffffff;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 148.16665,89.958318 V 111.12498"
|
||||
id="path3903" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:2.82222px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="127.12749"
|
||||
y="85.445251"
|
||||
id="text3909"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3907"
|
||||
style="font-size:2.82222px;stroke-width:0.264583"
|
||||
x="127.12749"
|
||||
y="85.445251">Thread: Thread state</tspan></text>
|
||||
<rect
|
||||
style="fill:#ffcc00;stroke-width:0.4;stroke-dasharray:none"
|
||||
id="rect3911"
|
||||
width="10.583326"
|
||||
height="5.2916679"
|
||||
x="171.97916"
|
||||
y="89.958336"
|
||||
rx="1.4210855e-14"
|
||||
ry="7.1054274e-15" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:2.82222px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#aa0000;stroke-width:0.264583"
|
||||
x="105.87054"
|
||||
y="93.656296"
|
||||
id="text4019"><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-size:2.82222px;text-align:center;text-anchor:middle;fill:#aa0000;stroke-width:0.264583"
|
||||
x="105.87054"
|
||||
y="93.656296"
|
||||
id="tspan4017">thread0.state</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:2.82222px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#aa0000;stroke-width:0.264583"
|
||||
x="105.87054"
|
||||
y="98.947968"
|
||||
id="text4023"><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-size:2.82222px;text-align:center;text-anchor:middle;fill:#aa0000;stroke-width:0.264583"
|
||||
x="105.87054"
|
||||
y="98.947968"
|
||||
id="tspan4021">thread1.state</tspan></text>
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#marker1653)"
|
||||
d="m 116.41666,97.895832 h 5.29167 5.29166"
|
||||
id="path4025"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#marker1653)"
|
||||
d="m 116.41666,103.1875 h 5.29167 5.29166"
|
||||
id="path4027"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#marker1653)"
|
||||
d="m 116.41666,108.47917 h 5.29167 5.29166"
|
||||
id="path4029"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#marker1653)"
|
||||
d="m 116.41666,92.604166 h 5.29167 5.29166"
|
||||
id="path4031"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#marker1653)"
|
||||
d="m 116.41666,142.87499 h 5.29167 5.29166"
|
||||
id="path4033"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#marker1653)"
|
||||
d="m 116.41666,148.16666 h 5.29167 5.29166"
|
||||
id="path4035"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#marker1653)"
|
||||
d="m 116.41666,137.58332 h 5.29167 5.29166"
|
||||
id="path4039"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:2.82222px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#aa0000;stroke-width:0.264583"
|
||||
x="105.87054"
|
||||
y="104.23963"
|
||||
id="text4043"><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-size:2.82222px;text-align:center;text-anchor:middle;fill:#aa0000;stroke-width:0.264583"
|
||||
x="105.87054"
|
||||
y="104.23963"
|
||||
id="tspan4041">thread2.state</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:2.82222px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#aa0000;stroke-width:0.264583"
|
||||
x="105.87054"
|
||||
y="109.5313"
|
||||
id="text4047"><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-size:2.82222px;text-align:center;text-anchor:middle;fill:#aa0000;stroke-width:0.264583"
|
||||
x="105.87054"
|
||||
y="109.5313"
|
||||
id="tspan4045">thread3.state</tspan></text>
|
||||
<rect
|
||||
style="fill:#d40000;stroke-width:0.4;stroke-dasharray:none"
|
||||
id="rect4158"
|
||||
width="5.2916636"
|
||||
height="5.2916675"
|
||||
x="177.27083"
|
||||
y="50.270832"
|
||||
rx="1.4210855e-14"
|
||||
ry="7.1054274e-15" />
|
||||
<rect
|
||||
style="fill:#d40000;stroke-width:0.4;stroke-dasharray:none"
|
||||
id="rect4212"
|
||||
width="5.2916636"
|
||||
height="5.2916675"
|
||||
x="177.27083"
|
||||
y="145.52081"
|
||||
rx="1.4210855e-14"
|
||||
ry="7.1054274e-15" />
|
||||
<rect
|
||||
style="fill:#00d400;stroke-width:0.4;stroke-dasharray:none"
|
||||
id="rect4214"
|
||||
width="5.2916636"
|
||||
height="5.2916656"
|
||||
x="177.27083"
|
||||
y="105.83334"
|
||||
rx="1.4210855e-14"
|
||||
ry="7.1054274e-15" />
|
||||
<path
|
||||
style="fill:#ff0000;stroke:#ff0000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:0.8, 0.4;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="M 153.45833,39.687501 V 174.625"
|
||||
id="path3425"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif Italic';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;stroke-width:0.264583"
|
||||
x="97.887566"
|
||||
y="51.049423"
|
||||
id="text4270"><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Italic';text-align:center;text-anchor:middle;stroke-width:0.264583"
|
||||
x="97.887566"
|
||||
y="51.049423"
|
||||
id="tspan4268">nanos6.cpu0.subsystem.run</tspan></text>
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:1.2, 1.2;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="m 58.208333,37.041667 15.874999,15.875"
|
||||
id="path388"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:1.2, 1.2;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="m 58.208333,132.29167 h 15.875"
|
||||
id="path1061"
|
||||
sodipodi:nodetypes="cc" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 26 KiB |
628
doc/dev/fig/mux1.svg
Normal file
@ -0,0 +1,628 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="193.14583mm"
|
||||
height="150.8125mm"
|
||||
viewBox="0 0 193.14583 150.8125"
|
||||
version="1.1"
|
||||
id="svg5"
|
||||
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
|
||||
sodipodi:docname="mux1.svg"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<sodipodi:namedview
|
||||
id="namedview7"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#999999"
|
||||
borderopacity="1"
|
||||
inkscape:showpageshadow="0"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:document-units="mm"
|
||||
showgrid="true"
|
||||
inkscape:zoom="1.069618"
|
||||
inkscape:cx="399.20794"
|
||||
inkscape:cy="315.06575"
|
||||
inkscape:window-width="1914"
|
||||
inkscape:window-height="1025"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="24"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="layer1">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid132"
|
||||
spacingx="0.26458333"
|
||||
spacingy="0.26458333"
|
||||
empspacing="10"
|
||||
originx="-5.2916663"
|
||||
originy="-23.812499" />
|
||||
</sodipodi:namedview>
|
||||
<defs
|
||||
id="defs2">
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="marker1653"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto-start-reverse"
|
||||
inkscape:stockid="Arrow1L"
|
||||
markerWidth="8.75"
|
||||
markerHeight="5"
|
||||
viewBox="0 0 8.75 5"
|
||||
inkscape:isstock="true"
|
||||
inkscape:collect="always"
|
||||
preserveAspectRatio="xMidYMid">
|
||||
<path
|
||||
style="fill:context-stroke;fill-rule:evenodd;stroke:none"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 Z"
|
||||
id="path1651"
|
||||
transform="scale(-0.5)" />
|
||||
</marker>
|
||||
</defs>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-5.2916665,-23.8125)">
|
||||
<rect
|
||||
style="fill:none;stroke:none;stroke-width:0.407208;stroke-dasharray:0.814415, 0.407208"
|
||||
id="rect1117"
|
||||
width="193.14583"
|
||||
height="150.8125"
|
||||
x="5.2916665"
|
||||
y="23.8125"
|
||||
rx="1.4210855e-14"
|
||||
ry="7.3638071e-15" />
|
||||
<rect
|
||||
style="fill:#4d4d4d;stroke-width:0.4;stroke-dasharray:none"
|
||||
id="rect3087"
|
||||
width="68.791656"
|
||||
height="26.458332"
|
||||
x="127"
|
||||
y="126.99999"
|
||||
rx="1.4210855e-14"
|
||||
ry="7.1054274e-15" />
|
||||
<rect
|
||||
style="fill:#4d4d4d;stroke-width:0.4;stroke-dasharray:none"
|
||||
id="rect2797"
|
||||
width="68.791656"
|
||||
height="26.458332"
|
||||
x="127.00001"
|
||||
y="47.625"
|
||||
rx="1.4210855e-14"
|
||||
ry="7.1054274e-15" />
|
||||
<path
|
||||
style="fill:#cccccc;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 58.208333,26.458333 15.875,5.291667 v 42.333332 l -15.875,5.291667 z"
|
||||
id="path409"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#marker1653)"
|
||||
d="m 7.9374999,37.041666 41.0104161,10e-7 h 9.260417"
|
||||
id="path1649"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:2.82222px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#0000ff;stroke-width:0.264583"
|
||||
x="29.095898"
|
||||
y="35.174423"
|
||||
id="text2523"><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-size:2.82222px;text-align:center;text-anchor:middle;fill:#0000ff;stroke-width:0.264583"
|
||||
x="29.095898"
|
||||
y="35.174423"
|
||||
id="tspan2527">nanos6.thread0.subsystem</tspan></text>
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#marker1653)"
|
||||
d="m 41.010413,42.333333 h 7.9375 9.26042"
|
||||
id="path2695"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#marker1653)"
|
||||
d="m 41.010413,47.624999 h 7.9375 9.26042"
|
||||
id="path2701"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#marker1653)"
|
||||
d="m 41.010413,52.916666 h 7.9375 9.26042"
|
||||
id="path2705"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#marker1653)"
|
||||
d="m 41.010413,58.208333 h 7.9375 9.26042"
|
||||
id="path2715"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#marker1653)"
|
||||
d="m 41.010413,63.499999 h 7.9375 9.26042"
|
||||
id="path2717"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#marker1653)"
|
||||
d="m 41.010413,68.791666 h 7.9375 9.26042"
|
||||
id="path2719"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#marker1653)"
|
||||
d="M 74.083333,52.916666 H 96.572923 127"
|
||||
id="path2725"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:2.82222px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#aa0000;stroke-width:0.264583"
|
||||
x="66.196129"
|
||||
y="90.697647"
|
||||
id="text2729"><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-size:2.82222px;text-align:center;text-anchor:middle;fill:#aa0000;stroke-width:0.264583"
|
||||
x="66.196129"
|
||||
y="90.697647"
|
||||
id="tspan2727">cpu0.th_running</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-size:2.82222px;text-align:center;text-anchor:middle;fill:#aa0000;stroke-width:0.264583"
|
||||
x="66.196129"
|
||||
y="94.225426"
|
||||
id="tspan7176">value=null</tspan></text>
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#marker1653)"
|
||||
d="M 66.145833,87.312499 V 82.020832 76.729166"
|
||||
id="path2731"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:3.52777px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="61.100502"
|
||||
y="72.721657"
|
||||
id="text2735"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan2733"
|
||||
style="stroke-width:0.264583"
|
||||
x="61.100502"
|
||||
y="72.721657">mux0</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:3.52777px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;stroke-width:0.264583"
|
||||
x="133.27351"
|
||||
y="53.858898"
|
||||
id="text2801"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan2799"
|
||||
style="fill:#ffffff;stroke-width:0.264583"
|
||||
x="133.27351"
|
||||
y="53.858898">cpu0</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:3.52777px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;stroke-width:0.264583"
|
||||
x="133.31915"
|
||||
y="59.127312"
|
||||
id="text2805"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan2803"
|
||||
style="fill:#ffffff;stroke-width:0.264583"
|
||||
x="133.31915"
|
||||
y="59.127312">cpu1</tspan></text>
|
||||
<rect
|
||||
style="fill:#00ffff;stroke-width:0.4;stroke-dasharray:none"
|
||||
id="rect2807"
|
||||
width="18.520834"
|
||||
height="5.2916665"
|
||||
x="153.45833"
|
||||
y="50.270832"
|
||||
rx="1.4210855e-14"
|
||||
ry="7.1054274e-15" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#marker1653)"
|
||||
d="m 116.41666,58.208333 h 5.29167 5.29166"
|
||||
id="path2967"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#marker1653)"
|
||||
d="m 116.41666,63.499999 h 5.29167 5.29166"
|
||||
id="path2969"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#marker1653)"
|
||||
d="m 116.41666,68.791666 h 5.29167 5.29166"
|
||||
id="path2971"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:3.52777px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;stroke-width:0.264583"
|
||||
x="133.2735"
|
||||
y="64.44223"
|
||||
id="text2975"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan2973"
|
||||
style="fill:#ffffff;stroke-width:0.264583"
|
||||
x="133.2735"
|
||||
y="64.44223">cpu2</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:3.52777px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;stroke-width:0.264583"
|
||||
x="133.31914"
|
||||
y="69.710648"
|
||||
id="text2979"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan2977"
|
||||
style="fill:#ffffff;stroke-width:0.264583"
|
||||
x="133.31914"
|
||||
y="69.710648">cpu3</tspan></text>
|
||||
<path
|
||||
style="fill:#ffffff;stroke:#ffffff;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 148.16666,50.270833 V 71.437499"
|
||||
id="path3079" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#marker1653)"
|
||||
d="m 31.75,37.041666 v 47.625 47.625004"
|
||||
id="path3083"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#marker1653)"
|
||||
d="M 74.083332,132.29167 H 95.249999 127"
|
||||
id="path3085"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:3.52777px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;stroke-width:0.264583"
|
||||
x="130.6277"
|
||||
y="133.23389"
|
||||
id="text3091"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3089"
|
||||
style="fill:#ffffff;stroke-width:0.264583"
|
||||
x="130.6277"
|
||||
y="133.23389">thread0</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:3.52777px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;stroke-width:0.264583"
|
||||
x="130.67334"
|
||||
y="138.5023"
|
||||
id="text3095"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3093"
|
||||
style="fill:#ffffff;stroke-width:0.264583"
|
||||
x="130.67334"
|
||||
y="138.5023">thread1</tspan></text>
|
||||
<rect
|
||||
style="fill:#00ffff;stroke-width:0.4;stroke-dasharray:none"
|
||||
id="rect3097"
|
||||
width="29.104164"
|
||||
height="5.2916698"
|
||||
x="153.45833"
|
||||
y="129.64581"
|
||||
rx="1.4210855e-14"
|
||||
ry="7.1054274e-15" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:3.52777px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;stroke-width:0.264583"
|
||||
x="130.62769"
|
||||
y="143.81721"
|
||||
id="text3109"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3107"
|
||||
style="fill:#ffffff;stroke-width:0.264583"
|
||||
x="130.62769"
|
||||
y="143.81721">thread2</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:3.52777px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;stroke-width:0.264583"
|
||||
x="130.67332"
|
||||
y="149.08563"
|
||||
id="text3113"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3111"
|
||||
style="fill:#ffffff;stroke-width:0.264583"
|
||||
x="130.67332"
|
||||
y="149.08563">thread3</tspan></text>
|
||||
<path
|
||||
style="fill:#ffffff;stroke:#ffffff;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 148.16666,129.64582 v 21.16666"
|
||||
id="path3115" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:2.82222px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="127.48028"
|
||||
y="45.757755"
|
||||
id="text3121"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3119"
|
||||
style="font-size:2.82222px;stroke-width:0.264583"
|
||||
x="127.48028"
|
||||
y="45.757755">CPU: Nanos6 subsystem of the RUNNING thread</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:2.82222px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="127.12749"
|
||||
y="125.13274"
|
||||
id="text3125"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3123"
|
||||
style="font-size:2.82222px;stroke-width:0.264583"
|
||||
x="127.12749"
|
||||
y="125.13274">Thread: Nanos6 subsystem of the ACTIVE thread</tspan></text>
|
||||
<path
|
||||
style="fill:#cccccc;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 58.208333,116.41667 15.875,5.29167 v 21.16667 l -15.875,5.29166 z"
|
||||
id="path3197" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#marker1653)"
|
||||
d="m 66.145833,164.04167 v -9.26041 -9.26042"
|
||||
id="path3199" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:2.82222px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#aa0000;stroke-width:0.264583"
|
||||
x="66.183037"
|
||||
y="167.73962"
|
||||
id="text3203"><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-size:2.82222px;text-align:center;text-anchor:middle;fill:#aa0000;stroke-width:0.264583"
|
||||
x="66.183037"
|
||||
y="167.73962"
|
||||
id="tspan3201">thread0.state</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-size:2.82222px;text-align:center;text-anchor:middle;fill:#aa0000;stroke-width:0.264583"
|
||||
x="66.183037"
|
||||
y="171.2674"
|
||||
id="tspan7178">value=Cooling</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:3.52777px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="61.146149"
|
||||
y="141.49007"
|
||||
id="text3207"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3205"
|
||||
style="stroke-width:0.264583"
|
||||
x="61.146149"
|
||||
y="141.49007">mux1</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif Italic';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;stroke-width:0.264583"
|
||||
x="100.44865"
|
||||
y="130.42442"
|
||||
id="text3211"><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Italic';text-align:center;text-anchor:middle;stroke-width:0.264583"
|
||||
x="100.44865"
|
||||
y="130.42442"
|
||||
id="tspan3209">nanos6.thread0.subsystem.act</tspan></text>
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#marker1653)"
|
||||
d="M 31.75,132.29167 H 47.624999 58.208333"
|
||||
id="path3213"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<rect
|
||||
style="fill:#4d4d4d;stroke-width:0.4;stroke-dasharray:none"
|
||||
id="rect3875"
|
||||
width="68.791656"
|
||||
height="26.458332"
|
||||
x="127.00001"
|
||||
y="87.3125"
|
||||
rx="1.4210855e-14"
|
||||
ry="7.1054274e-15" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:3.52777px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;stroke-width:0.264583"
|
||||
x="130.6277"
|
||||
y="93.546394"
|
||||
id="text3879"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3877"
|
||||
style="fill:#ffffff;stroke-width:0.264583"
|
||||
x="130.6277"
|
||||
y="93.546394">thread0</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:3.52777px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;stroke-width:0.264583"
|
||||
x="130.67334"
|
||||
y="98.814812"
|
||||
id="text3883"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3881"
|
||||
style="fill:#ffffff;stroke-width:0.264583"
|
||||
x="130.67334"
|
||||
y="98.814812">thread1</tspan></text>
|
||||
<rect
|
||||
style="fill:#00d400;stroke-width:0.4;stroke-dasharray:none"
|
||||
id="rect3885"
|
||||
width="29.104164"
|
||||
height="5.2916698"
|
||||
x="153.45833"
|
||||
y="89.958321"
|
||||
rx="1.4210855e-14"
|
||||
ry="7.1054274e-15" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:3.52777px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;stroke-width:0.264583"
|
||||
x="130.62769"
|
||||
y="104.12972"
|
||||
id="text3897"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3895"
|
||||
style="fill:#ffffff;stroke-width:0.264583"
|
||||
x="130.62769"
|
||||
y="104.12972">thread2</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:3.52777px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;stroke-width:0.264583"
|
||||
x="130.67332"
|
||||
y="109.39815"
|
||||
id="text3901"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3899"
|
||||
style="fill:#ffffff;stroke-width:0.264583"
|
||||
x="130.67332"
|
||||
y="109.39815">thread3</tspan></text>
|
||||
<path
|
||||
style="fill:#ffffff;stroke:#ffffff;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 148.16665,89.958318 V 111.12498"
|
||||
id="path3903" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:2.82222px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="127.12749"
|
||||
y="85.445251"
|
||||
id="text3909"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3907"
|
||||
style="font-size:2.82222px;stroke-width:0.264583"
|
||||
x="127.12749"
|
||||
y="85.445251">Thread: Thread state</tspan></text>
|
||||
<rect
|
||||
style="fill:#ffcc00;stroke-width:0.4;stroke-dasharray:none"
|
||||
id="rect3911"
|
||||
width="10.583326"
|
||||
height="5.2916679"
|
||||
x="171.97916"
|
||||
y="89.958336"
|
||||
rx="1.4210855e-14"
|
||||
ry="7.1054274e-15" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:2.82222px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#aa0000;stroke-width:0.264583"
|
||||
x="105.87054"
|
||||
y="93.656296"
|
||||
id="text4019"><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-size:2.82222px;text-align:center;text-anchor:middle;fill:#aa0000;stroke-width:0.264583"
|
||||
x="105.87054"
|
||||
y="93.656296"
|
||||
id="tspan4017">thread0.state</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:2.82222px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#aa0000;stroke-width:0.264583"
|
||||
x="105.87054"
|
||||
y="98.947968"
|
||||
id="text4023"><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-size:2.82222px;text-align:center;text-anchor:middle;fill:#aa0000;stroke-width:0.264583"
|
||||
x="105.87054"
|
||||
y="98.947968"
|
||||
id="tspan4021">thread1.state</tspan></text>
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#marker1653)"
|
||||
d="m 116.41666,97.895832 h 5.29167 5.29166"
|
||||
id="path4025"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#marker1653)"
|
||||
d="m 116.41666,103.1875 h 5.29167 5.29166"
|
||||
id="path4027"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#marker1653)"
|
||||
d="m 116.41666,108.47917 h 5.29167 5.29166"
|
||||
id="path4029"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#marker1653)"
|
||||
d="m 116.41666,92.604166 h 5.29167 5.29166"
|
||||
id="path4031"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#marker1653)"
|
||||
d="m 116.41666,142.87499 h 5.29167 5.29166"
|
||||
id="path4033"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#marker1653)"
|
||||
d="m 116.41666,148.16666 h 5.29167 5.29166"
|
||||
id="path4035"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#marker1653)"
|
||||
d="m 116.41666,137.58332 h 5.29167 5.29166"
|
||||
id="path4039"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:2.82222px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#aa0000;stroke-width:0.264583"
|
||||
x="105.87054"
|
||||
y="104.23963"
|
||||
id="text4043"><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-size:2.82222px;text-align:center;text-anchor:middle;fill:#aa0000;stroke-width:0.264583"
|
||||
x="105.87054"
|
||||
y="104.23963"
|
||||
id="tspan4041">thread2.state</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:2.82222px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#aa0000;stroke-width:0.264583"
|
||||
x="105.87054"
|
||||
y="109.5313"
|
||||
id="text4047"><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-size:2.82222px;text-align:center;text-anchor:middle;fill:#aa0000;stroke-width:0.264583"
|
||||
x="105.87054"
|
||||
y="109.5313"
|
||||
id="tspan4045">thread3.state</tspan></text>
|
||||
<rect
|
||||
style="fill:#d40000;stroke-width:0.4;stroke-dasharray:none"
|
||||
id="rect4158"
|
||||
width="5.2916636"
|
||||
height="5.2916675"
|
||||
x="177.27083"
|
||||
y="50.270832"
|
||||
rx="1.4210855e-14"
|
||||
ry="7.1054274e-15" />
|
||||
<rect
|
||||
style="fill:#d40000;stroke-width:0.4;stroke-dasharray:none"
|
||||
id="rect4212"
|
||||
width="5.2916636"
|
||||
height="5.2916675"
|
||||
x="177.27083"
|
||||
y="145.52081"
|
||||
rx="1.4210855e-14"
|
||||
ry="7.1054274e-15" />
|
||||
<rect
|
||||
style="fill:#00d400;stroke-width:0.4;stroke-dasharray:none"
|
||||
id="rect4214"
|
||||
width="5.2916636"
|
||||
height="5.2916656"
|
||||
x="177.27083"
|
||||
y="105.83334"
|
||||
rx="1.4210855e-14"
|
||||
ry="7.1054274e-15" />
|
||||
<path
|
||||
style="fill:#ff0000;stroke:#ff0000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:0.8, 0.4;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="M 171.97916,39.687501 V 174.625"
|
||||
id="path3425"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif Italic';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;stroke-width:0.264583"
|
||||
x="97.887566"
|
||||
y="51.049423"
|
||||
id="text4270"><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Italic';text-align:center;text-anchor:middle;stroke-width:0.264583"
|
||||
x="97.887566"
|
||||
y="51.049423"
|
||||
id="tspan4268">nanos6.cpu0.subsystem.run</tspan></text>
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:1.2, 1.2;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="m 66.145833,52.916667 h 7.937499"
|
||||
id="path388"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:1.2, 1.2;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="m 58.208333,132.29167 h 15.875"
|
||||
id="path1061"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#marker1653)"
|
||||
d="M 64.822916,54.239584 67.468749,51.59375"
|
||||
id="path6325"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#marker1653)"
|
||||
d="M 67.46875,54.239584 64.822915,51.593751"
|
||||
id="path6327"
|
||||
sodipodi:nodetypes="cc" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 26 KiB |
@ -1,4 +1,4 @@
|
||||
# Developer guide
|
||||
# Developer guidelines
|
||||
|
||||
To contribute to the ovni project, please read carefully this guide and
|
||||
follow the guidelines to have your contribution accepted in the project.
|
48
doc/dev/model.md
Normal file
@ -0,0 +1,48 @@
|
||||
# Model
|
||||
|
||||
The emulator is designed to support multiple models simultaneously. Each model
|
||||
must be implemented by following the `model_spec` interface, which defines the
|
||||
functions that will be called by the emulation when that model is enabled.
|
||||
|
||||
Each model must have a unique character that identifies the model, and will be
|
||||
used to filter the events in the MCV (model, category, value) tuple of the
|
||||
input event.
|
||||
|
||||
Unless otherwise stated, all model functions return 0 on success or -1 on error.
|
||||
|
||||
## Probe
|
||||
|
||||
The probe function determines if the model should be enabled or not, based on
|
||||
the information read from the metadata of the traces. No events are available
|
||||
yet. Returns -1 on error, 0 if the model must be enabled or 1 if not.
|
||||
|
||||
If the model is not enabled, no other function will be called.
|
||||
|
||||
## Create
|
||||
|
||||
The create function is called for each enabled model to allow them to allocate
|
||||
all the required structures to perform the emulation using the
|
||||
[extend](extend.md) mechanism. All the required channels must be created and
|
||||
registered in the patch bay in this function, so other models can found them in
|
||||
the next stage.
|
||||
|
||||
## Connect
|
||||
|
||||
In the connect function, the channels and multiplexers are connected, as all the
|
||||
channels of all models have already been registered in the patch bay. The
|
||||
channels must also be connected to the output traces to record the states.
|
||||
|
||||
## Event
|
||||
|
||||
The event function is called only if the processed input event matches the model
|
||||
character. The function must return 0 on success or -1 on error. If an error
|
||||
is returned, the emulator will print some information about the current event and
|
||||
proceed to call the last stage so the traces can be closed and flushed to disk
|
||||
before stopping the emulation process.
|
||||
|
||||
## Finish
|
||||
|
||||
This function is called when there are no more events to be processed or when
|
||||
the emulator has encountered a problem processing on event and needs to abort
|
||||
the emulation process. The output traces must be closed to write all the buffers
|
||||
into disk. Additional allocated structures may now be freed.
|
55
doc/dev/mux.md
Normal file
@ -0,0 +1,55 @@
|
||||
# Mux
|
||||
|
||||
The emulator provides a mechanism to interconnect [channels](channels.md) in a
|
||||
similar way as an [analog
|
||||
multiplexer](https://en.wikipedia.org/wiki/Multiplexer) by using the `mux`
|
||||
module.
|
||||
|
||||
Multiplexers or muxers have one output channel, one select channel and a
|
||||
variable number of input channels (including zero). Each input channel is
|
||||
registered in the multiplexer by using a key with a given value. In the normal
|
||||
operation of a mux, the value of the select channel is used to find an input
|
||||
with a matching key. When there is no match, the output value is set to null.
|
||||
|
||||
Multiplexers can be configured to execute a custom select function, which will
|
||||
take the value of the select channel and determine which input should be
|
||||
selected. This allows a multiplexer to act as a filter too.
|
||||
|
||||
## Tracking
|
||||
|
||||
The typical use of multiplexers is to implement the tracking modes of channels.
|
||||
As an example, the following diagram shows two multiplexers used to implement
|
||||
the subsystem view of [Nanos6](../user/emulation/nanos6.md):
|
||||
|
||||

|
||||
|
||||
The first mux0 selects the input corresponding to the thread running in that
|
||||
CPU (thread0), and forwards the value to the output. If no thread is running the
|
||||
output is set to null. The output channel *nanos6.cpu0.subsystem.run* is then
|
||||
connected to the Paraver timeline in the row corresponding to the CPU0, which
|
||||
shows the subsystem of the currently **running** thread.
|
||||
|
||||
The Nanos6 subsystem channel is also connected to the second mux1, which forwards the
|
||||
value to the output only when the thread state is **Active** (not paused or
|
||||
dead). The output is directly connected to the Paraver row assigned to that
|
||||
thread. This view shows the subsystem of the thread when is active.
|
||||
|
||||

|
||||
|
||||
Notice that when the thread0 is no longer Running (switches to the Cooling
|
||||
state shown in yellow) the CPU subsystem timeline no longer shows the subsystem,
|
||||
as the mux0 is not selecting any input (because there are no threads in the CPU0
|
||||
in the Running state at that moment).
|
||||
|
||||
However, the thread view still shows the subsystem, as the thread0 is still
|
||||
active (not paused yet). The mux1 is still selecting the thread subsystem
|
||||
channel as input.
|
||||
|
||||
## Separation of concerns
|
||||
|
||||
Multiplexers allow models to interact with each other in a controlled way. In
|
||||
the example, the blue channel (*nanos6.thread0.subsystem*) is directly modified by
|
||||
the Nanos6 model when a new event is received. While the red channels are
|
||||
controlled by the ovni model. The rest of the channels are automatically updated
|
||||
in the propagation phase of the [bay](patchbay.md) allowing the ovni model to
|
||||
modify the Nanos6 Paraver view of the subsystems.
|
30
doc/dev/paraver.md
Normal file
@ -0,0 +1,30 @@
|
||||
# Paraver trace
|
||||
|
||||
Paraver traces are handled by the top level module `pvt` (Paraver trace), which
|
||||
in turn uses the `prv`, `pcf` and `prf` to control the trace events, type
|
||||
definitions and row names (in that order).
|
||||
|
||||
Traces must be initialized with the number of rows and a name by calling
|
||||
`pvt_open()`.
|
||||
|
||||
The emulation time must be updated with `pvt_advance()` prior to emitting any
|
||||
event, so they get the update clock in the trace.
|
||||
|
||||
## Connecting channels
|
||||
|
||||
A channel can be connected to each row in a trace with `prv_register()`, so the
|
||||
new values of the channel get written in the trace. Only null and int64 data
|
||||
values are supported for now.
|
||||
|
||||
The emission phase is controlled by the [patch bay](patchbay.md) and runs all
|
||||
the emit callbacks at once for all dirty channels.
|
||||
|
||||
## Duplicate values
|
||||
|
||||
When a channel feeds a duplicated value, it causes an error by default. The
|
||||
behavior of each row when a duplicate value is found can be controlled by the
|
||||
`flags` in `prv_register()`:
|
||||
|
||||
- `PRV_EMITDUP` will emit the duplicate values from the channel to the trace.
|
||||
|
||||
- `PRV_SKIPDUP` ignore any duplicate values and don't emit them.
|
39
doc/dev/patchbay.md
Normal file
@ -0,0 +1,39 @@
|
||||
# Patch bay
|
||||
|
||||
The patch bay (or simply bay) allows [channels](channels.md) to be registered
|
||||
with their name so they are visible to all parts of the emulator and provides a
|
||||
way to run callbacks when the channels update their values.
|
||||
|
||||
The name follows from the [patch bay](https://en.wikipedia.org/wiki/Patch_panel)
|
||||
used to connect audio channels:
|
||||
|
||||

|
||||
|
||||
## Registering channels
|
||||
|
||||
Channels are registered with `bay_register()`, using the channel name as a
|
||||
unique identifier. It is an error to register multiple channels with the same
|
||||
name.
|
||||
|
||||
The register step sets the channel callback function, so the bay can detect
|
||||
which channel become dirty and act upon them.
|
||||
|
||||
## Callbacks
|
||||
|
||||
After registering a channel in the bay, multiple callbacks can be registered
|
||||
with `bay_add_cb()` and will be called in same order they were added.
|
||||
|
||||
The callbacks are executed in the propagation phase, when `bay_propagate()` is
|
||||
called. There are two types of callbacks: *dirty* and *emit*.
|
||||
|
||||
All dirty callbacks are called first, for all the channels that are dirty.
|
||||
Executing the dirty callbacks may cause other channels to become dirty too,
|
||||
which will be added to the list of dirty channels. Channels that are already
|
||||
dirty cannot be modified, so we prevent an infinite updating loop.
|
||||
|
||||
Then the emit callbacks are called for each dirty channel in the same way. The
|
||||
emit callbacks are generally used to write the values of the channels in the
|
||||
output traces. These callbacks cannot cause any new channel to become dirty.
|
||||
|
||||
Finally, all channels are flushed by calling `chan_flush()`, clearing the dirty
|
||||
flag and leaving them ready for the next input event.
|
@ -1,170 +0,0 @@
|
||||
# Channels
|
||||
|
||||
As the emulation progresses, information is written in the PRV trace to
|
||||
record the new states. The emulator has specific mechanism to handle the
|
||||
output of new states in the PRV trace via channels. A channel stores an
|
||||
integer that represents an state at a given point in time and
|
||||
corresponds to the value that will be observed in the Paraver timeline.
|
||||
|
||||
!!! Note
|
||||
|
||||
In general, the emulator receives events, then performs a state
|
||||
transition and the new state (or states) are written into the
|
||||
PRV file.
|
||||
|
||||
There are two classes of channels: CPU and thread channels. Both CPU and
|
||||
threads have the same fixed number of channels, given by the enumeration
|
||||
`enum chan`.
|
||||
|
||||
For example the `CHAN_OVNI_STATE` of the thread stores the execution
|
||||
state of the thread (running, paused ...). Whereas, the CPU channel
|
||||
`CHAN_OVNI_NRTHREADS` records how many running threads a given CPU has.
|
||||
|
||||
The channels are used in the following way:
|
||||
|
||||
- In the "pre" phase, the emulator modifies the state of the emulator
|
||||
based on the new event. The channels are then updated accordingly in
|
||||
this phase, for example when a thread goes from running to paused it
|
||||
must update the `CHAN_OVNI_STATE` channel of the thread by also the
|
||||
`CHAN_OVNI_NRTHREADS` channel of the CPU.
|
||||
|
||||
- In the "emit" phase, the emulator calls the `chan_emit()` method on
|
||||
those channels that have been modified. Those have the dirty attribute
|
||||
set to 1.
|
||||
|
||||
- The optional "post" phase is used to perform some operations before
|
||||
the next event is loaded, but is not commonly used.
|
||||
|
||||
Then the emulator then loads the next event and repeats the process
|
||||
again.
|
||||
|
||||
## Disabling and enabling channels
|
||||
|
||||
Some channels provide information that only makes sense in some
|
||||
conditions. For example, the CPU channel `CHAN_OVNI_TID` tracks the TID
|
||||
of the thread currently running in the CPU. When there is no thread
|
||||
running or there are multiple threads running in the same CPU, this
|
||||
channel cannot output valid information.
|
||||
|
||||
For those cases, the channels can be enabled or disabled as to only
|
||||
provide information when it is necessary. When a channel is disabled, it
|
||||
will emit the value stored in `badst` which by default is set to 0.
|
||||
|
||||
Notice that if a channel was in a given state A, and was disabled, it
|
||||
must emit the new state is 0. When the channel is enabled again, it will
|
||||
emit again the state A.
|
||||
|
||||
## Thread tracking channels
|
||||
|
||||
Regarding thread channels, there are two common conditions that cause
|
||||
the channels to become disabled. When the thread is no longer running,
|
||||
and then the thread is not active.
|
||||
|
||||
For those cases, the thread channels can be configured to automatically
|
||||
be enabled or disabled, following the execution state of the thread. The
|
||||
tracking mode specifies how the tracking must be done:
|
||||
|
||||
- `CHAN_TRACK_NONE`: nothing to track
|
||||
- `CHAN_TRACK_RUNNING_TH`: enable the channel only if the thread is
|
||||
running
|
||||
- `CHAN_TRACK_ACTIVE_TH`: enable the channel only if the thread is
|
||||
running, cooling or warming.
|
||||
|
||||
This mechanism removes the complexity of detecting when a thread stops
|
||||
running, to update a channel of a given module. As the thread state
|
||||
changes as handled by the `emu_ovni.c` module only.
|
||||
|
||||
## CPU tracking channels
|
||||
|
||||
Similarly, CPU channels can also be configured to track the execution
|
||||
state of the threads. They become disabled when the tracking condition
|
||||
is not met, but also copy the state of the tracking thread channel.
|
||||
|
||||
They share the same tracking modes, but their behavior is slightly
|
||||
different:
|
||||
|
||||
In the case of tracking the running thread, if the CPU has more than one
|
||||
thread running, the channel will always output the error state
|
||||
`ST_TOO_MANY_TH`.
|
||||
|
||||
If is has no threads running, will be disabled and emit a 0 state by
|
||||
default.
|
||||
|
||||
Otherwise, it will emit the same value as the running thread. If the
|
||||
thread channel is disabled, it will emit a `ST_BAD` error state.
|
||||
|
||||
Regarding the active thread tracking mode, the CPU channels behave
|
||||
similarly, but with the active threads instead of running ones.
|
||||
|
||||
The CPU tracking mechanism simplify the process of updating CPU
|
||||
channels, as the modules don't need to worry about the execution model.
|
||||
Only the channels need to be configured to follow the proper execution
|
||||
state.
|
||||
|
||||
## Channel state modes
|
||||
|
||||
The channels can be updated in three ways:
|
||||
|
||||
1. A fixed state can be set to the channel using `chan_set()`, which
|
||||
overrides the previous state.
|
||||
|
||||
2. The new state can be stored in a stack with `chan_push()` and
|
||||
`chan_pop()`, to remember the history of the previous states. The
|
||||
emitted event will be the one on the top.
|
||||
|
||||
3. Using a punctual event.
|
||||
|
||||
Setting the channel state is commonly used to track quantities such as
|
||||
the number of threads running per CPU. While the stack mode is commonly
|
||||
used to track functions or sections of code delimited with enter and
|
||||
exit events, which can call an return to the previous state.
|
||||
|
||||
An example program may be instrumented like this:
|
||||
|
||||
int bar() {
|
||||
instr("Xb[");
|
||||
...
|
||||
instr("Xb]");
|
||||
}
|
||||
|
||||
int foo() {
|
||||
instr("Xf[");
|
||||
bar();
|
||||
instr("Xf]");
|
||||
}
|
||||
|
||||
Then, in the emulator, when processing the events `Xf[` and `Xf]`, we
|
||||
could track of the state as follows:
|
||||
|
||||
int hook_pre_foo(struct ovni_chan *chan, int value) {
|
||||
switch(value) {
|
||||
case '[': chan_push(chan, 2); break;
|
||||
case ']': chan_pop(chan, 2); break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
int hook_pre_bar(struct ovni_chan *chan, int value) {
|
||||
switch(value) {
|
||||
case '[': chan_push(chan, 1); break;
|
||||
case ']': chan_pop(chan, 1); break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
The channel will emit the following sequence of states: 0, 1, 2, 1, 0.
|
||||
|
||||
Notice that the `chan_pop()` function uses the same state being pop()'ed
|
||||
as argument. The function checks that the stack contains the expected
|
||||
state, forcing the emulator to always receive a matching pair of enter
|
||||
and exit events.
|
||||
|
||||
## Punctual events
|
||||
|
||||
There are some conditions that are better mapped to events rather than
|
||||
to state transitions. For those cases, the channels provide punctual
|
||||
events which are emitted as a state than only has 1 ns of duration.
|
||||
|
||||
When a channel is configured to emit a punctual event with `chan_ev()`,
|
||||
it will first output the new state at the current time minus 1 ns, then
|
||||
restore the previous channel state and emit it at the current time.
|
@ -1,214 +0,0 @@
|
||||
# Emulator events
|
||||
|
||||
This file contains an exhaustive list of events supported by the emulator.
|
||||
|
||||
- Punctual events don't produce a state transition.
|
||||
- All events refer to the current thread.
|
||||
- Descriptions must be kept short.
|
||||
|
||||
```txt
|
||||
**********************************************************
|
||||
Please keep this list synchronized with the emulator code!
|
||||
**********************************************************
|
||||
|
||||
MCV = Model Category Value
|
||||
|
||||
------------------------------------------------------------
|
||||
MCV Description
|
||||
--------------------- Ovni (model=O) -----------------------
|
||||
|
||||
OHC Creates a new thread (punctual event)
|
||||
OHx Begins the execution
|
||||
OHp Pauses the execution
|
||||
OHc Enters the cooling state (about to be paused)
|
||||
OHw Enters the warming state (about to be running)
|
||||
OHe Ends the execution
|
||||
|
||||
OAs Switches it's own affinity to the given CPU
|
||||
OAr Remotely switches the affinity of the given thread
|
||||
|
||||
OB. Emits a burst event to measure latency
|
||||
|
||||
OU[ Enters a region which contain past events (HACK)
|
||||
OU] Exits the region of past events (HACK)
|
||||
|
||||
-------------------- nOS-V (model=V) ----------------------
|
||||
|
||||
VTc Creates a new task (punctual event)
|
||||
VTx Task execute
|
||||
VTe Task end
|
||||
VTp Task pause
|
||||
VTr Task resume
|
||||
|
||||
VYc Task type create (punctual event)
|
||||
|
||||
VSr Receives a task from another thread (punctual event)
|
||||
VSs Sends a task to another thread (punctual event)
|
||||
VS@ Self-assigns itself a task (punctual event)
|
||||
VSh Enters the hungry state, waiting for a task
|
||||
VSf Is no longer hungry
|
||||
VS[ Enters the scheduler server mode
|
||||
VS] Ends the scheduler server mode
|
||||
|
||||
VU[ Starts to submit a task
|
||||
VU] Ends the submission of a task
|
||||
|
||||
VMa Starts allocating memory
|
||||
VMA Ends allocating memory
|
||||
VMf Starts freeing memory
|
||||
VMF Ends freeing memory
|
||||
|
||||
VAs Enters nosv_submit()
|
||||
VAS Exits nosv_submit()
|
||||
VAp Enters nosv_pause()
|
||||
VAP Exits nosv_pause()
|
||||
VAy Enters nosv_yield()
|
||||
VAY Exits nosv_yield()
|
||||
VAw Enters nosv_waitfor()
|
||||
VAW Exits nosv_waitfor()
|
||||
VAc Enters nosv_schedpoint()
|
||||
VAC Exits nosv_schedpoint()
|
||||
|
||||
VHa Enters nosv_attach()
|
||||
VHA Exits nosv_detach()
|
||||
VHw Begins the execution as a worker
|
||||
VHW Ends the execution as a worker
|
||||
VHd Begins the execution as the delegate
|
||||
VHD Ends the execution as the delegate
|
||||
|
||||
-------------------- TAMPI (model=T) ----------------------
|
||||
|
||||
TS[ Enters MPI_Send()
|
||||
TS] Exits MPI_Send()
|
||||
|
||||
TR[ Enters MPI_Recv()
|
||||
TR] Exits MPI_Recv()
|
||||
|
||||
Ts[ Enters MPI_Isend()
|
||||
Ts] Exits MPI_Isend()
|
||||
|
||||
Tr[ Enters MPI_Irecv()
|
||||
Tr] Exits MPI_Irecv()
|
||||
|
||||
TV[ Enters MPI_Wait()
|
||||
TV] Exits MPI_Wait()
|
||||
|
||||
TW[ Enters MPI_Waitall()
|
||||
TW] Exits MPI_Waitall()
|
||||
|
||||
-------------------- OpenMP (model=M) ----------------------
|
||||
|
||||
MT[ Task begins
|
||||
MT] Task ends
|
||||
|
||||
MP] Parallel region begins
|
||||
MP[ Parallel region ends
|
||||
|
||||
-------------------- NODES (model=D) ----------------------
|
||||
|
||||
DR[ Begins the registration of a task's accesses
|
||||
DR] Ends the registration of a task's accesses
|
||||
|
||||
DU[ Begins the unregistration of a task's accesses
|
||||
DU] Ends the unregistration of a task's accesses
|
||||
|
||||
DW[ Enters a blocking condition (waiting for an If0 task)
|
||||
DW] Exits a blocking condition (waiting for an If0 task)
|
||||
|
||||
DI[ Begins the inline execution of an If0 task
|
||||
DI] Ends the inline execution of an If0 task
|
||||
|
||||
DT[ Enters a taskwait
|
||||
DT] Exits a taskwait
|
||||
|
||||
DC[ Begins the creation of a task
|
||||
DC] Ends the creation of a task
|
||||
|
||||
DS[ Begins the submit of a task
|
||||
DS] Ends the submit of a task
|
||||
|
||||
DP[ Begins the spawn of a function
|
||||
DP] Ends the spawn of a function
|
||||
|
||||
-------------------- Kernel (model=K) ----------------------
|
||||
|
||||
KCO Is out of the CPU due to a context switch
|
||||
KCI Is back in the CPU due to a context switch
|
||||
|
||||
-------------------- Nanos6 (model=6) ----------------------
|
||||
|
||||
6Tc Creates a new task
|
||||
6Tx Task execute
|
||||
6Te Task end
|
||||
6Tp Task pause
|
||||
6Tr Task resume
|
||||
|
||||
6Yc Task type create (punctual event)
|
||||
|
||||
6C[ Begins creating a new task
|
||||
6C] Ends creating a new task
|
||||
|
||||
6S[ Enters the scheduler serving mode
|
||||
6S] Ends the scheduler serving mode
|
||||
6Sa Begins to submit a ready task via addReadyTask()
|
||||
6SA Ends submitting a ready task via addReadyTask()
|
||||
6Sp Begins to process ready tasks via processReadyTasks()
|
||||
6SP Ends processing ready taska via processReadyTasks()
|
||||
6Sr Receives a task from another thread (punctual event)
|
||||
6Ss Sends a task to another thread (punctual event)
|
||||
6S@ Self-assigns itself a task (punctual event)
|
||||
|
||||
6W[ Begins the worker body loop, looking for tasks
|
||||
6W] Ends the worker body loop
|
||||
6Wt Begins handling a task via handleTask()
|
||||
6WT Ends handling a task via handleTask()
|
||||
6Ww Begins switching to another worker via switchTo()
|
||||
6WW Ends switching to another worker via switchTo()
|
||||
6Wm Begins migrating the CPU via migrate()
|
||||
6WM Ends migrating the CPU via migrate()
|
||||
6Ws Begins suspending the worker via suspend()
|
||||
6WS Ends suspending the worker via suspend()
|
||||
6Wr Begins resuming another worker via resume()
|
||||
6WR Ends resuming another worker via resume()
|
||||
6W* Signals another thread to wake up (punctual event)
|
||||
|
||||
6U[ Starts to submit a task via submitTask()
|
||||
6U] Ends the submission of a task via submitTask()
|
||||
|
||||
6F[ Begins to spawn a function via spawnFunction()
|
||||
6F] Ends spawning a function
|
||||
|
||||
6t[ Begins running the task body
|
||||
6t] Ends running the task body
|
||||
|
||||
6O[ Begins running the task body as taskfor collaborator
|
||||
6O] Ends running the task body as taskfor collaborator
|
||||
|
||||
6Dr Begins the registration of a task's accesses
|
||||
6DR Ends the registration of a task's accesses
|
||||
6Du Begins the unregistration of a task's accesses
|
||||
6DU Ends the unregistration of a task's accesses
|
||||
|
||||
6Bb Begins to block the current task via blockCurrentTask()
|
||||
6BB Ends blocking the current task via blockCurrentTask()
|
||||
6Bu Begins to unblock a task
|
||||
6BU Ends unblocking a task
|
||||
6Bw Enters taskWait()
|
||||
6BW Exits taskWait()
|
||||
6Bf Enters taskFor()
|
||||
6BF Exits taskFor()
|
||||
|
||||
6He Sets itself as external thread
|
||||
6HE Unsets itself as external thread
|
||||
6Hw Sets itself as worker thread
|
||||
6HW Unsets itself as worker thread
|
||||
6Hl Sets itself as leader thread
|
||||
6HL Unsets itself as leader thread
|
||||
6Hm Sets itself as main thread
|
||||
6HM Unsets itself as main thread
|
||||
|
||||
6Ma Begins allocating memory
|
||||
6MA Ends allocating memory
|
||||
6Mf Begins freeing memory
|
||||
6MF Ends freeing memory
|
||||
```
|
@ -1,24 +0,0 @@
|
||||
# nOS-V model
|
||||
|
||||
The nOS-V runtime is composed of tasks that can be scheduled to run in
|
||||
threads. Tasks can be paused and resumed, leaving the CPUs free to
|
||||
execute other tasks. The nOS-V model tracks the state of each task as
|
||||
well as the state of the runtime internal state.
|
||||
|
||||
## Task type colors
|
||||
|
||||
In the Paraver timeline, the color assigned to each nOS-V task type is
|
||||
computed from the task type label using a hash function; the task type
|
||||
id doesn't affect in any way how the color gets assigned. This method
|
||||
provides two desirable properties:
|
||||
|
||||
- Invariant type colors over time: the order in which task types are
|
||||
created doesn't affect their color.
|
||||
|
||||
- Deterministic colors among threads: task types with the same label end
|
||||
up mapped to the same color, even if they are from different threads
|
||||
located in different nodes.
|
||||
|
||||
For more details, see [this MR][1].
|
||||
|
||||
[1]: https://pm.bsc.es/gitlab/rarias/ovni/-/merge_requests/27
|
@ -13,8 +13,9 @@ The ovni project implements a fast instrumentation library that records
|
||||
small events (starting at 12 bytes) during the execution of programs to
|
||||
later investigate how the execution happened.
|
||||
|
||||
The instrumentation process is split in two stages: [runtime](runtime)
|
||||
tracing and [emulation](emulation/).
|
||||
The instrumentation process is split in two stages:
|
||||
[runtime](user/runtime/index.md)
|
||||
tracing and [emulation](user/emulation/index.md).
|
||||
|
||||
During runtime, very short binary events are stored on disk which
|
||||
describe what is happening. Once the execution finishes, the events are
|
||||
|
@ -1,4 +1,4 @@
|
||||
mkdocs==1.4.1
|
||||
mkdocs==1.6.0
|
||||
markdown==3.3.7
|
||||
python-markdown-math==0.8
|
||||
jinja2==3.1.2
|
||||
|
@ -1,210 +0,0 @@
|
||||
# Trace specification
|
||||
|
||||
!!! Important
|
||||
|
||||
This document refers to the trace specification for
|
||||
the version 1
|
||||
|
||||
The ovni instrumentation library stores the information collected in a
|
||||
trace following the specification of this document.
|
||||
|
||||
The complete trace is stored in a top-level directory named `ovni`.
|
||||
Inside this directory you will find the loom directories with the prefix
|
||||
`loom.`. The name of the loom is built from the `loom` parameter of
|
||||
`ovni_proc_init()`, prefixing it with `loom.`.
|
||||
|
||||
Each loom directory contains one directory per process of that loom. The
|
||||
name is composed of the `proc.` prefix and the PID of the process
|
||||
specified in the `pid` argument to `ovni_proc_init()`.
|
||||
|
||||
Each process directory contains:
|
||||
|
||||
- The metadata file `metadata.json`.
|
||||
- The thread streams with prefix `thread.`.
|
||||
|
||||
## Process metadata
|
||||
|
||||
The metadata file contains important information about the trace that is
|
||||
invariant during the complete execution, and generally is required to be
|
||||
available prior to processing the events in the trace.
|
||||
|
||||
The metadata is stored in the JSON file `metadata.json` inside each
|
||||
process directory and contains the following keys:
|
||||
|
||||
- `version`: a number specifying the version of the metadata format.
|
||||
- `model_version`: a string with the version of each model supported by
|
||||
the emulator.
|
||||
- `app_id`: the application ID, used to distinguish between applications
|
||||
running on the same loom.
|
||||
- `rank`: the rank of the MPI process (optional).
|
||||
- `nranks`: number of total MPI processes (optional).
|
||||
- `cpus`: the array of $`N_c`$ CPUs available in the loom. Only one
|
||||
process in the loom must contain this mandatory key. Each element is a
|
||||
dictionary with the keys:
|
||||
- `index`: containing the logical CPU index from 0 to $`N_c - 1`$.
|
||||
- `phyid`: the number of the CPU as given by the operating system
|
||||
(which can exceed $`N_c`$).
|
||||
|
||||
Here is an example of the `metadata.json` file:
|
||||
|
||||
```
|
||||
{
|
||||
"version": 1,
|
||||
"model_version": "O1 V1 T1 M1 D1 K1",
|
||||
"app_id": 1,
|
||||
"rank": 0,
|
||||
"nranks": 4,
|
||||
"cpus": [
|
||||
{
|
||||
"index": 0,
|
||||
"phyid": 0
|
||||
},
|
||||
{
|
||||
"index": 1,
|
||||
"phyid": 1
|
||||
},
|
||||
{
|
||||
"index": 2,
|
||||
"phyid": 2
|
||||
},
|
||||
{
|
||||
"index": 3,
|
||||
"phyid": 3
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## Thread streams
|
||||
|
||||
Streams are a binary files that contains a succession of events with
|
||||
monotonically increasing clock values. Streams have a small header and
|
||||
the variable size events just after the header.
|
||||
|
||||
The header contains the magic 4 bytes of "ovni" and a version number of
|
||||
4 bytes too. Here is a figure of the data stored in disk:
|
||||
|
||||

|
||||
|
||||
Similarly, events have a fixed size header followed by an optional
|
||||
payload of varying size. The header has the following information:
|
||||
|
||||
- Event flags
|
||||
- Payload size in a special format
|
||||
- Model, category and value codes
|
||||
- Time in nanoseconds
|
||||
|
||||
The event size can vary depending on the data stored in the payload. The
|
||||
payload size is specified using 4 bits, with the value `0x0` for no
|
||||
payload, or with value $`v`$ for $`v + 1`$ bytes of payload. This allows
|
||||
us to use 16 bytes of payload with value `0xf` at the cost of
|
||||
sacrificing payloads of one byte.
|
||||
|
||||
There are two types of events, depending of the size needed for the
|
||||
payload:
|
||||
|
||||
- Normal events: with a payload up to 16 bytes
|
||||
- Jumbo events: with a payload up to $`2^{32}`$ bytes
|
||||
|
||||
## Normal events
|
||||
|
||||
The normal events are composed of:
|
||||
|
||||
- 4 bits of flags
|
||||
- 4 bits of payload size
|
||||
- 3 bytes for the MCV
|
||||
- 8 bytes for the clock
|
||||
- 0 to 16 bytes of payload
|
||||
|
||||
Here is an example of a normal event without payload, a total of 12
|
||||
bytes:
|
||||
|
||||
```
|
||||
00 4f 48 65 01 c5 cf 1d 96 d0 12 00 |.OHe........|
|
||||
```
|
||||
|
||||
And in the following figure you can see every field annotated:
|
||||
|
||||

|
||||
|
||||
Another example of a normal event with 16 bytes of payload, a total of
|
||||
28 bytes:
|
||||
|
||||
```
|
||||
0f 4f 48 78 58 c1 b0 b5 95 43 11 00 00 00 00 00 |.OHxX....C......|
|
||||
ff ff ff ff 00 00 00 00 00 00 00 00 |............|
|
||||
```
|
||||
|
||||
In the following figure you can see each field annotated:
|
||||
|
||||

|
||||
|
||||
## Jumbo events
|
||||
|
||||
The jumbo events are just like normal events but they can hold large
|
||||
data. The size of the jumbo data is stored as a 32 bits integer as a
|
||||
normal payload, and the jumbo data just follows the event.
|
||||
|
||||
- 4 bits of flags
|
||||
- 4 bits of payload size (always 4 with value 0x3)
|
||||
- 3 bytes for the MCV
|
||||
- 8 bytes for the clock
|
||||
- 4 bytes of payload with the size of the jumbo data
|
||||
- 0 to 2^32 bytes of jumbo data
|
||||
|
||||
Example of a jumbo event of 30 bytes in total, with 14 bytes of jumbo
|
||||
data:
|
||||
|
||||
```
|
||||
13 56 59 63 eb c1 4b 1a 96 d0 12 00 0e 00 00 00 |.VYc..K.........|
|
||||
01 00 00 00 74 65 73 74 74 79 70 65 31 00 |....testtype1.|
|
||||
```
|
||||
|
||||
In the following figure you can see each field annotated:
|
||||
|
||||

|
||||
|
||||
## Design considerations
|
||||
|
||||
The stream format has been designed to be very simple, so writing a
|
||||
parser library would take no more than 2 days for a single developer.
|
||||
|
||||
The size of the events has been designed to be small, with 12 bytes per
|
||||
event when no payload is used.
|
||||
|
||||
!!! Caution
|
||||
|
||||
The events are stored in disk following the endianness of the
|
||||
machine where they are generated. So a stream generated with a
|
||||
little endian machine would be different than on a big endian
|
||||
machine. We assume the same endiannes is used to write the trace
|
||||
at runtime and read it after, at the emulation process.
|
||||
|
||||
The events are designed to be easily identified when looking at the
|
||||
raw stream in binary, as the MCV codes can be read as ASCII characters:
|
||||
|
||||
```
|
||||
00000000 6f 76 6e 69 01 00 00 00 0f 4f 48 78 08 ba 2e 5c |ovni.....OHx...\|
|
||||
00000010 b5 b0 00 00 00 00 00 00 ff ff ff ff 00 00 00 00 |................|
|
||||
00000020 00 00 00 00 13 56 59 63 3c c2 2e 5c b5 b0 00 00 |.....VYc<..\....|
|
||||
00000030 0e 00 00 00 01 00 00 00 74 65 73 74 74 79 70 65 |........testtype|
|
||||
00000040 31 00 07 56 54 63 43 cc 2e 5c b5 b0 00 00 01 00 |1..VTcC..\......|
|
||||
00000050 00 00 01 00 00 00 03 56 54 78 03 cd 2e 5c b5 b0 |.......VTx...\..|
|
||||
00000060 00 00 01 00 00 00 03 56 54 70 2b 7d 37 5c b5 b0 |.......VTp+}7\..|
|
||||
00000070 00 00 01 00 00 00 03 56 54 72 c3 4d 40 5c b5 b0 |.......VTr.M@\..|
|
||||
00000080 00 00 01 00 00 00 03 56 54 65 03 36 49 5c b5 b0 |.......VTe.6I\..|
|
||||
00000090 00 00 01 00 00 00 00 4f 48 65 f5 36 49 5c b5 b0 |.......OHe.6I\..|
|
||||
000000a0 00 00 |..|
|
||||
```
|
||||
|
||||
This allows a human to detect signs of corruption by visually inspecting
|
||||
the streams.
|
||||
|
||||
## Limitations
|
||||
|
||||
The streams are designed to be read only forward, as they only contain
|
||||
the size of each event in the header.
|
||||
|
||||
Currently, we only support using the threads as sources of events, using
|
||||
one stream per thread. However, adding support for more streams from
|
||||
multiple sources is planned for the future.
|
62
doc/user/concepts/part-model.md
Normal file
@ -0,0 +1,62 @@
|
||||
# Part model
|
||||
|
||||
Ovni has a model to represent the hardware components as well as the software
|
||||
concepts like threads or processes. Each concept is considered to be a *part*.
|
||||
Here is an example diagram depicting the part hierarchy:
|
||||
|
||||

|
||||
|
||||
Notice how a loom can restrict the CPUs of the node to its child processes.
|
||||
|
||||
## Software parts
|
||||
|
||||
These are not physical parts, but they abstract common concepts.
|
||||
|
||||
### Thread
|
||||
|
||||
A thread in ovni is directly mapped to a [POSIX
|
||||
thread](https://en.wikipedia.org/wiki/Pthreads) and they are identified by a
|
||||
`TID` which must be unique in a [node](#node). Threads in ovni have [a model with
|
||||
an internal state](../emulation/ovni.md/#thread_model) that tries to tracks the
|
||||
state of the real thread.
|
||||
|
||||
### Process
|
||||
|
||||
A process is directly mapped to a UNIX
|
||||
[process](https://en.wikipedia.org/wiki/Process_(computing)) and they are
|
||||
identified by a `PID` number which must be unique in a [node](#node).
|
||||
|
||||
### Loom
|
||||
|
||||
A loom has no direct mapping to a usual concept. It consists of a set of
|
||||
[CPUs](#cpu) from the same node and a set of processes that can *only run in
|
||||
those CPUs*. Each CPUs must belong to one and only one loom. It is often used
|
||||
to group CPUs that belong to the same process when running workloads with
|
||||
multiple processes (like with MPI).
|
||||
|
||||
Each loom has a virtual CPU which collects running threads that are not
|
||||
exclusively assigned to a physical CPU, so we cannot determine on which CPU they
|
||||
are running.
|
||||
|
||||
## Hardware parts
|
||||
|
||||
These parts have a physical object assigned.
|
||||
|
||||
### CPU
|
||||
|
||||
A CPU is a hardware thread that can execute at most one thread at a time. Each
|
||||
CPU must have a physical ID that is unique in a node. In ovni there is also a
|
||||
virtual CPU, which simply is used to collect threads that are not tied to an
|
||||
specific physical CPU, so it cannot be easily determined where they are running.
|
||||
|
||||
### Node
|
||||
|
||||
A *node* refers to a compute node, often a physical machine with memory and
|
||||
network which may contain one or more
|
||||
[sockets](https://en.wikipedia.org/wiki/CPU_socket), where each socket has one
|
||||
or more CPUs.
|
||||
|
||||
### System
|
||||
|
||||
A system represents the complete set of hardware parts and software parts that
|
||||
are known to ovni in a given trace.
|
516
doc/user/concepts/part-model.svg
Normal file
@ -0,0 +1,516 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="306.91663mm"
|
||||
height="127.00001mm"
|
||||
viewBox="0 0 306.91663 127.00001"
|
||||
version="1.1"
|
||||
id="svg1"
|
||||
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25, custom)"
|
||||
sodipodi:docname="part-model.svg"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#999999"
|
||||
borderopacity="1"
|
||||
inkscape:showpageshadow="0"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:document-units="mm"
|
||||
showgrid="false"
|
||||
inkscape:zoom="0.73049944"
|
||||
inkscape:cx="629.70616"
|
||||
inkscape:cy="280.62992"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1031"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="24"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="layer1">
|
||||
<inkscape:grid
|
||||
id="grid1"
|
||||
units="px"
|
||||
originx="-74.083327"
|
||||
originy="-89.958345"
|
||||
spacingx="0.26458333"
|
||||
spacingy="0.26458334"
|
||||
empcolor="#7a7aff"
|
||||
empopacity="0.25098039"
|
||||
color="#6a6aff"
|
||||
opacity="0.1254902"
|
||||
empspacing="5"
|
||||
dotted="false"
|
||||
gridanglex="30"
|
||||
gridanglez="30"
|
||||
visible="false" />
|
||||
</sodipodi:namedview>
|
||||
<defs
|
||||
id="defs1" />
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-74.083328,-89.958344)">
|
||||
<rect
|
||||
style="fill:none;stroke:none;stroke-width:0.264999;stroke-linecap:square;stroke-dasharray:none;stroke-dashoffset:0"
|
||||
id="rect33"
|
||||
width="306.91663"
|
||||
height="127.00001"
|
||||
x="74.083328"
|
||||
y="89.958344" />
|
||||
<rect
|
||||
style="fill:#ffeeaa;stroke:#000000;stroke-width:0.2;stroke-linecap:square;stroke-dasharray:none;stroke-dashoffset:0"
|
||||
id="rect32"
|
||||
width="121.70832"
|
||||
height="84.666679"
|
||||
x="253.99998"
|
||||
y="127.00001" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:6.35px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="290.19363"
|
||||
y="202.25124"
|
||||
id="text32"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan32"
|
||||
style="font-size:6.35px;stroke-width:0.264583"
|
||||
x="290.19363"
|
||||
y="202.25124">Hardware parts</tspan></text>
|
||||
<rect
|
||||
style="fill:#eeffaa;stroke:#000000;stroke-width:0.2;stroke-linecap:square;stroke-dasharray:none;stroke-dashoffset:0"
|
||||
id="rect31"
|
||||
width="169.33333"
|
||||
height="84.666679"
|
||||
x="79.374992"
|
||||
y="127.00001" />
|
||||
<rect
|
||||
style="fill:#fff6d5;stroke:#000000;stroke-width:0.3;stroke-linecap:square;stroke-dasharray:none;stroke-dashoffset:0"
|
||||
id="rect27"
|
||||
width="47.625004"
|
||||
height="21.166676"
|
||||
x="269.87497"
|
||||
y="148.16667"
|
||||
ry="2.645834" />
|
||||
<rect
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.2;stroke-linecap:square;stroke-dasharray:none"
|
||||
id="rect1"
|
||||
width="21.166662"
|
||||
height="10.583329"
|
||||
x="84.566666"
|
||||
y="174.52502"
|
||||
ry="0" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="87.947342"
|
||||
y="181.39488"
|
||||
id="text1"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan1"
|
||||
style="stroke-width:0.264583"
|
||||
x="87.947342"
|
||||
y="181.39488">Thread</tspan></text>
|
||||
<rect
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.2;stroke-linecap:square;stroke-dasharray:none"
|
||||
id="rect3"
|
||||
width="21.166664"
|
||||
height="10.583337"
|
||||
x="111.12499"
|
||||
y="153.45834"
|
||||
ry="0" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="113.57446"
|
||||
y="160.26309"
|
||||
id="text3"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3"
|
||||
style="stroke-width:0.264583"
|
||||
x="113.57446"
|
||||
y="160.26309">Process</tspan></text>
|
||||
<rect
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.2;stroke-linecap:square;stroke-dasharray:none"
|
||||
id="rect4"
|
||||
width="21.166664"
|
||||
height="10.583333"
|
||||
x="111.12499"
|
||||
y="174.62502"
|
||||
ry="0" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="114.50567"
|
||||
y="181.49487"
|
||||
id="text4"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4"
|
||||
style="stroke-width:0.264583"
|
||||
x="114.50567"
|
||||
y="181.49487">Thread</tspan></text>
|
||||
<rect
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.2;stroke-linecap:square;stroke-dasharray:none"
|
||||
id="rect5"
|
||||
width="21.166658"
|
||||
height="10.583333"
|
||||
x="137.58333"
|
||||
y="174.62502"
|
||||
ry="0" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="140.964"
|
||||
y="181.49487"
|
||||
id="text5"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan5"
|
||||
style="stroke-width:0.264583"
|
||||
x="140.964"
|
||||
y="181.49487">Thread</tspan></text>
|
||||
<rect
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.2;stroke-linecap:square;stroke-dasharray:none"
|
||||
id="rect6"
|
||||
width="21.166672"
|
||||
height="10.583333"
|
||||
x="169.33331"
|
||||
y="174.62502"
|
||||
ry="0" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="172.71399"
|
||||
y="181.49487"
|
||||
id="text6"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan6"
|
||||
style="stroke-width:0.264583"
|
||||
x="172.71399"
|
||||
y="181.49487">Thread</tspan></text>
|
||||
<rect
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.2;stroke-linecap:square;stroke-dasharray:none"
|
||||
id="rect7"
|
||||
width="20.966642"
|
||||
height="10.38336"
|
||||
x="195.99167"
|
||||
y="153.55833"
|
||||
ry="0" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="198.24112"
|
||||
y="160.16312"
|
||||
id="text7"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan7"
|
||||
style="stroke-width:0.264583"
|
||||
x="198.24112"
|
||||
y="160.16312">Process</tspan></text>
|
||||
<rect
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.2;stroke-linecap:square;stroke-dasharray:none"
|
||||
id="rect8"
|
||||
width="21.16667"
|
||||
height="10.583333"
|
||||
x="195.79164"
|
||||
y="174.62502"
|
||||
ry="0" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="199.17232"
|
||||
y="181.49487"
|
||||
id="text8"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan8"
|
||||
style="stroke-width:0.264583"
|
||||
x="199.17232"
|
||||
y="181.49487">Thread</tspan></text>
|
||||
<rect
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.2;stroke-linecap:square;stroke-dasharray:none"
|
||||
id="rect9"
|
||||
width="21.166666"
|
||||
height="10.583333"
|
||||
x="222.24997"
|
||||
y="174.62502"
|
||||
ry="0" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="225.63065"
|
||||
y="181.49487"
|
||||
id="text9"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan9"
|
||||
style="stroke-width:0.264583"
|
||||
x="225.63065"
|
||||
y="181.49487">Thread</tspan></text>
|
||||
<rect
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.2;stroke-linecap:square;stroke-dasharray:none"
|
||||
id="rect10"
|
||||
width="21.166658"
|
||||
height="10.583337"
|
||||
x="153.45833"
|
||||
y="132.29167"
|
||||
ry="0" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="158.21979"
|
||||
y="139.09644"
|
||||
id="text10"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan10"
|
||||
style="stroke-width:0.264583"
|
||||
x="158.21979"
|
||||
y="139.09644">Loom</tspan></text>
|
||||
<rect
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.2;stroke-linecap:square;stroke-dasharray:none"
|
||||
id="rect11"
|
||||
width="21.166651"
|
||||
height="10.58334"
|
||||
x="306.91666"
|
||||
y="132.29167"
|
||||
ry="0" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="311.88068"
|
||||
y="139.16154"
|
||||
id="text11"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan11"
|
||||
style="stroke-width:0.264583"
|
||||
x="311.88068"
|
||||
y="139.16154">Node</tspan></text>
|
||||
<rect
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.2;stroke-linecap:square;stroke-dasharray:none"
|
||||
id="rect12"
|
||||
width="15.875001"
|
||||
height="10.583341"
|
||||
x="275.16666"
|
||||
y="153.45834"
|
||||
ry="0" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="278.86566"
|
||||
y="160.291"
|
||||
id="text12"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan12"
|
||||
style="stroke-width:0.264583"
|
||||
x="278.86566"
|
||||
y="160.291">CPU</tspan></text>
|
||||
<rect
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.2;stroke-linecap:square;stroke-dasharray:none"
|
||||
id="rect13"
|
||||
width="15.874983"
|
||||
height="10.583341"
|
||||
x="296.33334"
|
||||
y="153.45834"
|
||||
ry="0" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="300.03235"
|
||||
y="160.291"
|
||||
id="text13"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan13"
|
||||
style="stroke-width:0.264583"
|
||||
x="300.03235"
|
||||
y="160.291">CPU</tspan></text>
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 121.70832,164.04168 0,10.58334"
|
||||
id="path15"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#rect3"
|
||||
inkscape:connection-end="#rect4" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 206.45046,163.94169 -0.0505,10.68333"
|
||||
id="path16"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#rect7"
|
||||
inkscape:connection-end="#rect8" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 212.94006,163.94169 13.30366,10.68333"
|
||||
id="path17"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-end="#rect9"
|
||||
inkscape:connection-start="#rect7" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 199.96086,163.94169 -13.40463,10.68333"
|
||||
id="path18"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#rect7"
|
||||
inkscape:connection-end="#rect6" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 128.32291,164.04168 13.22917,10.58334"
|
||||
id="path19"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#rect3"
|
||||
inkscape:connection-end="#rect5" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 115.03723,164.04168 -13.21614,10.48334"
|
||||
id="path20"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#rect3"
|
||||
inkscape:connection-end="#rect1" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 153.45833,142.87501 -21.16667,10.58333"
|
||||
id="path21"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#rect10"
|
||||
inkscape:connection-end="#rect3" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 174.62499,142.86254 21.44212,10.69579"
|
||||
id="path22"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#rect10"
|
||||
inkscape:connection-end="#rect7" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 314.19269,142.87501 -6.61457,10.58333"
|
||||
id="path24"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#rect11"
|
||||
inkscape:connection-end="#rect13" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 308.90102,142.87501 291.04166,153.8654"
|
||||
id="path25"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#rect11"
|
||||
inkscape:connection-end="#rect12" />
|
||||
<rect
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.2;stroke-linecap:square;stroke-dasharray:none"
|
||||
id="rect25"
|
||||
width="15.875013"
|
||||
height="10.583337"
|
||||
x="322.79163"
|
||||
y="153.45834"
|
||||
ry="0" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="326.49063"
|
||||
y="160.291"
|
||||
id="text25"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan25"
|
||||
style="stroke-width:0.264583"
|
||||
x="326.49063"
|
||||
y="160.291">CPU</tspan></text>
|
||||
<rect
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.2;stroke-linecap:square;stroke-dasharray:none"
|
||||
id="rect26"
|
||||
width="15.874991"
|
||||
height="10.583337"
|
||||
x="343.95831"
|
||||
y="153.45834"
|
||||
ry="0" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="347.65732"
|
||||
y="160.291"
|
||||
id="text26"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan26"
|
||||
style="stroke-width:0.264583"
|
||||
x="347.65732"
|
||||
y="160.291">CPU</tspan></text>
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 320.80727,142.87501 6.61457,10.58333"
|
||||
id="path26"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#rect11"
|
||||
inkscape:connection-end="#rect25" />
|
||||
<path
|
||||
style="display:inline;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 326.09894,142.87501 17.85937,10.99039"
|
||||
id="path27"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#rect11"
|
||||
inkscape:connection-end="#rect26" />
|
||||
<path
|
||||
style="display:inline;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.265;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="m 174.62499,139.70001 95.24998,19.05"
|
||||
id="path28"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#rect10" />
|
||||
<rect
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.2;stroke-linecap:square;stroke-dasharray:none"
|
||||
id="rect29"
|
||||
width="21.166666"
|
||||
height="10.583335"
|
||||
x="216.95831"
|
||||
y="95.250008"
|
||||
ry="0" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="219.6889"
|
||||
y="101.67236"
|
||||
id="text29"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan29"
|
||||
style="stroke-width:0.264583"
|
||||
x="219.6889"
|
||||
y="101.67236">System</tspan></text>
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 238.12498,104.89952 68.79168,28.32598"
|
||||
id="path29"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#rect29"
|
||||
inkscape:connection-end="#rect11" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 218.47022,105.83334 -45.35713,26.45833"
|
||||
id="path30"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#rect29"
|
||||
inkscape:connection-end="#rect10" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:6.35px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="140.81671"
|
||||
y="202.25124"
|
||||
id="text31"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan31"
|
||||
style="font-size:6.35px;stroke-width:0.264583"
|
||||
x="140.81671"
|
||||
y="202.25124">Software parts</tspan></text>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 18 KiB |
123
doc/user/concepts/trace.md
Normal file
@ -0,0 +1,123 @@
|
||||
# Trace concepts
|
||||
|
||||
When using libovni to generate traces or the emulator to process them, there are
|
||||
several concepts to keep in mind.
|
||||
|
||||
## Trace elements
|
||||
|
||||
The information generated by a program or later processed by other ovni tools is
|
||||
known as a trace. A runtime trace stores the information as-is in disk from a
|
||||
program execution. While a emulation trace is generated from the runtime trace
|
||||
for visualization with Paraver.
|
||||
|
||||
Both runtime and emulation traces are always stored inside the same directory,
|
||||
by default `ovni/`, which is known as the *trace directory*.
|
||||
|
||||
Here are the components of a runtime trace, as generated by libovni:
|
||||
|
||||
<p align="center">
|
||||
<img alt="Trace concepts" src="../trace.svg">
|
||||
</p>
|
||||
|
||||
### Stream
|
||||
|
||||
A stream is a directory which contains a binary stream and the associated stream
|
||||
metadata file. Each stream is associated with a given part of a system. As of
|
||||
now, libovni can only generate streams associated to [threads](part-model.md#thread).
|
||||
|
||||
### Stream metadata
|
||||
|
||||
The stream metadata is a JSON file named `stream.json` which holds information
|
||||
about the stream itself.
|
||||
|
||||
### Binary stream
|
||||
|
||||
A binary stream is a file named `stream.obs` (.obs stands for Ovni Binary
|
||||
Stream) composed of a header and a concatenated array of events without padding.
|
||||
Notice that each event may have different length.
|
||||
|
||||
### Event
|
||||
|
||||
An event is a point in time that has some information associated. Events written
|
||||
at runtime by libovni have at MCV, a clock and a optional payload. The list of
|
||||
all events recognized by the emulator can be found [here](../emulation/events.md).
|
||||
|
||||
Events can be displayed by ovnidump, which shows an explanation of what the
|
||||
event means:
|
||||
|
||||
```txt
|
||||
$ ovnidump ovni/loom.hop.nosv-u1000/proc.1121064 | grep -A 10 VTx | head
|
||||
517267929632815 VTx thread.1121064 executes the task 1 with bodyid 0
|
||||
517267930261672 VYc thread.1121064 creates task type 2 with label "task"
|
||||
517267930875858 VTC thread.1121064 creates parallel task 2 with type 2
|
||||
517267930877789 VU[ thread.1121064 starts submitting a task
|
||||
517267930877990 VU] thread.1121064 stops submitting a task
|
||||
517267930878098 VTC thread.1121064 creates parallel task 3 with type 2
|
||||
517267930878196 VU[ thread.1121064 starts submitting a task
|
||||
517267930878349 VU] thread.1121064 stops submitting a task
|
||||
517267930878432 VTC thread.1121064 creates parallel task 4 with type 2
|
||||
517267930878494 VU[ thread.1121064 starts submitting a task
|
||||
```
|
||||
|
||||
There are two types or events: normal and jumbo events, the latter can hold
|
||||
large attached payloads.
|
||||
|
||||
### MCV
|
||||
|
||||
The MCV acronym is the abbreviation of Model-Class-Value, which are a three
|
||||
characters that identify any event. The MCV is shown in the ovnitop and ovnidump
|
||||
tools and allows easy filtering with grep, for a single or related events:
|
||||
|
||||
```
|
||||
$ ovnitop ovni | grep VT
|
||||
VTe 20002
|
||||
VTx 20002
|
||||
VTC 200
|
||||
VTc 2
|
||||
VTp 1
|
||||
VTr 1
|
||||
```
|
||||
|
||||
### Clock
|
||||
|
||||
A clock is a 64 bit counter, which counts the number of nanoseconds from an
|
||||
arbitrary point in time in the past. Each event has the value of the clock
|
||||
stored inside, to indicate when that event happened. In a given trace there can
|
||||
be multiple clocks which don't refer to the same point in the past and must be
|
||||
corrected so they all produce an ordered sequence of events. The ovnisync
|
||||
program performs this correction by measuring the difference across clocks of
|
||||
different nodes.
|
||||
|
||||
### Payload
|
||||
|
||||
Events may have associated additional information which is stored in the stream.
|
||||
Normal events can hold up to 16 bytes, otherwise the jumbo events must be used
|
||||
to hold additional payload.
|
||||
|
||||
## Other related concepts
|
||||
|
||||
Apart from the trace itself, there are other concepts to keep in mind when the
|
||||
trace is being processed by the emulator.
|
||||
|
||||
### Event model
|
||||
|
||||
Each event belongs to an event model, as identified by the model character in
|
||||
the MCV. An event model is composed of several components:
|
||||
|
||||
- A set of [events](#event) all with the same model identifier in the
|
||||
[MCV](#mcv)
|
||||
- The emulator code that processes those events.
|
||||
- A human readable name, like `ovni` or `nanos6`.
|
||||
- A semantic version.
|
||||
|
||||
### State
|
||||
|
||||
A state is a discrete value that can change over time based on the events the
|
||||
emulator receives. Usually a single event causes a single state change, which is
|
||||
then written to the Paraver traces. An example is the thread state, which can
|
||||
change over time based on the events `OH*` that indicate a state transition
|
||||
of the current thread.
|
||||
|
||||
In contrast with an event, states have a duration associated which can usually
|
||||
be observed in Paraver. Notice that the trace only contains events, the states
|
||||
are computed at emulation.
|
474
doc/user/concepts/trace.svg
Normal file
@ -0,0 +1,474 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="116.41666mm"
|
||||
height="105.83334mm"
|
||||
viewBox="0 0 116.41666 105.83334"
|
||||
version="1.1"
|
||||
id="svg1"
|
||||
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25, custom)"
|
||||
sodipodi:docname="trace.svg"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#999999"
|
||||
borderopacity="1"
|
||||
inkscape:showpageshadow="0"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:document-units="mm"
|
||||
showgrid="true"
|
||||
inkscape:zoom="1.4609989"
|
||||
inkscape:cx="248.80238"
|
||||
inkscape:cy="199.17879"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1031"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="24"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="layer1">
|
||||
<inkscape:grid
|
||||
id="grid1"
|
||||
units="px"
|
||||
originx="-39.687498"
|
||||
originy="-15.875"
|
||||
spacingx="0.26458333"
|
||||
spacingy="0.26458334"
|
||||
empcolor="#7a7aff"
|
||||
empopacity="0.25098039"
|
||||
color="#6a6aff"
|
||||
opacity="0.1254902"
|
||||
empspacing="5"
|
||||
dotted="false"
|
||||
gridanglex="30"
|
||||
gridanglez="30"
|
||||
visible="true" />
|
||||
</sodipodi:namedview>
|
||||
<defs
|
||||
id="defs1">
|
||||
<rect
|
||||
x="45"
|
||||
y="370"
|
||||
width="209.99998"
|
||||
height="35"
|
||||
id="rect15" />
|
||||
</defs>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-39.687498,-15.875)">
|
||||
<g
|
||||
id="g59"
|
||||
transform="translate(5.5781353,-0.74017783)"
|
||||
style="stroke-width:0.15875;stroke-dasharray:none">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;stroke-width:0.15875;stroke-dasharray:none"
|
||||
x="100.23113"
|
||||
y="24.896034"
|
||||
id="text22"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan22"
|
||||
style="text-align:center;text-anchor:middle;stroke-width:0.15875;stroke-dasharray:none"
|
||||
x="100.23113"
|
||||
y="24.896034">Trace</tspan></text>
|
||||
<rect
|
||||
style="fill:none;stroke:#000000;stroke-width:0.15875;stroke-linecap:square;stroke-dasharray:none"
|
||||
id="rect32"
|
||||
width="15.875"
|
||||
height="7.9375005"
|
||||
x="92.281235"
|
||||
y="19.4142" />
|
||||
</g>
|
||||
<g
|
||||
id="g57"
|
||||
transform="translate(-0.84260657,-0.98969722)"
|
||||
style="stroke-width:0.15875;stroke-dasharray:none">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;stroke-width:0.15875;stroke-dasharray:none"
|
||||
x="106.39689"
|
||||
y="46.186943"
|
||||
id="text24"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan24"
|
||||
style="text-align:center;text-anchor:middle;stroke-width:0.15875;stroke-dasharray:none"
|
||||
x="106.39689"
|
||||
y="46.186943">Stream</tspan></text>
|
||||
<rect
|
||||
style="fill:none;stroke:#000000;stroke-width:0.15875;stroke-linecap:square;stroke-dasharray:none"
|
||||
id="rect33"
|
||||
width="21.166666"
|
||||
height="7.9375019"
|
||||
x="96.092606"
|
||||
y="40.6772" />
|
||||
</g>
|
||||
<g
|
||||
id="g56"
|
||||
transform="translate(0.32292488,-0.89336269)"
|
||||
style="stroke-width:0.15875;stroke-dasharray:none">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;stroke-width:0.15875;stroke-dasharray:none"
|
||||
x="78.773026"
|
||||
y="46.090603"
|
||||
id="text23"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan23"
|
||||
style="text-align:center;text-anchor:middle;stroke-width:0.15875;stroke-dasharray:none"
|
||||
x="78.773026"
|
||||
y="46.090603">Stream</tspan></text>
|
||||
<rect
|
||||
style="fill:none;stroke:#000000;stroke-width:0.15875;stroke-linecap:square;stroke-dasharray:none"
|
||||
id="rect34"
|
||||
width="21.166666"
|
||||
height="7.9375"
|
||||
x="68.468742"
|
||||
y="40.580864" />
|
||||
</g>
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.15875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 100.80665,26.611522 84.365216,39.687501"
|
||||
id="path35"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#rect32"
|
||||
inkscape:connection-end="#rect34" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.15875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 105.80376,26.611522 0.0227,13.075981"
|
||||
id="path36"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#rect32"
|
||||
inkscape:connection-end="#rect33" />
|
||||
<g
|
||||
id="g54"
|
||||
style="stroke-width:0.15875;stroke-dasharray:none"
|
||||
transform="translate(-0.99999828,-3.5391978)">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;stroke-width:0.15875;stroke-dasharray:none"
|
||||
x="58.792854"
|
||||
y="72.586143"
|
||||
id="text25"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan25"
|
||||
style="text-align:center;text-anchor:middle;stroke-width:0.15875;stroke-dasharray:none"
|
||||
x="58.792854"
|
||||
y="72.586143">Metadata</tspan></text>
|
||||
<rect
|
||||
style="fill:none;stroke:#000000;stroke-width:0.15875;stroke-linecap:square;stroke-dasharray:none"
|
||||
id="rect36"
|
||||
width="26.458336"
|
||||
height="7.9375"
|
||||
x="45.979164"
|
||||
y="67.0392" />
|
||||
</g>
|
||||
<g
|
||||
id="g55"
|
||||
style="stroke-width:0.15875;stroke-dasharray:none"
|
||||
transform="translate(-0.99999828,-3.5391978)">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;stroke-width:0.15875;stroke-dasharray:none"
|
||||
x="97.157433"
|
||||
y="72.175835"
|
||||
id="text26"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan26"
|
||||
style="text-align:center;text-anchor:middle;stroke-width:0.15875;stroke-dasharray:none"
|
||||
x="97.157433"
|
||||
y="72.175835">Binary stream</tspan></text>
|
||||
<rect
|
||||
style="fill:none;stroke:#000000;stroke-width:0.15875;stroke-linecap:square;stroke-dasharray:none"
|
||||
id="rect37"
|
||||
width="34.395832"
|
||||
height="7.9375"
|
||||
x="80.374992"
|
||||
y="67.0392" />
|
||||
</g>
|
||||
<rect
|
||||
style="stroke-width:0.15875;stroke-dasharray:none;fill:none;stroke:none;stroke-linecap:square"
|
||||
id="rect60"
|
||||
width="116.41666"
|
||||
height="105.83334"
|
||||
x="40.687496"
|
||||
y="19.414198"
|
||||
inkscape:label="background"
|
||||
transform="translate(-0.99999735,-3.5391979)" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.15875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 75.847223,47.625001 61.736111,63.500002"
|
||||
id="path37"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#rect34"
|
||||
inkscape:connection-end="#rect36" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.15875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 82.241318,47.625001 93.706592,63.500002"
|
||||
id="path38"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#rect34"
|
||||
inkscape:connection-end="#rect37" />
|
||||
<g
|
||||
id="g53"
|
||||
style="stroke-width:0.15875;stroke-dasharray:none"
|
||||
transform="translate(-8.2507438,-3.0742007)">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;stroke-width:0.15875;stroke-dasharray:none"
|
||||
x="62.074863"
|
||||
y="95.933655"
|
||||
id="text27"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan27"
|
||||
style="text-align:center;text-anchor:middle;stroke-width:0.15875;stroke-dasharray:none"
|
||||
x="62.074863"
|
||||
y="95.933655">Header</tspan></text>
|
||||
<rect
|
||||
style="fill:none;stroke:#000000;stroke-width:0.15875;stroke-linecap:square;stroke-dasharray:none"
|
||||
id="rect38"
|
||||
width="23.812506"
|
||||
height="7.9375014"
|
||||
x="50.584076"
|
||||
y="90.386703" />
|
||||
</g>
|
||||
<g
|
||||
id="g52"
|
||||
transform="translate(-8.2507438,-3.3066989)"
|
||||
style="stroke-width:0.15875;stroke-dasharray:none">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;stroke-width:0.15875;stroke-dasharray:none"
|
||||
x="91.411552"
|
||||
y="96.101036"
|
||||
id="text28"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan28"
|
||||
style="text-align:center;text-anchor:middle;stroke-width:0.15875;stroke-dasharray:none"
|
||||
x="91.411552"
|
||||
y="96.101036">Event</tspan></text>
|
||||
<rect
|
||||
style="fill:none;stroke:#000000;stroke-width:0.15875;stroke-linecap:square;stroke-dasharray:none"
|
||||
id="rect39"
|
||||
width="23.812506"
|
||||
height="7.9375014"
|
||||
x="79.920769"
|
||||
y="90.619202" />
|
||||
</g>
|
||||
<g
|
||||
id="g51"
|
||||
style="stroke-width:0.15875;stroke-dasharray:none"
|
||||
transform="translate(-8.2507438,-3.0742007)">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;stroke-width:0.15875;stroke-dasharray:none"
|
||||
x="120.28321"
|
||||
y="95.868538"
|
||||
id="text29"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan29"
|
||||
style="text-align:center;text-anchor:middle;stroke-width:0.15875;stroke-dasharray:none"
|
||||
x="120.28321"
|
||||
y="95.868538">Event</tspan></text>
|
||||
<rect
|
||||
style="fill:none;stroke:#000000;stroke-width:0.15875;stroke-linecap:square;stroke-dasharray:none"
|
||||
id="rect40"
|
||||
width="23.812506"
|
||||
height="7.9375014"
|
||||
x="108.79243"
|
||||
y="90.386703" />
|
||||
</g>
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.15875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 89.517356,71.437502 61.29514,87.312503"
|
||||
id="path40"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#rect37"
|
||||
inkscape:connection-end="#rect38" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.15875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 94.406805,71.437502 85.742383,87.312503"
|
||||
id="path41"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#rect37"
|
||||
inkscape:connection-end="#rect39" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.15875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 99.218748,71.437502 109.8021,87.312503"
|
||||
id="path42"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#rect37"
|
||||
inkscape:connection-end="#rect40" />
|
||||
<g
|
||||
id="g46"
|
||||
transform="translate(-68.659367,2.7781237)"
|
||||
style="stroke-width:0.15875;stroke-dasharray:none">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;stroke-width:0.15875;stroke-dasharray:none"
|
||||
x="123.93869"
|
||||
y="113.98891"
|
||||
id="text30"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan30"
|
||||
style="text-align:center;text-anchor:middle;stroke-width:0.15875;stroke-dasharray:none"
|
||||
x="123.93869"
|
||||
y="113.98891">MCV</tspan></text>
|
||||
<rect
|
||||
style="fill:none;stroke:#000000;stroke-width:0.15875;stroke-linecap:square;stroke-dasharray:none"
|
||||
id="rect42"
|
||||
width="15.875001"
|
||||
height="7.9375038"
|
||||
x="116.41666"
|
||||
y="108.47917" />
|
||||
</g>
|
||||
<g
|
||||
id="g45"
|
||||
transform="translate(-68.659367,5.4239515)"
|
||||
style="stroke-width:0.15875;stroke-dasharray:none">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;stroke-width:0.15875;stroke-dasharray:none"
|
||||
x="147.92894"
|
||||
y="111.38029"
|
||||
id="text31"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan31"
|
||||
style="text-align:center;text-anchor:middle;stroke-width:0.15875;stroke-dasharray:none"
|
||||
x="147.92894"
|
||||
y="111.38029">Clock</tspan></text>
|
||||
<rect
|
||||
style="fill:none;stroke:#000000;stroke-width:0.15875;stroke-linecap:square;stroke-dasharray:none"
|
||||
id="rect43"
|
||||
width="15.875001"
|
||||
height="7.9375038"
|
||||
x="140.22916"
|
||||
y="105.83334" />
|
||||
</g>
|
||||
<g
|
||||
id="g44"
|
||||
transform="translate(-66.112857,13.610614)"
|
||||
style="stroke-width:0.15875;stroke-dasharray:none">
|
||||
<g
|
||||
id="g60"
|
||||
style="stroke-width:0.15875;stroke-dasharray:none">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;stroke-width:0.15875;stroke-dasharray:none"
|
||||
x="172.85362"
|
||||
y="102.65102"
|
||||
id="text32"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan32"
|
||||
style="text-align:center;text-anchor:middle;stroke-width:0.15875;stroke-dasharray:none"
|
||||
x="172.85362"
|
||||
y="102.65102">Payload</tspan></text>
|
||||
<rect
|
||||
style="fill:none;stroke:#000000;stroke-width:0.15875;stroke-linecap:square;stroke-dasharray:none"
|
||||
id="rect44"
|
||||
width="23.812506"
|
||||
height="7.9375014"
|
||||
x="161.36285"
|
||||
y="97.514389" />
|
||||
</g>
|
||||
</g>
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.15875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 83.366344,95.250004 80.27399,111.2573"
|
||||
id="path47"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-end="#g45" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.15875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 80.082847,95.250004 60.540101,111.2573"
|
||||
id="path48"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-end="#g46" />
|
||||
<g
|
||||
id="g58"
|
||||
transform="translate(-1.9073076,-1.4153422)"
|
||||
style="stroke-width:0.15875;stroke-dasharray:none">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;stroke-width:0.15875;stroke-dasharray:none"
|
||||
x="132.47266"
|
||||
y="46.496338"
|
||||
id="text49"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan49"
|
||||
style="text-align:center;text-anchor:middle;stroke-width:0.15875;stroke-dasharray:none"
|
||||
x="132.47266"
|
||||
y="46.496338">...</tspan></text>
|
||||
<rect
|
||||
style="fill:none;stroke:#000000;stroke-width:0.15875;stroke-linecap:square;stroke-dasharray:none"
|
||||
id="rect49"
|
||||
width="18.619415"
|
||||
height="7.9374995"
|
||||
x="123.61564"
|
||||
y="41.102844" />
|
||||
</g>
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.15875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 110.56031,26.611522 15.69429,13.07598"
|
||||
id="path49"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-end="#rect49"
|
||||
inkscape:connection-start="#rect32" />
|
||||
<g
|
||||
id="g50"
|
||||
transform="translate(-8.2507438,-2.9293636)"
|
||||
style="stroke-width:0.15875;stroke-dasharray:none">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;stroke-width:0.15875;stroke-dasharray:none"
|
||||
x="149.35014"
|
||||
y="95.635361"
|
||||
id="text50"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan50"
|
||||
style="text-align:center;text-anchor:middle;stroke-width:0.15875;stroke-dasharray:none"
|
||||
x="149.35014"
|
||||
y="95.635361">...</tspan></text>
|
||||
<rect
|
||||
style="fill:none;stroke:#000000;stroke-width:0.15875;stroke-linecap:square;stroke-dasharray:none"
|
||||
id="rect40-5"
|
||||
width="23.812506"
|
||||
height="7.9375014"
|
||||
x="137.89658"
|
||||
y="90.241867" />
|
||||
</g>
|
||||
<path
|
||||
style="display:inline;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.15875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 104.06944,71.437502 29.98612,15.875001"
|
||||
id="path50"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#rect37"
|
||||
inkscape:connection-end="#g50" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.15875;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 87.506274,95.250004 103.22625,111.125"
|
||||
id="path60"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#g52"
|
||||
inkscape:connection-end="#g44" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 19 KiB |
760
doc/user/emulation/events.md
Normal file
@ -0,0 +1,760 @@
|
||||
# Emulator events
|
||||
|
||||
This is a exhaustive list of the events recognized by the emulator.
|
||||
Built on Nov 13 2024.
|
||||
|
||||
## Model nanos6
|
||||
|
||||
List of events for the model *nanos6* with identifier **`6`** at version `1.1.0`:
|
||||
<dl>
|
||||
<dt><a id="6Yc" href="#6Yc"><pre>6Yc+(u32 typeid, str label)</pre></a></dt>
|
||||
<dd>creates task type %{typeid} with label "%{label}"</dd>
|
||||
<dt><a id="6Tc" href="#6Tc"><pre>6Tc(u32 taskid, u32 typeid)</pre></a></dt>
|
||||
<dd>creates task %{taskid} with type %{typeid}</dd>
|
||||
<dt><a id="6Tx" href="#6Tx"><pre>6Tx(u32 taskid)</pre></a></dt>
|
||||
<dd>executes the task %{taskid}</dd>
|
||||
<dt><a id="6Te" href="#6Te"><pre>6Te(u32 taskid)</pre></a></dt>
|
||||
<dd>ends the task %{taskid}</dd>
|
||||
<dt><a id="6Tp" href="#6Tp"><pre>6Tp(u32 taskid)</pre></a></dt>
|
||||
<dd>pauses the task %{taskid}</dd>
|
||||
<dt><a id="6Tr" href="#6Tr"><pre>6Tr(u32 taskid)</pre></a></dt>
|
||||
<dd>resumes the task %{taskid}</dd>
|
||||
<dt><a id="6W[" href="#6W["><pre>6W[</pre></a></dt>
|
||||
<dd>enters worker main loop, looking for tasks</dd>
|
||||
<dt><a id="6W]" href="#6W]"><pre>6W]</pre></a></dt>
|
||||
<dd>leaves worker main loop, looking for tasks</dd>
|
||||
<dt><a id="6Wt" href="#6Wt"><pre>6Wt</pre></a></dt>
|
||||
<dd>begins handling a task via handleTask()</dd>
|
||||
<dt><a id="6WT" href="#6WT"><pre>6WT</pre></a></dt>
|
||||
<dd>ceases handling a task via handleTask()</dd>
|
||||
<dt><a id="6Ww" href="#6Ww"><pre>6Ww</pre></a></dt>
|
||||
<dd>begins switching to another worker via switchTo()</dd>
|
||||
<dt><a id="6WW" href="#6WW"><pre>6WW</pre></a></dt>
|
||||
<dd>ceases switching to another worker via switchTo()</dd>
|
||||
<dt><a id="6Wm" href="#6Wm"><pre>6Wm</pre></a></dt>
|
||||
<dd>begins migrating the current worker to another CPU</dd>
|
||||
<dt><a id="6WM" href="#6WM"><pre>6WM</pre></a></dt>
|
||||
<dd>ceases migrating the current worker to another CPU</dd>
|
||||
<dt><a id="6Ws" href="#6Ws"><pre>6Ws</pre></a></dt>
|
||||
<dd>begins suspending the worker via suspend()</dd>
|
||||
<dt><a id="6WS" href="#6WS"><pre>6WS</pre></a></dt>
|
||||
<dd>ceases suspending the worker via suspend()</dd>
|
||||
<dt><a id="6Wr" href="#6Wr"><pre>6Wr</pre></a></dt>
|
||||
<dd>begins resuming another worker via resume()</dd>
|
||||
<dt><a id="6WR" href="#6WR"><pre>6WR</pre></a></dt>
|
||||
<dd>ceases resuming another worker via resume()</dd>
|
||||
<dt><a id="6Wg" href="#6Wg"><pre>6Wg</pre></a></dt>
|
||||
<dd>enters sponge mode (absorbing system noise)</dd>
|
||||
<dt><a id="6WG" href="#6WG"><pre>6WG</pre></a></dt>
|
||||
<dd>leaves sponge mode (absorbing system noise)</dd>
|
||||
<dt><a id="6W*" href="#6W*"><pre>6W*</pre></a></dt>
|
||||
<dd>signals another worker to wake up</dd>
|
||||
<dt><a id="6Pp" href="#6Pp"><pre>6Pp</pre></a></dt>
|
||||
<dd>sets progress state to Progressing</dd>
|
||||
<dt><a id="6Pr" href="#6Pr"><pre>6Pr</pre></a></dt>
|
||||
<dd>sets progress state to Resting</dd>
|
||||
<dt><a id="6Pa" href="#6Pa"><pre>6Pa</pre></a></dt>
|
||||
<dd>sets progress state to Absorbing</dd>
|
||||
<dt><a id="6C[" href="#6C["><pre>6C[</pre></a></dt>
|
||||
<dd>begins creating a new task</dd>
|
||||
<dt><a id="6C]" href="#6C]"><pre>6C]</pre></a></dt>
|
||||
<dd>ceases creating a new task</dd>
|
||||
<dt><a id="6U[" href="#6U["><pre>6U[</pre></a></dt>
|
||||
<dd>begins submitting a task via submitTask()</dd>
|
||||
<dt><a id="6U]" href="#6U]"><pre>6U]</pre></a></dt>
|
||||
<dd>ceases submitting a task via submitTask()</dd>
|
||||
<dt><a id="6F[" href="#6F["><pre>6F[</pre></a></dt>
|
||||
<dd>begins spawning a function via spawnFunction()</dd>
|
||||
<dt><a id="6F]" href="#6F]"><pre>6F]</pre></a></dt>
|
||||
<dd>ceases spawning a function via spawnFunction()</dd>
|
||||
<dt><a id="6t[" href="#6t["><pre>6t[</pre></a></dt>
|
||||
<dd>enters the task body</dd>
|
||||
<dt><a id="6t]" href="#6t]"><pre>6t]</pre></a></dt>
|
||||
<dd>leaves the task body</dd>
|
||||
<dt><a id="6O[" href="#6O["><pre>6O[</pre></a></dt>
|
||||
<dd>begins running the task body as taskfor collaborator</dd>
|
||||
<dt><a id="6O]" href="#6O]"><pre>6O]</pre></a></dt>
|
||||
<dd>ceases running the task body as taskfor collaborator</dd>
|
||||
<dt><a id="6Ma" href="#6Ma"><pre>6Ma</pre></a></dt>
|
||||
<dd>starts allocating memory</dd>
|
||||
<dt><a id="6MA" href="#6MA"><pre>6MA</pre></a></dt>
|
||||
<dd>stops allocating memory</dd>
|
||||
<dt><a id="6Mf" href="#6Mf"><pre>6Mf</pre></a></dt>
|
||||
<dd>starts freeing memory</dd>
|
||||
<dt><a id="6MF" href="#6MF"><pre>6MF</pre></a></dt>
|
||||
<dd>stops freeing memory</dd>
|
||||
<dt><a id="6Dr" href="#6Dr"><pre>6Dr</pre></a></dt>
|
||||
<dd>begins registration of task dependencies</dd>
|
||||
<dt><a id="6DR" href="#6DR"><pre>6DR</pre></a></dt>
|
||||
<dd>ceases registration of task dependencies</dd>
|
||||
<dt><a id="6Du" href="#6Du"><pre>6Du</pre></a></dt>
|
||||
<dd>begins unregistration of task dependencies</dd>
|
||||
<dt><a id="6DU" href="#6DU"><pre>6DU</pre></a></dt>
|
||||
<dd>ceases unregistration of task dependencies</dd>
|
||||
<dt><a id="6S[" href="#6S["><pre>6S[</pre></a></dt>
|
||||
<dd>begins scheduler serving mode</dd>
|
||||
<dt><a id="6S]" href="#6S]"><pre>6S]</pre></a></dt>
|
||||
<dd>ceases scheduler serving mode</dd>
|
||||
<dt><a id="6Sa" href="#6Sa"><pre>6Sa</pre></a></dt>
|
||||
<dd>begins submitting a ready task via addReadyTask()</dd>
|
||||
<dt><a id="6SA" href="#6SA"><pre>6SA</pre></a></dt>
|
||||
<dd>ceases submitting a ready task via addReadyTask()</dd>
|
||||
<dt><a id="6Sp" href="#6Sp"><pre>6Sp</pre></a></dt>
|
||||
<dd>begins processing ready tasks via processReadyTasks()</dd>
|
||||
<dt><a id="6SP" href="#6SP"><pre>6SP</pre></a></dt>
|
||||
<dd>ceases processing ready tasks via processReadyTasks()</dd>
|
||||
<dt><a id="6S@" href="#6S@"><pre>6S@</pre></a></dt>
|
||||
<dd>self assigns itself a task</dd>
|
||||
<dt><a id="6Sr" href="#6Sr"><pre>6Sr</pre></a></dt>
|
||||
<dd>receives a task from another thread</dd>
|
||||
<dt><a id="6Ss" href="#6Ss"><pre>6Ss</pre></a></dt>
|
||||
<dd>sends a task to another thread</dd>
|
||||
<dt><a id="6Bb" href="#6Bb"><pre>6Bb</pre></a></dt>
|
||||
<dd>begins blocking the current task</dd>
|
||||
<dt><a id="6BB" href="#6BB"><pre>6BB</pre></a></dt>
|
||||
<dd>ceases blocking the current task</dd>
|
||||
<dt><a id="6Bu" href="#6Bu"><pre>6Bu</pre></a></dt>
|
||||
<dd>begins unblocking a task</dd>
|
||||
<dt><a id="6BU" href="#6BU"><pre>6BU</pre></a></dt>
|
||||
<dd>ceases unblocking a task</dd>
|
||||
<dt><a id="6Bw" href="#6Bw"><pre>6Bw</pre></a></dt>
|
||||
<dd>enters a task wait</dd>
|
||||
<dt><a id="6BW" href="#6BW"><pre>6BW</pre></a></dt>
|
||||
<dd>leaves a task wait</dd>
|
||||
<dt><a id="6Bf" href="#6Bf"><pre>6Bf</pre></a></dt>
|
||||
<dd>enters a wait for</dd>
|
||||
<dt><a id="6BF" href="#6BF"><pre>6BF</pre></a></dt>
|
||||
<dd>leaves a wait for</dd>
|
||||
<dt><a id="6He" href="#6He"><pre>6He</pre></a></dt>
|
||||
<dd>begins execution as external thread</dd>
|
||||
<dt><a id="6HE" href="#6HE"><pre>6HE</pre></a></dt>
|
||||
<dd>ceases execution as external thread</dd>
|
||||
<dt><a id="6Hw" href="#6Hw"><pre>6Hw</pre></a></dt>
|
||||
<dd>begins execution as worker</dd>
|
||||
<dt><a id="6HW" href="#6HW"><pre>6HW</pre></a></dt>
|
||||
<dd>ceases execution as worker</dd>
|
||||
<dt><a id="6Hl" href="#6Hl"><pre>6Hl</pre></a></dt>
|
||||
<dd>begins execution as leader</dd>
|
||||
<dt><a id="6HL" href="#6HL"><pre>6HL</pre></a></dt>
|
||||
<dd>ceases execution as leader</dd>
|
||||
<dt><a id="6Hm" href="#6Hm"><pre>6Hm</pre></a></dt>
|
||||
<dd>begins execution as main thread</dd>
|
||||
<dt><a id="6HM" href="#6HM"><pre>6HM</pre></a></dt>
|
||||
<dd>ceases execution as main thread</dd>
|
||||
</dl>
|
||||
|
||||
## Model nodes
|
||||
|
||||
List of events for the model *nodes* with identifier **`D`** at version `1.0.0`:
|
||||
<dl>
|
||||
<dt><a id="DR[" href="#DR["><pre>DR[</pre></a></dt>
|
||||
<dd>begins registering task accesses</dd>
|
||||
<dt><a id="DR]" href="#DR]"><pre>DR]</pre></a></dt>
|
||||
<dd>ceases registering task accesses</dd>
|
||||
<dt><a id="DU[" href="#DU["><pre>DU[</pre></a></dt>
|
||||
<dd>begins unregistering task accesses</dd>
|
||||
<dt><a id="DU]" href="#DU]"><pre>DU]</pre></a></dt>
|
||||
<dd>ceases unregistering task accesses</dd>
|
||||
<dt><a id="DW[" href="#DW["><pre>DW[</pre></a></dt>
|
||||
<dd>enters a blocking condition (waiting for an If0 task)</dd>
|
||||
<dt><a id="DW]" href="#DW]"><pre>DW]</pre></a></dt>
|
||||
<dd>leaves a blocking condition (waiting for an If0 task)</dd>
|
||||
<dt><a id="DI[" href="#DI["><pre>DI[</pre></a></dt>
|
||||
<dd>begins the inline execution of an If0 task</dd>
|
||||
<dt><a id="DI]" href="#DI]"><pre>DI]</pre></a></dt>
|
||||
<dd>ceases the inline execution of an If0 task</dd>
|
||||
<dt><a id="DT[" href="#DT["><pre>DT[</pre></a></dt>
|
||||
<dd>enters a taskwait</dd>
|
||||
<dt><a id="DT]" href="#DT]"><pre>DT]</pre></a></dt>
|
||||
<dd>leaves a taskwait</dd>
|
||||
<dt><a id="DC[" href="#DC["><pre>DC[</pre></a></dt>
|
||||
<dd>begins creating a task</dd>
|
||||
<dt><a id="DC]" href="#DC]"><pre>DC]</pre></a></dt>
|
||||
<dd>ceases creating a task</dd>
|
||||
<dt><a id="DS[" href="#DS["><pre>DS[</pre></a></dt>
|
||||
<dd>begins submitting a task</dd>
|
||||
<dt><a id="DS]" href="#DS]"><pre>DS]</pre></a></dt>
|
||||
<dd>ceases submitting a task</dd>
|
||||
<dt><a id="DP[" href="#DP["><pre>DP[</pre></a></dt>
|
||||
<dd>begins spawning a function</dd>
|
||||
<dt><a id="DP]" href="#DP]"><pre>DP]</pre></a></dt>
|
||||
<dd>ceases spawning a function</dd>
|
||||
</dl>
|
||||
|
||||
## Model kernel
|
||||
|
||||
List of events for the model *kernel* with identifier **`K`** at version `1.0.0`:
|
||||
<dl>
|
||||
<dt><a id="KCO" href="#KCO"><pre>KCO</pre></a></dt>
|
||||
<dd>out of CPU</dd>
|
||||
<dt><a id="KCI" href="#KCI"><pre>KCI</pre></a></dt>
|
||||
<dd>back to CPU</dd>
|
||||
</dl>
|
||||
|
||||
## Model mpi
|
||||
|
||||
List of events for the model *mpi* with identifier **`M`** at version `1.0.0`:
|
||||
<dl>
|
||||
<dt><a id="MUf" href="#MUf"><pre>MUf</pre></a></dt>
|
||||
<dd>enters MPI_Finalize()</dd>
|
||||
<dt><a id="MUF" href="#MUF"><pre>MUF</pre></a></dt>
|
||||
<dd>leaves MPI_Finalize()</dd>
|
||||
<dt><a id="MUi" href="#MUi"><pre>MUi</pre></a></dt>
|
||||
<dd>enters MPI_Init()</dd>
|
||||
<dt><a id="MUI" href="#MUI"><pre>MUI</pre></a></dt>
|
||||
<dd>leaves MPI_Init()</dd>
|
||||
<dt><a id="MUt" href="#MUt"><pre>MUt</pre></a></dt>
|
||||
<dd>enters MPI_Init_thread()</dd>
|
||||
<dt><a id="MUT" href="#MUT"><pre>MUT</pre></a></dt>
|
||||
<dd>leaves MPI_Init_thread()</dd>
|
||||
<dt><a id="MW[" href="#MW["><pre>MW[</pre></a></dt>
|
||||
<dd>enters MPI_Wait()</dd>
|
||||
<dt><a id="MW]" href="#MW]"><pre>MW]</pre></a></dt>
|
||||
<dd>leaves MPI_Wait()</dd>
|
||||
<dt><a id="MWa" href="#MWa"><pre>MWa</pre></a></dt>
|
||||
<dd>enters MPI_Waitall()</dd>
|
||||
<dt><a id="MWA" href="#MWA"><pre>MWA</pre></a></dt>
|
||||
<dd>leaves MPI_Waitall()</dd>
|
||||
<dt><a id="MWs" href="#MWs"><pre>MWs</pre></a></dt>
|
||||
<dd>enters MPI_Waitsome()</dd>
|
||||
<dt><a id="MWS" href="#MWS"><pre>MWS</pre></a></dt>
|
||||
<dd>leaves MPI_Waitsome()</dd>
|
||||
<dt><a id="MWy" href="#MWy"><pre>MWy</pre></a></dt>
|
||||
<dd>enters MPI_Waitany()</dd>
|
||||
<dt><a id="MWY" href="#MWY"><pre>MWY</pre></a></dt>
|
||||
<dd>leaves MPI_Waitany()</dd>
|
||||
<dt><a id="MT[" href="#MT["><pre>MT[</pre></a></dt>
|
||||
<dd>enters MPI_Test()</dd>
|
||||
<dt><a id="MT]" href="#MT]"><pre>MT]</pre></a></dt>
|
||||
<dd>leaves MPI_Test()</dd>
|
||||
<dt><a id="MTa" href="#MTa"><pre>MTa</pre></a></dt>
|
||||
<dd>enters MPI_Testall()</dd>
|
||||
<dt><a id="MTA" href="#MTA"><pre>MTA</pre></a></dt>
|
||||
<dd>leaves MPI_Testall()</dd>
|
||||
<dt><a id="MTy" href="#MTy"><pre>MTy</pre></a></dt>
|
||||
<dd>enters MPI_Testany()</dd>
|
||||
<dt><a id="MTY" href="#MTY"><pre>MTY</pre></a></dt>
|
||||
<dd>leaves MPI_Testany()</dd>
|
||||
<dt><a id="MTs" href="#MTs"><pre>MTs</pre></a></dt>
|
||||
<dd>enters MPI_Testsome()</dd>
|
||||
<dt><a id="MTS" href="#MTS"><pre>MTS</pre></a></dt>
|
||||
<dd>leaves MPI_Testsome()</dd>
|
||||
<dt><a id="MS[" href="#MS["><pre>MS[</pre></a></dt>
|
||||
<dd>enters MPI_Send()</dd>
|
||||
<dt><a id="MS]" href="#MS]"><pre>MS]</pre></a></dt>
|
||||
<dd>leaves MPI_Send()</dd>
|
||||
<dt><a id="MSb" href="#MSb"><pre>MSb</pre></a></dt>
|
||||
<dd>enters MPI_Bsend()</dd>
|
||||
<dt><a id="MSB" href="#MSB"><pre>MSB</pre></a></dt>
|
||||
<dd>leaves MPI_Bsend()</dd>
|
||||
<dt><a id="MSr" href="#MSr"><pre>MSr</pre></a></dt>
|
||||
<dd>enters MPI_Rsend()</dd>
|
||||
<dt><a id="MSR" href="#MSR"><pre>MSR</pre></a></dt>
|
||||
<dd>leaves MPI_Rsend()</dd>
|
||||
<dt><a id="MSs" href="#MSs"><pre>MSs</pre></a></dt>
|
||||
<dd>enters MPI_Ssend()</dd>
|
||||
<dt><a id="MSS" href="#MSS"><pre>MSS</pre></a></dt>
|
||||
<dd>leaves MPI_Ssend()</dd>
|
||||
<dt><a id="MR[" href="#MR["><pre>MR[</pre></a></dt>
|
||||
<dd>enters MPI_Recv()</dd>
|
||||
<dt><a id="MR]" href="#MR]"><pre>MR]</pre></a></dt>
|
||||
<dd>leaves MPI_Recv()</dd>
|
||||
<dt><a id="MRs" href="#MRs"><pre>MRs</pre></a></dt>
|
||||
<dd>enters MPI_Sendrecv()</dd>
|
||||
<dt><a id="MRS" href="#MRS"><pre>MRS</pre></a></dt>
|
||||
<dd>leaves MPI_Sendrecv()</dd>
|
||||
<dt><a id="MRo" href="#MRo"><pre>MRo</pre></a></dt>
|
||||
<dd>enters MPI_Sendrecv_replace()</dd>
|
||||
<dt><a id="MRO" href="#MRO"><pre>MRO</pre></a></dt>
|
||||
<dd>leaves MPI_Sendrecv_replace()</dd>
|
||||
<dt><a id="MAg" href="#MAg"><pre>MAg</pre></a></dt>
|
||||
<dd>enters MPI_Allgather()</dd>
|
||||
<dt><a id="MAG" href="#MAG"><pre>MAG</pre></a></dt>
|
||||
<dd>leaves MPI_Allgather()</dd>
|
||||
<dt><a id="MAr" href="#MAr"><pre>MAr</pre></a></dt>
|
||||
<dd>enters MPI_Allreduce()</dd>
|
||||
<dt><a id="MAR" href="#MAR"><pre>MAR</pre></a></dt>
|
||||
<dd>leaves MPI_Allreduce()</dd>
|
||||
<dt><a id="MAa" href="#MAa"><pre>MAa</pre></a></dt>
|
||||
<dd>enters MPI_Alltoall()</dd>
|
||||
<dt><a id="MAA" href="#MAA"><pre>MAA</pre></a></dt>
|
||||
<dd>leaves MPI_Alltoall()</dd>
|
||||
<dt><a id="MCb" href="#MCb"><pre>MCb</pre></a></dt>
|
||||
<dd>enters MPI_Barrier()</dd>
|
||||
<dt><a id="MCB" href="#MCB"><pre>MCB</pre></a></dt>
|
||||
<dd>leaves MPI_Barrier()</dd>
|
||||
<dt><a id="MCe" href="#MCe"><pre>MCe</pre></a></dt>
|
||||
<dd>enters MPI_Exscan()</dd>
|
||||
<dt><a id="MCE" href="#MCE"><pre>MCE</pre></a></dt>
|
||||
<dd>leaves MPI_Exscan()</dd>
|
||||
<dt><a id="MCs" href="#MCs"><pre>MCs</pre></a></dt>
|
||||
<dd>enters MPI_Scan()</dd>
|
||||
<dt><a id="MCS" href="#MCS"><pre>MCS</pre></a></dt>
|
||||
<dd>leaves MPI_Scan()</dd>
|
||||
<dt><a id="MDb" href="#MDb"><pre>MDb</pre></a></dt>
|
||||
<dd>enters MPI_Bcast()</dd>
|
||||
<dt><a id="MDB" href="#MDB"><pre>MDB</pre></a></dt>
|
||||
<dd>leaves MPI_Bcast()</dd>
|
||||
<dt><a id="MDg" href="#MDg"><pre>MDg</pre></a></dt>
|
||||
<dd>enters MPI_Gather()</dd>
|
||||
<dt><a id="MDG" href="#MDG"><pre>MDG</pre></a></dt>
|
||||
<dd>leaves MPI_Gather()</dd>
|
||||
<dt><a id="MDs" href="#MDs"><pre>MDs</pre></a></dt>
|
||||
<dd>enters MPI_Scatter()</dd>
|
||||
<dt><a id="MDS" href="#MDS"><pre>MDS</pre></a></dt>
|
||||
<dd>leaves MPI_Scatter()</dd>
|
||||
<dt><a id="ME[" href="#ME["><pre>ME[</pre></a></dt>
|
||||
<dd>enters MPI_Reduce()</dd>
|
||||
<dt><a id="ME]" href="#ME]"><pre>ME]</pre></a></dt>
|
||||
<dd>leaves MPI_Reduce()</dd>
|
||||
<dt><a id="MEs" href="#MEs"><pre>MEs</pre></a></dt>
|
||||
<dd>enters MPI_Reduce_scatter()</dd>
|
||||
<dt><a id="MES" href="#MES"><pre>MES</pre></a></dt>
|
||||
<dd>leaves MPI_Reduce_scatter()</dd>
|
||||
<dt><a id="MEb" href="#MEb"><pre>MEb</pre></a></dt>
|
||||
<dd>enters MPI_Reduce_scatter_block()</dd>
|
||||
<dt><a id="MEB" href="#MEB"><pre>MEB</pre></a></dt>
|
||||
<dd>leaves MPI_Reduce_scatter_block()</dd>
|
||||
<dt><a id="Ms[" href="#Ms["><pre>Ms[</pre></a></dt>
|
||||
<dd>enters MPI_Isend()</dd>
|
||||
<dt><a id="Ms]" href="#Ms]"><pre>Ms]</pre></a></dt>
|
||||
<dd>leaves MPI_Isend()</dd>
|
||||
<dt><a id="Msb" href="#Msb"><pre>Msb</pre></a></dt>
|
||||
<dd>enters MPI_Ibsend()</dd>
|
||||
<dt><a id="MsB" href="#MsB"><pre>MsB</pre></a></dt>
|
||||
<dd>leaves MPI_Ibsend()</dd>
|
||||
<dt><a id="Msr" href="#Msr"><pre>Msr</pre></a></dt>
|
||||
<dd>enters MPI_Irsend()</dd>
|
||||
<dt><a id="MsR" href="#MsR"><pre>MsR</pre></a></dt>
|
||||
<dd>leaves MPI_Irsend()</dd>
|
||||
<dt><a id="Mss" href="#Mss"><pre>Mss</pre></a></dt>
|
||||
<dd>enters MPI_Issend()</dd>
|
||||
<dt><a id="MsS" href="#MsS"><pre>MsS</pre></a></dt>
|
||||
<dd>leaves MPI_Issend()</dd>
|
||||
<dt><a id="Mr[" href="#Mr["><pre>Mr[</pre></a></dt>
|
||||
<dd>enters MPI_Irecv()</dd>
|
||||
<dt><a id="Mr]" href="#Mr]"><pre>Mr]</pre></a></dt>
|
||||
<dd>leaves MPI_Irecv()</dd>
|
||||
<dt><a id="Mrs" href="#Mrs"><pre>Mrs</pre></a></dt>
|
||||
<dd>enters MPI_Isendrecv()</dd>
|
||||
<dt><a id="MrS" href="#MrS"><pre>MrS</pre></a></dt>
|
||||
<dd>leaves MPI_Isendrecv()</dd>
|
||||
<dt><a id="Mro" href="#Mro"><pre>Mro</pre></a></dt>
|
||||
<dd>enters MPI_Isendrecv_replace()</dd>
|
||||
<dt><a id="MrO" href="#MrO"><pre>MrO</pre></a></dt>
|
||||
<dd>leaves MPI_Isendrecv_replace()</dd>
|
||||
<dt><a id="Mag" href="#Mag"><pre>Mag</pre></a></dt>
|
||||
<dd>enters MPI_Iallgather()</dd>
|
||||
<dt><a id="MaG" href="#MaG"><pre>MaG</pre></a></dt>
|
||||
<dd>leaves MPI_Iallgather()</dd>
|
||||
<dt><a id="Mar" href="#Mar"><pre>Mar</pre></a></dt>
|
||||
<dd>enters MPI_Iallreduce()</dd>
|
||||
<dt><a id="MaR" href="#MaR"><pre>MaR</pre></a></dt>
|
||||
<dd>leaves MPI_Iallreduce()</dd>
|
||||
<dt><a id="Maa" href="#Maa"><pre>Maa</pre></a></dt>
|
||||
<dd>enters MPI_Ialltoall()</dd>
|
||||
<dt><a id="MaA" href="#MaA"><pre>MaA</pre></a></dt>
|
||||
<dd>leaves MPI_Ialltoall()</dd>
|
||||
<dt><a id="Mcb" href="#Mcb"><pre>Mcb</pre></a></dt>
|
||||
<dd>enters MPI_Ibarrier()</dd>
|
||||
<dt><a id="McB" href="#McB"><pre>McB</pre></a></dt>
|
||||
<dd>leaves MPI_Ibarrier()</dd>
|
||||
<dt><a id="Mce" href="#Mce"><pre>Mce</pre></a></dt>
|
||||
<dd>enters MPI_Iexscan()</dd>
|
||||
<dt><a id="McE" href="#McE"><pre>McE</pre></a></dt>
|
||||
<dd>leaves MPI_Iexscan()</dd>
|
||||
<dt><a id="Mcs" href="#Mcs"><pre>Mcs</pre></a></dt>
|
||||
<dd>enters MPI_Iscan()</dd>
|
||||
<dt><a id="McS" href="#McS"><pre>McS</pre></a></dt>
|
||||
<dd>leaves MPI_Iscan()</dd>
|
||||
<dt><a id="Mdb" href="#Mdb"><pre>Mdb</pre></a></dt>
|
||||
<dd>enters MPI_Ibcast()</dd>
|
||||
<dt><a id="MdB" href="#MdB"><pre>MdB</pre></a></dt>
|
||||
<dd>leaves MPI_Ibcast()</dd>
|
||||
<dt><a id="Mdg" href="#Mdg"><pre>Mdg</pre></a></dt>
|
||||
<dd>enters MPI_Igather()</dd>
|
||||
<dt><a id="MdG" href="#MdG"><pre>MdG</pre></a></dt>
|
||||
<dd>leaves MPI_Igather()</dd>
|
||||
<dt><a id="Mds" href="#Mds"><pre>Mds</pre></a></dt>
|
||||
<dd>enters MPI_Iscatter()</dd>
|
||||
<dt><a id="MdS" href="#MdS"><pre>MdS</pre></a></dt>
|
||||
<dd>leaves MPI_Iscatter()</dd>
|
||||
<dt><a id="Me[" href="#Me["><pre>Me[</pre></a></dt>
|
||||
<dd>enters MPI_Ireduce()</dd>
|
||||
<dt><a id="Me]" href="#Me]"><pre>Me]</pre></a></dt>
|
||||
<dd>leaves MPI_Ireduce()</dd>
|
||||
<dt><a id="Mes" href="#Mes"><pre>Mes</pre></a></dt>
|
||||
<dd>enters MPI_Ireduce_scatter()</dd>
|
||||
<dt><a id="MeS" href="#MeS"><pre>MeS</pre></a></dt>
|
||||
<dd>leaves MPI_Ireduce_scatter()</dd>
|
||||
<dt><a id="Meb" href="#Meb"><pre>Meb</pre></a></dt>
|
||||
<dd>enters MPI_Ireduce_scatter_block()</dd>
|
||||
<dt><a id="MeB" href="#MeB"><pre>MeB</pre></a></dt>
|
||||
<dd>leaves MPI_Ireduce_scatter_block()</dd>
|
||||
</dl>
|
||||
|
||||
## Model ovni
|
||||
|
||||
List of events for the model *ovni* with identifier **`O`** at version `1.1.0`:
|
||||
<dl>
|
||||
<dt><a id="OAr" href="#OAr"><pre>OAr(i32 cpu, i32 tid)</pre></a></dt>
|
||||
<dd>changes the affinity of thread %{tid} to CPU %{cpu}</dd>
|
||||
<dt><a id="OAs" href="#OAs"><pre>OAs(i32 cpu)</pre></a></dt>
|
||||
<dd>switches it's own affinity to the CPU %{cpu}</dd>
|
||||
<dt><a id="OB." href="#OB."><pre>OB.</pre></a></dt>
|
||||
<dd>emits a burst event to measure latency</dd>
|
||||
<dt><a id="OHC" href="#OHC"><pre>OHC(i32 cpu, u64 tag)</pre></a></dt>
|
||||
<dd>creates a new thread on CPU %{cpu} with tag %#llx{tag}</dd>
|
||||
<dt><a id="OHc" href="#OHc"><pre>OHc</pre></a></dt>
|
||||
<dd>enters the Cooling state (about to be paused)</dd>
|
||||
<dt><a id="OHe" href="#OHe"><pre>OHe</pre></a></dt>
|
||||
<dd>ends the execution</dd>
|
||||
<dt><a id="OHp" href="#OHp"><pre>OHp</pre></a></dt>
|
||||
<dd>pauses the execution</dd>
|
||||
<dt><a id="OHr" href="#OHr"><pre>OHr</pre></a></dt>
|
||||
<dd>resumes the execution</dd>
|
||||
<dt><a id="OHw" href="#OHw"><pre>OHw</pre></a></dt>
|
||||
<dd>enters the Warming state (about to be running)</dd>
|
||||
<dt><a id="OHx" href="#OHx"><pre>OHx(i32 cpu, i32 tid, u64 tag)</pre></a></dt>
|
||||
<dd>begins the execution on CPU %{cpu} created from %{tid} with tag %#llx{tag}</dd>
|
||||
<dt><a id="OCn" href="#OCn"><pre>OCn(i32 cpu)</pre></a></dt>
|
||||
<dd>informs there are %{cpu} CPUs</dd>
|
||||
<dt><a id="OF[" href="#OF["><pre>OF[</pre></a></dt>
|
||||
<dd>begins flushing events to disk</dd>
|
||||
<dt><a id="OF]" href="#OF]"><pre>OF]</pre></a></dt>
|
||||
<dd>ceases flushing events to disk</dd>
|
||||
<dt><a id="OU[" href="#OU["><pre>OU[</pre></a></dt>
|
||||
<dd>enters unordered event region</dd>
|
||||
<dt><a id="OU]" href="#OU]"><pre>OU]</pre></a></dt>
|
||||
<dd>leaves unordered event region</dd>
|
||||
<dt><a id="OM[" href="#OM["><pre>OM[(i64 value, i32 type)</pre></a></dt>
|
||||
<dd>push mark with value %{value} from type %{type}</dd>
|
||||
<dt><a id="OM]" href="#OM]"><pre>OM](i64 value, i32 type)</pre></a></dt>
|
||||
<dd>pop mark with value %{value} from type %{type}</dd>
|
||||
<dt><a id="OM=" href="#OM="><pre>OM=(i64 value, i32 type)</pre></a></dt>
|
||||
<dd>set mark with value %{value} from type %{type}</dd>
|
||||
</dl>
|
||||
|
||||
## Model openmp
|
||||
|
||||
List of events for the model *openmp* with identifier **`P`** at version `1.2.0`:
|
||||
<dl>
|
||||
<dt><a id="PBb" href="#PBb"><pre>PBb</pre></a></dt>
|
||||
<dd>begins plain barrier</dd>
|
||||
<dt><a id="PBB" href="#PBB"><pre>PBB</pre></a></dt>
|
||||
<dd>ceases plain barrier</dd>
|
||||
<dt><a id="PBj" href="#PBj"><pre>PBj</pre></a></dt>
|
||||
<dd>begins join barrier</dd>
|
||||
<dt><a id="PBJ" href="#PBJ"><pre>PBJ</pre></a></dt>
|
||||
<dd>ceases join barrier</dd>
|
||||
<dt><a id="PBf" href="#PBf"><pre>PBf</pre></a></dt>
|
||||
<dd>begins fork barrier</dd>
|
||||
<dt><a id="PBF" href="#PBF"><pre>PBF</pre></a></dt>
|
||||
<dd>ceases fork barrier</dd>
|
||||
<dt><a id="PBt" href="#PBt"><pre>PBt</pre></a></dt>
|
||||
<dd>begins tasking barrier</dd>
|
||||
<dt><a id="PBT" href="#PBT"><pre>PBT</pre></a></dt>
|
||||
<dd>ceases tasking barrier</dd>
|
||||
<dt><a id="PBs" href="#PBs"><pre>PBs</pre></a></dt>
|
||||
<dd>begins spin wait</dd>
|
||||
<dt><a id="PBS" href="#PBS"><pre>PBS</pre></a></dt>
|
||||
<dd>ceases spin wait</dd>
|
||||
<dt><a id="PIa" href="#PIa"><pre>PIa</pre></a></dt>
|
||||
<dd>begins critical acquiring</dd>
|
||||
<dt><a id="PIA" href="#PIA"><pre>PIA</pre></a></dt>
|
||||
<dd>ceases critical acquiring</dd>
|
||||
<dt><a id="PIr" href="#PIr"><pre>PIr</pre></a></dt>
|
||||
<dd>begins critical releasing</dd>
|
||||
<dt><a id="PIR" href="#PIR"><pre>PIR</pre></a></dt>
|
||||
<dd>ceases critical releasing</dd>
|
||||
<dt><a id="PI[" href="#PI["><pre>PI[</pre></a></dt>
|
||||
<dd>begins critical section</dd>
|
||||
<dt><a id="PI]" href="#PI]"><pre>PI]</pre></a></dt>
|
||||
<dd>ceases critical section</dd>
|
||||
<dt><a id="PWd" href="#PWd"><pre>PWd</pre></a></dt>
|
||||
<dd>begins distribute</dd>
|
||||
<dt><a id="PWD" href="#PWD"><pre>PWD</pre></a></dt>
|
||||
<dd>ceases distribute</dd>
|
||||
<dt><a id="PWy" href="#PWy"><pre>PWy</pre></a></dt>
|
||||
<dd>begins dynamic for init</dd>
|
||||
<dt><a id="PWY" href="#PWY"><pre>PWY</pre></a></dt>
|
||||
<dd>ceases dynamic for init</dd>
|
||||
<dt><a id="PWc" href="#PWc"><pre>PWc</pre></a></dt>
|
||||
<dd>begins dynamic for chunk</dd>
|
||||
<dt><a id="PWC" href="#PWC"><pre>PWC</pre></a></dt>
|
||||
<dd>ceases dynamic for chunk</dd>
|
||||
<dt><a id="PWs" href="#PWs"><pre>PWs</pre></a></dt>
|
||||
<dd>begins static for</dd>
|
||||
<dt><a id="PWS" href="#PWS"><pre>PWS</pre></a></dt>
|
||||
<dd>ceases static for</dd>
|
||||
<dt><a id="PWe" href="#PWe"><pre>PWe</pre></a></dt>
|
||||
<dd>begins section</dd>
|
||||
<dt><a id="PWE" href="#PWE"><pre>PWE</pre></a></dt>
|
||||
<dd>ceases section</dd>
|
||||
<dt><a id="PWi" href="#PWi"><pre>PWi</pre></a></dt>
|
||||
<dd>begins single</dd>
|
||||
<dt><a id="PWI" href="#PWI"><pre>PWI</pre></a></dt>
|
||||
<dd>ceases single</dd>
|
||||
<dt><a id="PTa" href="#PTa"><pre>PTa</pre></a></dt>
|
||||
<dd>begins task allocation</dd>
|
||||
<dt><a id="PTA" href="#PTA"><pre>PTA</pre></a></dt>
|
||||
<dd>ceases task allocation</dd>
|
||||
<dt><a id="PTc" href="#PTc"><pre>PTc</pre></a></dt>
|
||||
<dd>begins checking task dependencies</dd>
|
||||
<dt><a id="PTC" href="#PTC"><pre>PTC</pre></a></dt>
|
||||
<dd>ceases checking task dependencies</dd>
|
||||
<dt><a id="PTd" href="#PTd"><pre>PTd</pre></a></dt>
|
||||
<dd>begins duplicating a task</dd>
|
||||
<dt><a id="PTD" href="#PTD"><pre>PTD</pre></a></dt>
|
||||
<dd>ceases duplicating a task</dd>
|
||||
<dt><a id="PTr" href="#PTr"><pre>PTr</pre></a></dt>
|
||||
<dd>begins releasing task dependencies</dd>
|
||||
<dt><a id="PTR" href="#PTR"><pre>PTR</pre></a></dt>
|
||||
<dd>ceases releasing task dependencies</dd>
|
||||
<dt><a id="PT[" href="#PT["><pre>PT[</pre></a></dt>
|
||||
<dd>begins running a task</dd>
|
||||
<dt><a id="PT]" href="#PT]"><pre>PT]</pre></a></dt>
|
||||
<dd>ceases running a task</dd>
|
||||
<dt><a id="PTi" href="#PTi"><pre>PTi</pre></a></dt>
|
||||
<dd>begins running an if0 task</dd>
|
||||
<dt><a id="PTI" href="#PTI"><pre>PTI</pre></a></dt>
|
||||
<dd>ceases running an if0 task</dd>
|
||||
<dt><a id="PTs" href="#PTs"><pre>PTs</pre></a></dt>
|
||||
<dd>begins scheduling a task</dd>
|
||||
<dt><a id="PTS" href="#PTS"><pre>PTS</pre></a></dt>
|
||||
<dd>ceases scheduling a task</dd>
|
||||
<dt><a id="PTg" href="#PTg"><pre>PTg</pre></a></dt>
|
||||
<dd>begins a taskgroup</dd>
|
||||
<dt><a id="PTG" href="#PTG"><pre>PTG</pre></a></dt>
|
||||
<dd>ceases a taskgroup</dd>
|
||||
<dt><a id="PTt" href="#PTt"><pre>PTt</pre></a></dt>
|
||||
<dd>begins a taskwait</dd>
|
||||
<dt><a id="PTT" href="#PTT"><pre>PTT</pre></a></dt>
|
||||
<dd>ceases a taskwait</dd>
|
||||
<dt><a id="PTw" href="#PTw"><pre>PTw</pre></a></dt>
|
||||
<dd>begins waiting for taskwait dependencies</dd>
|
||||
<dt><a id="PTW" href="#PTW"><pre>PTW</pre></a></dt>
|
||||
<dd>ceases waiting for taskwait dependencies</dd>
|
||||
<dt><a id="PTy" href="#PTy"><pre>PTy</pre></a></dt>
|
||||
<dd>begins a taskyield</dd>
|
||||
<dt><a id="PTY" href="#PTY"><pre>PTY</pre></a></dt>
|
||||
<dd>ceases a taskyield</dd>
|
||||
<dt><a id="PA[" href="#PA["><pre>PA[</pre></a></dt>
|
||||
<dd>enters the attached state</dd>
|
||||
<dt><a id="PA]" href="#PA]"><pre>PA]</pre></a></dt>
|
||||
<dd>leaves the attached state</dd>
|
||||
<dt><a id="PMi" href="#PMi"><pre>PMi</pre></a></dt>
|
||||
<dd>begins microtask internal</dd>
|
||||
<dt><a id="PMI" href="#PMI"><pre>PMI</pre></a></dt>
|
||||
<dd>ceases microtask internal</dd>
|
||||
<dt><a id="PMu" href="#PMu"><pre>PMu</pre></a></dt>
|
||||
<dd>begins microtask user code</dd>
|
||||
<dt><a id="PMU" href="#PMU"><pre>PMU</pre></a></dt>
|
||||
<dd>ceases microtask user code</dd>
|
||||
<dt><a id="PH[" href="#PH["><pre>PH[</pre></a></dt>
|
||||
<dd>begins worker loop</dd>
|
||||
<dt><a id="PH]" href="#PH]"><pre>PH]</pre></a></dt>
|
||||
<dd>ceases worker loop</dd>
|
||||
<dt><a id="PCf" href="#PCf"><pre>PCf</pre></a></dt>
|
||||
<dd>begins fork call</dd>
|
||||
<dt><a id="PCF" href="#PCF"><pre>PCF</pre></a></dt>
|
||||
<dd>ceases fork call</dd>
|
||||
<dt><a id="PCi" href="#PCi"><pre>PCi</pre></a></dt>
|
||||
<dd>begins initialization</dd>
|
||||
<dt><a id="PCI" href="#PCI"><pre>PCI</pre></a></dt>
|
||||
<dd>ceases initialization</dd>
|
||||
<dt><a id="POc" href="#POc"><pre>POc+(u32 typeid, str label)</pre></a></dt>
|
||||
<dd>creates a type %{typeid} with label "%{label}"</dd>
|
||||
<dt><a id="PPc" href="#PPc"><pre>PPc(u32 taskid, u32 typeid)</pre></a></dt>
|
||||
<dd>creates the task %{taskid} with type %{typeid}</dd>
|
||||
<dt><a id="PPx" href="#PPx"><pre>PPx(u32 taskid)</pre></a></dt>
|
||||
<dd>executes the task %{taskid}</dd>
|
||||
<dt><a id="PPe" href="#PPe"><pre>PPe(u32 taskid)</pre></a></dt>
|
||||
<dd>ends the task %{taskid}</dd>
|
||||
<dt><a id="PQx" href="#PQx"><pre>PQx(u32 typeid)</pre></a></dt>
|
||||
<dd>begins worksharing with type %{typeid}</dd>
|
||||
<dt><a id="PQe" href="#PQe"><pre>PQe(u32 typeid)</pre></a></dt>
|
||||
<dd>ends worksharing with type %{typeid}</dd>
|
||||
</dl>
|
||||
|
||||
## Model tampi
|
||||
|
||||
List of events for the model *tampi* with identifier **`T`** at version `1.0.0`:
|
||||
<dl>
|
||||
<dt><a id="TCi" href="#TCi"><pre>TCi</pre></a></dt>
|
||||
<dd>starts issuing a non-blocking communication operation</dd>
|
||||
<dt><a id="TCI" href="#TCI"><pre>TCI</pre></a></dt>
|
||||
<dd>stops issuing a non-blocking communication operation</dd>
|
||||
<dt><a id="TGc" href="#TGc"><pre>TGc</pre></a></dt>
|
||||
<dd>starts checking pending requests from the global array</dd>
|
||||
<dt><a id="TGC" href="#TGC"><pre>TGC</pre></a></dt>
|
||||
<dd>stops checking pending requests from the global array</dd>
|
||||
<dt><a id="TLi" href="#TLi"><pre>TLi</pre></a></dt>
|
||||
<dd>enters the library code at an API function</dd>
|
||||
<dt><a id="TLI" href="#TLI"><pre>TLI</pre></a></dt>
|
||||
<dd>leaves the library code at an API function</dd>
|
||||
<dt><a id="TLp" href="#TLp"><pre>TLp</pre></a></dt>
|
||||
<dd>enters the library code at a polling function</dd>
|
||||
<dt><a id="TLP" href="#TLP"><pre>TLP</pre></a></dt>
|
||||
<dd>leaves the library code at a polling function</dd>
|
||||
<dt><a id="TQa" href="#TQa"><pre>TQa</pre></a></dt>
|
||||
<dd>starts adding a ticket/requests to a queue</dd>
|
||||
<dt><a id="TQA" href="#TQA"><pre>TQA</pre></a></dt>
|
||||
<dd>stops adding a ticket/requests to a queue</dd>
|
||||
<dt><a id="TQt" href="#TQt"><pre>TQt</pre></a></dt>
|
||||
<dd>starts transferring tickets/requests from queues to global array</dd>
|
||||
<dt><a id="TQT" href="#TQT"><pre>TQT</pre></a></dt>
|
||||
<dd>stops transferring tickets/requests from queues to global array</dd>
|
||||
<dt><a id="TRc" href="#TRc"><pre>TRc</pre></a></dt>
|
||||
<dd>starts processsing a completed request</dd>
|
||||
<dt><a id="TRC" href="#TRC"><pre>TRC</pre></a></dt>
|
||||
<dd>stops processsing a completed request</dd>
|
||||
<dt><a id="TRt" href="#TRt"><pre>TRt</pre></a></dt>
|
||||
<dd>starts testing a single request with MPI_Test</dd>
|
||||
<dt><a id="TRT" href="#TRT"><pre>TRT</pre></a></dt>
|
||||
<dd>stops testing a single request with MPI_Test</dd>
|
||||
<dt><a id="TRa" href="#TRa"><pre>TRa</pre></a></dt>
|
||||
<dd>starts testing several requests with MPI_Testall</dd>
|
||||
<dt><a id="TRA" href="#TRA"><pre>TRA</pre></a></dt>
|
||||
<dd>stops testing several requests with MPI_Testall</dd>
|
||||
<dt><a id="TRs" href="#TRs"><pre>TRs</pre></a></dt>
|
||||
<dd>starts testing several requests with MPI_Testsome</dd>
|
||||
<dt><a id="TRS" href="#TRS"><pre>TRS</pre></a></dt>
|
||||
<dd>stops testing several requests with MPI_Testsome</dd>
|
||||
<dt><a id="TTc" href="#TTc"><pre>TTc</pre></a></dt>
|
||||
<dd>starts creating a ticket linked to a set of requests and a task</dd>
|
||||
<dt><a id="TTC" href="#TTC"><pre>TTC</pre></a></dt>
|
||||
<dd>stops creating a ticket linked to a set of requests and a task</dd>
|
||||
<dt><a id="TTw" href="#TTw"><pre>TTw</pre></a></dt>
|
||||
<dd>starts waiting for a ticket completion</dd>
|
||||
<dt><a id="TTW" href="#TTW"><pre>TTW</pre></a></dt>
|
||||
<dd>stops waiting for a ticket completion</dd>
|
||||
</dl>
|
||||
|
||||
## Model nosv
|
||||
|
||||
List of events for the model *nosv* with identifier **`V`** at version `2.4.0`:
|
||||
<dl>
|
||||
<dt><a id="VTc" href="#VTc"><pre>VTc(u32 taskid, u32 typeid)</pre></a></dt>
|
||||
<dd>creates task %{taskid} with type %{typeid}</dd>
|
||||
<dt><a id="VTC" href="#VTC"><pre>VTC(u32 taskid, u32 typeid)</pre></a></dt>
|
||||
<dd>creates parallel task %{taskid} with type %{typeid}</dd>
|
||||
<dt><a id="VTx" href="#VTx"><pre>VTx(u32 taskid, u32 bodyid)</pre></a></dt>
|
||||
<dd>executes the task %{taskid} with bodyid %{bodyid}</dd>
|
||||
<dt><a id="VTe" href="#VTe"><pre>VTe(u32 taskid, u32 bodyid)</pre></a></dt>
|
||||
<dd>ends the task %{taskid} with bodyid %{bodyid}</dd>
|
||||
<dt><a id="VTp" href="#VTp"><pre>VTp(u32 taskid, u32 bodyid)</pre></a></dt>
|
||||
<dd>pauses the task %{taskid} with bodyid %{bodyid}</dd>
|
||||
<dt><a id="VTr" href="#VTr"><pre>VTr(u32 taskid, u32 bodyid)</pre></a></dt>
|
||||
<dd>resumes the task %{taskid} with bodyid %{bodyid}</dd>
|
||||
<dt><a id="VYc" href="#VYc"><pre>VYc+(u32 typeid, str label)</pre></a></dt>
|
||||
<dd>creates task type %{typeid} with label "%{label}"</dd>
|
||||
<dt><a id="VSr" href="#VSr"><pre>VSr</pre></a></dt>
|
||||
<dd>receives a task from another thread</dd>
|
||||
<dt><a id="VSs" href="#VSs"><pre>VSs</pre></a></dt>
|
||||
<dd>sends a task to another thread</dd>
|
||||
<dt><a id="VS@" href="#VS@"><pre>VS@</pre></a></dt>
|
||||
<dd>self assigns itself a task</dd>
|
||||
<dt><a id="VSh" href="#VSh"><pre>VSh</pre></a></dt>
|
||||
<dd>enters the hungry state, waiting for work</dd>
|
||||
<dt><a id="VSf" href="#VSf"><pre>VSf</pre></a></dt>
|
||||
<dd>is no longer hungry</dd>
|
||||
<dt><a id="VS[" href="#VS["><pre>VS[</pre></a></dt>
|
||||
<dd>enters scheduler server mode</dd>
|
||||
<dt><a id="VS]" href="#VS]"><pre>VS]</pre></a></dt>
|
||||
<dd>leaves scheduler server mode</dd>
|
||||
<dt><a id="VU[" href="#VU["><pre>VU[</pre></a></dt>
|
||||
<dd>starts submitting a task</dd>
|
||||
<dt><a id="VU]" href="#VU]"><pre>VU]</pre></a></dt>
|
||||
<dd>stops submitting a task</dd>
|
||||
<dt><a id="VMa" href="#VMa"><pre>VMa</pre></a></dt>
|
||||
<dd>starts allocating memory</dd>
|
||||
<dt><a id="VMA" href="#VMA"><pre>VMA</pre></a></dt>
|
||||
<dd>stops allocating memory</dd>
|
||||
<dt><a id="VMf" href="#VMf"><pre>VMf</pre></a></dt>
|
||||
<dd>starts freeing memory</dd>
|
||||
<dt><a id="VMF" href="#VMF"><pre>VMF</pre></a></dt>
|
||||
<dd>stops freeing memory</dd>
|
||||
<dt><a id="VAr" href="#VAr"><pre>VAr</pre></a></dt>
|
||||
<dd>enters nosv_create()</dd>
|
||||
<dt><a id="VAR" href="#VAR"><pre>VAR</pre></a></dt>
|
||||
<dd>leaves nosv_create()</dd>
|
||||
<dt><a id="VAd" href="#VAd"><pre>VAd</pre></a></dt>
|
||||
<dd>enters nosv_destroy()</dd>
|
||||
<dt><a id="VAD" href="#VAD"><pre>VAD</pre></a></dt>
|
||||
<dd>leaves nosv_destroy()</dd>
|
||||
<dt><a id="VAs" href="#VAs"><pre>VAs</pre></a></dt>
|
||||
<dd>enters nosv_submit()</dd>
|
||||
<dt><a id="VAS" href="#VAS"><pre>VAS</pre></a></dt>
|
||||
<dd>leaves nosv_submit()</dd>
|
||||
<dt><a id="VAp" href="#VAp"><pre>VAp</pre></a></dt>
|
||||
<dd>enters nosv_pause()</dd>
|
||||
<dt><a id="VAP" href="#VAP"><pre>VAP</pre></a></dt>
|
||||
<dd>leaves nosv_pause()</dd>
|
||||
<dt><a id="VAy" href="#VAy"><pre>VAy</pre></a></dt>
|
||||
<dd>enters nosv_yield()</dd>
|
||||
<dt><a id="VAY" href="#VAY"><pre>VAY</pre></a></dt>
|
||||
<dd>leaves nosv_yield()</dd>
|
||||
<dt><a id="VAw" href="#VAw"><pre>VAw</pre></a></dt>
|
||||
<dd>enters nosv_waitfor()</dd>
|
||||
<dt><a id="VAW" href="#VAW"><pre>VAW</pre></a></dt>
|
||||
<dd>leaves nosv_waitfor()</dd>
|
||||
<dt><a id="VAc" href="#VAc"><pre>VAc</pre></a></dt>
|
||||
<dd>enters nosv_schedpoint()</dd>
|
||||
<dt><a id="VAC" href="#VAC"><pre>VAC</pre></a></dt>
|
||||
<dd>leaves nosv_schedpoint()</dd>
|
||||
<dt><a id="VAa" href="#VAa"><pre>VAa</pre></a></dt>
|
||||
<dd>enters nosv_attach()</dd>
|
||||
<dt><a id="VAA" href="#VAA"><pre>VAA</pre></a></dt>
|
||||
<dd>leaves nosv_attach()</dd>
|
||||
<dt><a id="VAe" href="#VAe"><pre>VAe</pre></a></dt>
|
||||
<dd>enters nosv_detach()</dd>
|
||||
<dt><a id="VAE" href="#VAE"><pre>VAE</pre></a></dt>
|
||||
<dd>leaves nosv_detach()</dd>
|
||||
<dt><a id="VAl" href="#VAl"><pre>VAl</pre></a></dt>
|
||||
<dd>enters nosv_mutex_lock()</dd>
|
||||
<dt><a id="VAL" href="#VAL"><pre>VAL</pre></a></dt>
|
||||
<dd>leaves nosv_mutex_lock()</dd>
|
||||
<dt><a id="VAt" href="#VAt"><pre>VAt</pre></a></dt>
|
||||
<dd>enters nosv_mutex_trylock()</dd>
|
||||
<dt><a id="VAT" href="#VAT"><pre>VAT</pre></a></dt>
|
||||
<dd>leaves nosv_mutex_trylock()</dd>
|
||||
<dt><a id="VAu" href="#VAu"><pre>VAu</pre></a></dt>
|
||||
<dd>enters nosv_mutex_unlock()</dd>
|
||||
<dt><a id="VAU" href="#VAU"><pre>VAU</pre></a></dt>
|
||||
<dd>leaves nosv_mutex_unlock()</dd>
|
||||
<dt><a id="VAb" href="#VAb"><pre>VAb</pre></a></dt>
|
||||
<dd>enters nosv_barrier_wait()</dd>
|
||||
<dt><a id="VAB" href="#VAB"><pre>VAB</pre></a></dt>
|
||||
<dd>leaves nosv_barrier_wait()</dd>
|
||||
<dt><a id="VAo" href="#VAo"><pre>VAo</pre></a></dt>
|
||||
<dd>enters nosv_cond_wait()</dd>
|
||||
<dt><a id="VAO" href="#VAO"><pre>VAO</pre></a></dt>
|
||||
<dd>leaves nosv_cond_wait()</dd>
|
||||
<dt><a id="VAg" href="#VAg"><pre>VAg</pre></a></dt>
|
||||
<dd>enters nosv_cond_signal()</dd>
|
||||
<dt><a id="VAG" href="#VAG"><pre>VAG</pre></a></dt>
|
||||
<dd>leaves nosv_cond_signal()</dd>
|
||||
<dt><a id="VAk" href="#VAk"><pre>VAk</pre></a></dt>
|
||||
<dd>enters nosv_cond_broadcast()</dd>
|
||||
<dt><a id="VAK" href="#VAK"><pre>VAK</pre></a></dt>
|
||||
<dd>leaves nosv_cond_broadcast()</dd>
|
||||
<dt><a id="VHa" href="#VHa"><pre>VHa</pre></a></dt>
|
||||
<dd>enters nosv_attach()</dd>
|
||||
<dt><a id="VHA" href="#VHA"><pre>VHA</pre></a></dt>
|
||||
<dd>leaves nosv_dettach()</dd>
|
||||
<dt><a id="VHw" href="#VHw"><pre>VHw</pre></a></dt>
|
||||
<dd>begins execution as worker</dd>
|
||||
<dt><a id="VHW" href="#VHW"><pre>VHW</pre></a></dt>
|
||||
<dd>ceases execution as worker</dd>
|
||||
<dt><a id="VHd" href="#VHd"><pre>VHd</pre></a></dt>
|
||||
<dd>begins execution as delegate</dd>
|
||||
<dt><a id="VHD" href="#VHD"><pre>VHD</pre></a></dt>
|
||||
<dd>ceases execution as delegate</dd>
|
||||
<dt><a id="VPp" href="#VPp"><pre>VPp</pre></a></dt>
|
||||
<dd>sets progress state to Progressing</dd>
|
||||
<dt><a id="VPr" href="#VPr"><pre>VPr</pre></a></dt>
|
||||
<dd>sets progress state to Resting</dd>
|
||||
<dt><a id="VPa" href="#VPa"><pre>VPa</pre></a></dt>
|
||||
<dd>sets progress state to Absorbing</dd>
|
||||
</dl>
|
9
doc/user/emulation/fig/body-model.dot
Normal file
@ -0,0 +1,9 @@
|
||||
digraph {
|
||||
graph [size="6!", ranksep="0.7", nodesep="1"];
|
||||
|
||||
Created -> Running;
|
||||
Running -> Paused [label=BODY_FLAG_PAUSE];
|
||||
Paused -> Running;
|
||||
Running -> Dead;
|
||||
Dead -> Running [label="BODY_FLAG_RESURRECT\niteration++"];
|
||||
}
|
69
doc/user/emulation/fig/body-model.svg
Normal file
@ -0,0 +1,69 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
|
||||
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<!-- Generated by graphviz version 8.1.0 (0)
|
||||
-->
|
||||
<!-- Pages: 1 -->
|
||||
<svg width="432pt" height="202pt"
|
||||
viewBox="0.00 0.00 432.00 202.47" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<g id="graph0" class="graph" transform="scale(0.805048 0.805048) rotate(0) translate(4 247.5)">
|
||||
<polygon fill="white" stroke="none" points="-4,4 -4,-247.5 532.61,-247.5 532.61,4 -4,4"/>
|
||||
<!-- Created -->
|
||||
<g id="node1" class="node">
|
||||
<title>Created</title>
|
||||
<ellipse fill="none" stroke="black" cx="246.61" cy="-225.5" rx="51.21" ry="18"/>
|
||||
<text text-anchor="middle" x="246.61" y="-220.82" font-family="Times,serif" font-size="14.00">Created</text>
|
||||
</g>
|
||||
<!-- Running -->
|
||||
<g id="node2" class="node">
|
||||
<title>Running</title>
|
||||
<ellipse fill="none" stroke="black" cx="246.61" cy="-138.5" rx="53.31" ry="18"/>
|
||||
<text text-anchor="middle" x="246.61" y="-133.82" font-family="Times,serif" font-size="14.00">Running</text>
|
||||
</g>
|
||||
<!-- Created->Running -->
|
||||
<g id="edge1" class="edge">
|
||||
<title>Created->Running</title>
|
||||
<path fill="none" stroke="black" d="M246.61,-207.3C246.61,-195.97 246.61,-180.86 246.61,-167.79"/>
|
||||
<polygon fill="black" stroke="black" points="250.11,-167.97 246.61,-157.97 243.11,-167.97 250.11,-167.97"/>
|
||||
</g>
|
||||
<!-- Paused -->
|
||||
<g id="node3" class="node">
|
||||
<title>Paused</title>
|
||||
<ellipse fill="none" stroke="black" cx="132.61" cy="-18" rx="47" ry="18"/>
|
||||
<text text-anchor="middle" x="132.61" y="-13.32" font-family="Times,serif" font-size="14.00">Paused</text>
|
||||
</g>
|
||||
<!-- Running->Paused -->
|
||||
<g id="edge2" class="edge">
|
||||
<title>Running->Paused</title>
|
||||
<path fill="none" stroke="black" d="M193.44,-135.87C130.26,-132.68 30.43,-123.26 7.11,-95.5 -2.75,-83.76 -1.84,-73.44 7.11,-61 22.79,-39.22 50.29,-28.57 75.56,-23.43"/>
|
||||
<polygon fill="black" stroke="black" points="75.98,-26.73 85.22,-21.55 74.76,-19.84 75.98,-26.73"/>
|
||||
<text text-anchor="middle" x="80.36" y="-73.58" font-family="Times,serif" font-size="14.00">BODY_FLAG_PAUSE</text>
|
||||
</g>
|
||||
<!-- Dead -->
|
||||
<g id="node4" class="node">
|
||||
<title>Dead</title>
|
||||
<ellipse fill="none" stroke="black" cx="343.61" cy="-18" rx="37" ry="18"/>
|
||||
<text text-anchor="middle" x="343.61" y="-13.32" font-family="Times,serif" font-size="14.00">Dead</text>
|
||||
</g>
|
||||
<!-- Running->Dead -->
|
||||
<g id="edge4" class="edge">
|
||||
<title>Running->Dead</title>
|
||||
<path fill="none" stroke="black" d="M260.31,-120.77C276.79,-100.63 304.62,-66.64 323.53,-43.53"/>
|
||||
<polygon fill="black" stroke="black" points="326.68,-46.22 330.3,-36.26 321.26,-41.78 326.68,-46.22"/>
|
||||
</g>
|
||||
<!-- Paused->Running -->
|
||||
<g id="edge3" class="edge">
|
||||
<title>Paused->Running</title>
|
||||
<path fill="none" stroke="black" d="M148.33,-35.34C167.75,-55.52 200.96,-90.04 223.34,-113.31"/>
|
||||
<polygon fill="black" stroke="black" points="220.31,-115.24 229.76,-120.02 225.35,-110.39 220.31,-115.24"/>
|
||||
</g>
|
||||
<!-- Dead->Running -->
|
||||
<g id="edge5" class="edge">
|
||||
<title>Dead->Running</title>
|
||||
<path fill="none" stroke="black" d="M343.24,-36.22C342.05,-52.96 337.96,-78.31 324.61,-95.5 316.51,-105.94 305.06,-114.1 293.42,-120.34"/>
|
||||
<polygon fill="black" stroke="black" points="292.09,-117.59 284.66,-125.14 295.18,-123.87 292.09,-117.59"/>
|
||||
<text text-anchor="middle" x="434.11" y="-82.2" font-family="Times,serif" font-size="14.00">BODY_FLAG_RESURRECT</text>
|
||||
<text text-anchor="middle" x="434.11" y="-64.95" font-family="Times,serif" font-size="14.00">iteration++</text>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 3.5 KiB |
BIN
doc/user/emulation/fig/breakdown-nosv.code_legend.png
Normal file
After Width: | Height: | Size: 8.5 KiB |
BIN
doc/user/emulation/fig/breakdown-nosv.png
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
doc/user/emulation/fig/breakdown.png
Normal file
After Width: | Height: | Size: 33 KiB |
Before Width: | Height: | Size: 158 KiB After Width: | Height: | Size: 158 KiB |
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
BIN
doc/user/emulation/fig/mpi-function.png
Normal file
After Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 3.2 KiB |
BIN
doc/user/emulation/fig/openmp-subsystem.png
Normal file
After Width: | Height: | Size: 9.4 KiB |
176
doc/user/emulation/fig/parallel-tasks.svg
Normal file
@ -0,0 +1,176 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="117.73958mm"
|
||||
height="26.458332mm"
|
||||
viewBox="0 0 117.73958 26.458332"
|
||||
version="1.1"
|
||||
id="svg1"
|
||||
inkscape:version="1.3 (0e150ed6c4, 2023-07-21)"
|
||||
sodipodi:docname="parallel-tasks.svg"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:document-units="mm"
|
||||
showgrid="true"
|
||||
inkscape:zoom="1.4289282"
|
||||
inkscape:cx="335.21629"
|
||||
inkscape:cy="58.085495"
|
||||
inkscape:window-width="1914"
|
||||
inkscape:window-height="1025"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="24"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="layer1">
|
||||
<inkscape:grid
|
||||
id="grid1"
|
||||
units="px"
|
||||
originx="-9.9999997"
|
||||
originy="-9.9999997"
|
||||
spacingx="0.26458333"
|
||||
spacingy="0.26458334"
|
||||
empcolor="#3f3fff"
|
||||
empopacity="0.25098039"
|
||||
color="#3f3fff"
|
||||
opacity="0.1254902"
|
||||
empspacing="5"
|
||||
dotted="false"
|
||||
gridanglex="30"
|
||||
gridanglez="30"
|
||||
visible="true" />
|
||||
</sodipodi:namedview>
|
||||
<defs
|
||||
id="defs1" />
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-2.6458333,-2.6458333)">
|
||||
<rect
|
||||
style="fill:none;stroke:none;stroke-width:0.3;stroke-linecap:round"
|
||||
id="rect9"
|
||||
width="117.73958"
|
||||
height="26.458332"
|
||||
x="2.6458333"
|
||||
y="2.6458333" />
|
||||
<rect
|
||||
style="fill:#f2f2f2;stroke:#000000;stroke-width:0.3;stroke-linecap:round"
|
||||
id="rect1"
|
||||
width="44.979168"
|
||||
height="23.8125"
|
||||
x="3.96875"
|
||||
y="3.9687502" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="6.6805291"
|
||||
y="9.5720644"
|
||||
id="text1"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan1"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans';stroke-width:0.264583"
|
||||
x="6.6805291"
|
||||
y="9.5720644">Normal task</tspan></text>
|
||||
<rect
|
||||
style="fill:#d5ffd5;stroke:#000000;stroke-width:0.3;stroke-linecap:round"
|
||||
id="rect3"
|
||||
width="39.6875"
|
||||
height="10.583333"
|
||||
x="6.614583"
|
||||
y="14.552083" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="18.784389"
|
||||
y="21.011637"
|
||||
id="text3"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3"
|
||||
style="stroke-width:0.264583"
|
||||
x="18.784389"
|
||||
y="21.011637">Body 1</tspan></text>
|
||||
<rect
|
||||
style="fill:#f2f2f2;stroke:#000000;stroke-width:0.3;stroke-linecap:round"
|
||||
id="rect4"
|
||||
width="67.46875"
|
||||
height="23.8125"
|
||||
x="51.59375"
|
||||
y="3.9687502" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="54.704952"
|
||||
y="9.4792204"
|
||||
id="text4"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans';stroke-width:0.264583"
|
||||
x="54.704952"
|
||||
y="9.4792204">Parallel task</tspan></text>
|
||||
<rect
|
||||
style="fill:#d5ffd5;stroke:#000000;stroke-width:0.3;stroke-linecap:round"
|
||||
id="rect6"
|
||||
width="21.166662"
|
||||
height="10.583335"
|
||||
x="54.239586"
|
||||
y="14.552083" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="57.148972"
|
||||
y="21.011637"
|
||||
id="text6"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan6"
|
||||
style="stroke-width:0.264583"
|
||||
x="57.148972"
|
||||
y="21.011637">Body 1</tspan></text>
|
||||
<rect
|
||||
style="fill:#d5ffd5;stroke:#000000;stroke-width:0.3;stroke-linecap:round"
|
||||
id="rect7"
|
||||
width="21.166662"
|
||||
height="10.583335"
|
||||
x="78.052078"
|
||||
y="14.552084" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="80.997643"
|
||||
y="21.011639"
|
||||
id="text7"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan7"
|
||||
style="stroke-width:0.264583"
|
||||
x="80.997643"
|
||||
y="21.011639">Body 2</tspan></text>
|
||||
<rect
|
||||
style="fill:#d5ffd5;stroke:#000000;stroke-width:0.3;stroke-linecap:round"
|
||||
id="rect8"
|
||||
width="14.552085"
|
||||
height="10.583334"
|
||||
x="101.86458"
|
||||
y="14.552084" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="105.3207"
|
||||
y="20.895952"
|
||||
id="text8"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan8"
|
||||
style="stroke-width:0.264583"
|
||||
x="105.3207"
|
||||
y="20.895952">...</tspan></text>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 5.9 KiB |