Compare commits
572 Commits
releases/2
...
dependabot
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7e25a49cae | ||
|
|
23fae3b1bc | ||
|
|
a28fd2e009 | ||
|
|
6f0db3330a | ||
|
|
c01f50e3ff | ||
|
|
8bc724d160 | ||
|
|
bbddb89171 | ||
|
|
6367206ea8 | ||
|
|
f4b2f950f2 | ||
|
|
59e9f50ec6 | ||
|
|
0a21205ad4 | ||
|
|
4fde957689 | ||
|
|
6a50ea3c74 | ||
|
|
88c8143dd8 | ||
|
|
f094ef81f0 | ||
|
|
de81bbbbc2 | ||
|
|
9faf18b0ff | ||
|
|
1d03b0813b | ||
|
|
27bf494355 | ||
|
|
9f6c3e997f | ||
|
|
7965213014 | ||
|
|
e5a6077877 | ||
|
|
0649865372 | ||
|
|
32b6362076 | ||
|
|
17008c9389 | ||
|
|
5f2045909e | ||
|
|
a04d59d779 | ||
|
|
926a0591ff | ||
|
|
1aa0c0ca0d | ||
|
|
4752237871 | ||
|
|
336a69ec24 | ||
|
|
be7c70c8c4 | ||
|
|
65439eda5d | ||
|
|
1b2eed0bbe | ||
|
|
dcf9247bc8 | ||
|
|
adb4703d82 | ||
|
|
d18d8a457f | ||
|
|
20ad8b43a1 | ||
|
|
2bcc94064f | ||
|
|
3e2037c943 | ||
|
|
ea639a8c48 | ||
|
|
7e88a9d6c8 | ||
|
|
71e7015d39 | ||
|
|
3fb60dc41c | ||
|
|
47939684df | ||
|
|
82cdc116c1 | ||
|
|
e07fe02cb9 | ||
|
|
b7745a1895 | ||
|
|
e2e9d6056f | ||
|
|
9fe38f1a9c | ||
|
|
ef14b50d79 | ||
|
|
34b2b66b69 | ||
|
|
358cd4b709 | ||
|
|
5a4f632680 | ||
|
|
ff8d8a5b16 | ||
|
|
942bc8b1ba | ||
|
|
9ab0a6d2f1 | ||
|
|
5b655d3c50 | ||
|
|
8e52742f86 | ||
|
|
182b44f6cc | ||
|
|
3e42ddbde5 | ||
|
|
a2cc6a036f | ||
|
|
15421001fc | ||
|
|
79ca3d2fb9 | ||
|
|
2f65827f9f | ||
|
|
f7d8bdef46 | ||
|
|
14639d292d | ||
|
|
b31aad78b0 | ||
|
|
2fb683d667 | ||
|
|
42c33ac7b1 | ||
|
|
521da22797 | ||
|
|
e51ba62831 | ||
|
|
0b49bb99d0 | ||
|
|
889f2f54a2 | ||
|
|
cc8aeb0c09 | ||
|
|
e1b9d8c167 | ||
|
|
0f6b9abee8 | ||
|
|
df029eb9c7 | ||
|
|
f3fc503288 | ||
|
|
02dec1c2d9 | ||
|
|
9e2bd77abb | ||
|
|
948fc265b4 | ||
|
|
f49f84a4b1 | ||
|
|
ddb4902c33 | ||
|
|
8e69f2c278 | ||
|
|
402d251483 | ||
|
|
f66c9492d3 | ||
|
|
df7b047de6 | ||
|
|
8d77a52e81 | ||
|
|
8960da9014 | ||
|
|
04c9a52b7f | ||
|
|
06a27e7b31 | ||
|
|
a84d615abd | ||
|
|
ba34fa77e8 | ||
|
|
a3de4c17a1 | ||
|
|
0ad0a6bfaa | ||
|
|
c565bf0c37 | ||
|
|
04db11e921 | ||
|
|
fbec7be5e0 | ||
|
|
89e4cb4252 | ||
|
|
3481568a39 | ||
|
|
8eb26dce6c | ||
|
|
9866bc4d37 | ||
|
|
df2ff92d21 | ||
|
|
4c67ab7381 | ||
|
|
5e3176d617 | ||
|
|
261cf4e4dc | ||
|
|
488abd0ad2 | ||
|
|
2086041552 | ||
|
|
072dcea299 | ||
|
|
68d4ed91ed | ||
|
|
dfc91186a1 | ||
|
|
9cdf1a17ad | ||
|
|
aa69f00e8d | ||
|
|
056282b7ef | ||
|
|
fef3d0d3aa | ||
|
|
aa2dcb1f46 | ||
|
|
dd8f4f3661 | ||
|
|
ec40652cea | ||
|
|
e393678590 | ||
|
|
23424ab73c | ||
|
|
886e0b9f59 | ||
|
|
dde7e70771 | ||
|
|
b71906c672 | ||
|
|
c61de14c66 | ||
|
|
b29a08d15c | ||
|
|
a8a493accf | ||
|
|
8ef3834fe9 | ||
|
|
25e5818645 | ||
|
|
320e2bad57 | ||
|
|
90087dbb48 | ||
|
|
fd0809ead4 | ||
|
|
33b2e6bb51 | ||
|
|
0a7d1d770f | ||
|
|
55d7765704 | ||
|
|
148daf035b | ||
|
|
cac6aadcc8 | ||
|
|
60109caf63 | ||
|
|
152b4dfc0d | ||
|
|
8a0317101c | ||
|
|
275e14d94a | ||
|
|
6391b0c9f6 | ||
|
|
ddc395b6cb | ||
|
|
1f01036997 | ||
|
|
635f5d373d | ||
|
|
e4c38e3afd | ||
|
|
6d3fbf4237 | ||
|
|
bbfe22732f | ||
|
|
d217847714 | ||
|
|
0520216481 | ||
|
|
ea1ffbaf7f | ||
|
|
bd315f4b6a | ||
|
|
65b8bdf892 | ||
|
|
f80793e420 | ||
|
|
791762fb19 | ||
|
|
c18041ab53 | ||
|
|
725aae4dbd | ||
|
|
62f5bd6570 | ||
|
|
a6903b8398 | ||
|
|
24209239bf | ||
|
|
f9d20d5aa0 | ||
|
|
2c6a2a1102 | ||
|
|
9c94873842 | ||
|
|
5dda9f333b | ||
|
|
0d05f87004 | ||
|
|
94d1d7a033 | ||
|
|
ca87784a29 | ||
|
|
fcbb80d372 | ||
|
|
15ff4e6596 | ||
|
|
f37cf22db8 | ||
|
|
525c031959 | ||
|
|
c759f8df86 | ||
|
|
35330d5320 | ||
|
|
9cca05def8 | ||
|
|
e3988cd6a8 | ||
|
|
1e2b7c66f7 | ||
|
|
44f7bf7e3f | ||
|
|
d4c342fc79 | ||
|
|
009951d969 | ||
|
|
0a271c136a | ||
|
|
7d2afa4d38 | ||
|
|
ba735c9149 | ||
|
|
8427493446 | ||
|
|
734bc400ec | ||
|
|
04f2485334 | ||
|
|
ad12f114f4 | ||
|
|
bf760b663e | ||
|
|
0e642e984b | ||
|
|
055e3d274f | ||
|
|
ed0ce165ce | ||
|
|
d1f72e2d01 | ||
|
|
0e2bde2397 | ||
|
|
27adf58220 | ||
|
|
db6aeb7a65 | ||
|
|
9ecebdd202 | ||
|
|
abfbdd1b96 | ||
|
|
7bb542fa70 | ||
|
|
4c40716e95 | ||
|
|
c608771e03 | ||
|
|
3e2c2c06af | ||
|
|
7ff517466c | ||
|
|
c1cfb00f81 | ||
|
|
1e959c7473 | ||
|
|
fa7a4f44b5 | ||
|
|
74bf3d4e38 | ||
|
|
d5d9fd11b3 | ||
|
|
df03b0437a | ||
|
|
6ab5ef72d5 | ||
|
|
b0b28e3853 | ||
|
|
a9d2dd0b02 | ||
|
|
ec239b3d5f | ||
|
|
405d97e4a5 | ||
|
|
718b5a60bf | ||
|
|
243898560f | ||
|
|
51b5bc5ec4 | ||
|
|
8ee8f4e112 | ||
|
|
eec370a88b | ||
|
|
fa1cc89cf3 | ||
|
|
3cae6e7aea | ||
|
|
007b6fd82c | ||
|
|
cb5377fb1d | ||
|
|
b3a13af9ef | ||
|
|
54e61ac9f5 | ||
|
|
a6ea22ad0e | ||
|
|
2b14ea97fc | ||
|
|
97588dc118 | ||
|
|
0ab0d42f2b | ||
|
|
258c72555c | ||
|
|
07bcb8b6ed | ||
|
|
c1a28d0942 | ||
|
|
1b43b3c566 | ||
|
|
d553d4cd55 | ||
|
|
39ba1ed03f | ||
|
|
f3fe6b3f00 | ||
|
|
0aa466e094 | ||
|
|
28208c6c9a | ||
|
|
c6d78def6e | ||
|
|
d3d3ee55ef | ||
|
|
7c590bf180 | ||
|
|
a7de95a8a4 | ||
|
|
42245fc7c3 | ||
|
|
0905c763dd | ||
|
|
409ed190de | ||
|
|
7ab79be0f6 | ||
|
|
76b1861f86 | ||
|
|
f90a4b9d31 | ||
|
|
685ac0d0a1 | ||
|
|
21201833ec | ||
|
|
cf58a83094 | ||
|
|
37bac6ebcd | ||
|
|
be5c755c32 | ||
|
|
c241405c5e | ||
|
|
441427abc8 | ||
|
|
164d101295 | ||
|
|
acecf31642 | ||
|
|
9320fa7c86 | ||
|
|
53baeacc2e | ||
|
|
01b4faf47f | ||
|
|
f84d1c531a | ||
|
|
80feb465f6 | ||
|
|
bc78fd359e | ||
|
|
4804ff8b1e | ||
|
|
0bdd658317 | ||
|
|
d722e42052 | ||
|
|
ca4c276072 | ||
|
|
57d794c810 | ||
|
|
eaa3098920 | ||
|
|
558e713043 | ||
|
|
6dd448d9cc | ||
|
|
b027766b0a | ||
|
|
b02ddc5831 | ||
|
|
45d6aa2171 | ||
|
|
598da6e5c0 | ||
|
|
c50bd2b55f | ||
|
|
1a235ffe79 | ||
|
|
e52f922d35 | ||
|
|
4fdbb2d4e8 | ||
|
|
815980f290 | ||
|
|
ed061d5179 | ||
|
|
6b898fc8d9 | ||
|
|
eaae00c2ca | ||
|
|
a5d53aeaef | ||
|
|
9421f4cf2d | ||
|
|
a6463c1ac6 | ||
|
|
058001eb84 | ||
|
|
72cb4e4820 | ||
|
|
91660b1c05 | ||
|
|
493a338ad2 | ||
|
|
8231d57c38 | ||
|
|
9f87f72ca6 | ||
|
|
965313ba0b | ||
|
|
e087ed083c | ||
|
|
758524978b | ||
|
|
fe6ae4fbdd | ||
|
|
71836a959d | ||
|
|
a8e9989383 | ||
|
|
807b77c38e | ||
|
|
63e7e2dd3e | ||
|
|
65c3c7c20a | ||
|
|
c491381a0d | ||
|
|
44310535ff | ||
|
|
ccfe58cf84 | ||
|
|
b7edd5df69 | ||
|
|
cf0c141e12 | ||
|
|
0ea23ec538 | ||
|
|
0829e8262d | ||
|
|
613e4f5fac | ||
|
|
94de12b19d | ||
|
|
0e08ba1edc | ||
|
|
e23704ef5e | ||
|
|
03d54a579e | ||
|
|
bd7b6b3358 | ||
|
|
9ee5d867d6 | ||
|
|
57425b934f | ||
|
|
823d327476 | ||
|
|
309539667a | ||
|
|
712c5fbd39 | ||
|
|
5bab612ecc | ||
|
|
08fa27762e | ||
|
|
7f5ba4e074 | ||
|
|
a0614c4cb8 | ||
|
|
1a288f0e9a | ||
|
|
97381e0b63 | ||
|
|
d85e6c34a7 | ||
|
|
b66488e4ff | ||
|
|
0137fd7008 | ||
|
|
242336c97f | ||
|
|
bbb06c4f76 | ||
|
|
a329611349 | ||
|
|
eb94c80804 | ||
|
|
d1f71ee233 | ||
|
|
54a68c8a13 | ||
|
|
4237de6bf1 | ||
|
|
aaddfb3a00 | ||
|
|
1fd65ce0f9 | ||
|
|
95accde9df | ||
|
|
90437f7efa | ||
|
|
7150a98d95 | ||
|
|
a530a53eee | ||
|
|
61c5a80fa6 | ||
|
|
a6e4d8fc30 | ||
|
|
6607e5b8c2 | ||
|
|
165f574d8f | ||
|
|
aaa08d013a | ||
|
|
a7edeb53d1 | ||
|
|
5d6d6a2cfe | ||
|
|
d2dcdf86ba | ||
|
|
adbfc53374 | ||
|
|
20af42cfd9 | ||
|
|
570817998d | ||
|
|
0f33a77a27 | ||
|
|
21a90f4e78 | ||
|
|
56301d8878 | ||
|
|
0c041d7ebc | ||
|
|
23462aea6b | ||
|
|
b700040e29 | ||
|
|
d9e04c3b9e | ||
|
|
a5e33f10ff | ||
|
|
2ee8b29f64 | ||
|
|
ffa6e8458d | ||
|
|
af27b6f16a | ||
|
|
ecd1972c24 | ||
|
|
7931938ea4 | ||
|
|
bb773137f1 | ||
|
|
dddc85f68f | ||
|
|
bd5bd56d29 | ||
|
|
e965bea8fe | ||
|
|
ab3452ce59 | ||
|
|
f7f8636fe4 | ||
|
|
43bb86d384 | ||
|
|
5203d3483b | ||
|
|
a61a9be495 | ||
|
|
081f5aad8a | ||
|
|
8181f30a67 | ||
|
|
276153d1ce | ||
|
|
44d56b9dc7 | ||
|
|
a9dffa8d70 | ||
|
|
b2e14f9fad | ||
|
|
71af0eef38 | ||
|
|
d29207e201 | ||
|
|
fa0a6ab9d1 | ||
|
|
c01fdc9276 | ||
|
|
c71ee333f8 | ||
|
|
b380eb06ee | ||
|
|
e4311aae46 | ||
|
|
6bdc1597ed | ||
|
|
8b5b7a627b | ||
|
|
60730f61a4 | ||
|
|
cc463a7757 | ||
|
|
a1416ed68f | ||
|
|
4cf85dbda0 | ||
|
|
819feeb56d | ||
|
|
b6f1ffceca | ||
|
|
908fa51742 | ||
|
|
2a33f35c43 | ||
|
|
d1e1555f2f | ||
|
|
3fbef0d498 | ||
|
|
bed6eeb94b | ||
|
|
2928b6bfed | ||
|
|
fa1ca27576 | ||
|
|
023f6b8682 | ||
|
|
78bbe03ae8 | ||
|
|
aee4865b2f | ||
|
|
315c916ced | ||
|
|
1693ef17f0 | ||
|
|
e72afbec7e | ||
|
|
f78d0950d6 | ||
|
|
4d685194fe | ||
|
|
76459a316f | ||
|
|
83ef7d7ff9 | ||
|
|
af34891750 | ||
|
|
0061d0b286 | ||
|
|
f45dccad15 | ||
|
|
8eb529ceac | ||
|
|
6755a7e3a8 | ||
|
|
7e5f491459 | ||
|
|
eedc8d814c | ||
|
|
4b078f698d | ||
|
|
2c3535355d | ||
|
|
9e7deba8da | ||
|
|
d304be0bd7 | ||
|
|
3558f09c3d | ||
|
|
00d0c0ad0d | ||
|
|
aef989f585 | ||
|
|
79c9f4ad44 | ||
|
|
c7765c91f5 | ||
|
|
66a8600564 | ||
|
|
0180078c70 | ||
|
|
aa1fcbbad1 | ||
|
|
5365bfe0a7 | ||
|
|
534ec2e9ab | ||
|
|
c360de0f07 | ||
|
|
859319e2a5 | ||
|
|
afc599563e | ||
|
|
7c027fe19a | ||
|
|
da2a886477 | ||
|
|
a720b43041 | ||
|
|
369831caef | ||
|
|
5ef7c02bdf | ||
|
|
c974c9a478 | ||
|
|
b43b9f9d50 | ||
|
|
7cb3bf5610 | ||
|
|
bb3ed2d42e | ||
|
|
89494ab412 | ||
|
|
f0c0bf89e2 | ||
|
|
75acdac5f9 | ||
|
|
8b7537a30d | ||
|
|
03a1ba1f81 | ||
|
|
fd403e552a | ||
|
|
75c72157dd | ||
|
|
4563f71ffc | ||
|
|
5dd317c733 | ||
|
|
f97e7f1c9d | ||
|
|
0125c89738 | ||
|
|
03e48f3c17 | ||
|
|
5a04359200 | ||
|
|
e79e5122f8 | ||
|
|
70a2736695 | ||
|
|
7c595f8773 | ||
|
|
6650b8750a | ||
|
|
fb3751717f | ||
|
|
212a9bc852 | ||
|
|
5fa53aa715 | ||
|
|
1a5b0b70f9 | ||
|
|
c451a94572 | ||
|
|
fef0df6ee1 | ||
|
|
306137f86b | ||
|
|
51da30b48d | ||
|
|
c08e01d6d7 | ||
|
|
e446dac727 | ||
|
|
b64d6be8ba | ||
|
|
e8d28f7f6d | ||
|
|
641d3ab351 | ||
|
|
ebf1874eee | ||
|
|
d4dd169ca3 | ||
|
|
51a17ba642 | ||
|
|
8034d1795f | ||
|
|
b1705e8bd3 | ||
|
|
9cc4c25e48 | ||
|
|
09a45bceae | ||
|
|
3c88a9cf58 | ||
|
|
fa22836cfb | ||
|
|
c851d643b3 | ||
|
|
d6852598ce | ||
|
|
000966660c | ||
|
|
6e073b1165 | ||
|
|
4bde741de4 | ||
|
|
bcb38796ce | ||
|
|
8f406067d1 | ||
|
|
319a6584a2 | ||
|
|
854158612f | ||
|
|
f627172e5a | ||
|
|
24cd7283e3 | ||
|
|
9616c8f510 | ||
|
|
c2d09b9a15 | ||
|
|
25d94bd98b | ||
|
|
68e6484ecb | ||
|
|
fdaa4b5d03 | ||
|
|
d07f272054 | ||
|
|
588e96bc37 | ||
|
|
ace986cac0 | ||
|
|
b8eea7bf84 | ||
|
|
6210deba49 | ||
|
|
87cef53088 | ||
|
|
9e7243d67c | ||
|
|
d6cc3d7058 | ||
|
|
0f260c2ccd | ||
|
|
c42a88a190 | ||
|
|
c6ca7865fb | ||
|
|
ac1fb7b955 | ||
|
|
a0849edca1 | ||
|
|
3f7989a817 | ||
|
|
e3d7dffa83 | ||
|
|
95aef4bf51 | ||
|
|
e82283cf85 | ||
|
|
e8b6e17429 | ||
|
|
f17f17acc7 | ||
|
|
368e6bfb8a | ||
|
|
4a0098b26a | ||
|
|
681331d3d7 | ||
|
|
c3948ca799 | ||
|
|
cb53ee5db7 | ||
|
|
c0381ab08d | ||
|
|
cdd342ea49 | ||
|
|
8f30470199 | ||
|
|
e976e7b90c | ||
|
|
dcdf6750a7 | ||
|
|
a304f03852 | ||
|
|
494a9cf9a9 | ||
|
|
5cd9659033 | ||
|
|
64c21fd6f9 | ||
|
|
3036a3d249 | ||
|
|
d0eb27bd3b | ||
|
|
1083b3b58c | ||
|
|
28279013af | ||
|
|
a554611644 | ||
|
|
7d74dac3ee | ||
|
|
ae343a0178 | ||
|
|
47cdbb9df5 | ||
|
|
fda1fd9dc1 | ||
|
|
cc389c23ca | ||
|
|
86c638a595 | ||
|
|
09010657e2 | ||
|
|
1960536e8e | ||
|
|
3386b85c08 | ||
|
|
f890bf7930 | ||
|
|
c20d52dc4f | ||
|
|
0effa37811 | ||
|
|
0955faef93 | ||
|
|
caa81a0b3c | ||
|
|
ff7b49c14d | ||
|
|
8e4c4c3510 | ||
|
|
e8f21eefae | ||
|
|
3f5f923a70 | ||
|
|
f8cd53bb77 | ||
|
|
4e70b3b33b | ||
|
|
4a6e6e64c5 | ||
|
|
3ff85ae70a | ||
|
|
2afb64b9ea | ||
|
|
88c3171742 | ||
|
|
eea49f3c9e | ||
|
|
4084e9acc0 | ||
|
|
e6ff5edc3d | ||
|
|
03f23ae57a | ||
|
|
bb0e4f8ecf | ||
|
|
26c9c41b8e | ||
|
|
703e911321 | ||
|
|
dd10a520e3 | ||
|
|
65f6950f56 | ||
|
|
8eee1b52ed | ||
|
|
8d6f56dd12 | ||
|
|
48c9598892 |
@@ -4,7 +4,7 @@ resources:
|
||||
type: github
|
||||
endpoint: openvinotoolkit
|
||||
name: openvinotoolkit/openvino_contrib
|
||||
ref: releases/2023/2
|
||||
ref: master
|
||||
|
||||
variables:
|
||||
- group: github
|
||||
|
||||
@@ -32,7 +32,7 @@ resources:
|
||||
type: github
|
||||
endpoint: openvinotoolkit
|
||||
name: openvinotoolkit/openvino_contrib
|
||||
ref: releases/2023/2
|
||||
ref: master
|
||||
|
||||
jobs:
|
||||
- job: Win
|
||||
|
||||
@@ -35,7 +35,7 @@ resources:
|
||||
type: github
|
||||
endpoint: openvinotoolkit
|
||||
name: openvinotoolkit/testdata
|
||||
ref: releases/2023/2
|
||||
ref: master
|
||||
|
||||
variables:
|
||||
- group: github
|
||||
|
||||
5
.github/ISSUE_TEMPLATE/good_first_issue.yml
vendored
5
.github/ISSUE_TEMPLATE/good_first_issue.yml
vendored
@@ -41,10 +41,7 @@ body:
|
||||
Any materials related to the task, such as operator specifications,
|
||||
discussions, guides.
|
||||
value: |
|
||||
- [What is OpenVINO?](https://github.com/openvinotoolkit/openvino#what-is-openvino-toolkit)
|
||||
- [Contribution guide](https://github.com/openvinotoolkit/openvino/blob/master/CONTRIBUTING.md)
|
||||
- [Blog post on contributing to OpenVINO](https://github.com/openvinotoolkit/openvino/blob/master/CONTRIBUTING.md)
|
||||
- [User documentation](https://docs.openvino.ai/)
|
||||
- [Contribution guide - start here!](https://github.com/openvinotoolkit/openvino/blob/master/CONTRIBUTING.md)
|
||||
validations:
|
||||
required: true
|
||||
|
||||
|
||||
67
.github/actions/setup_python/action.yml
vendored
Normal file
67
.github/actions/setup_python/action.yml
vendored
Normal file
@@ -0,0 +1,67 @@
|
||||
name: 'Setup Python and pip cache'
|
||||
description: 'Setups Python with the provided version and sets up the pip cache'
|
||||
inputs:
|
||||
version:
|
||||
description: 'Python version to install'
|
||||
required: true
|
||||
pip-cache-path:
|
||||
description: 'Path on share where the pip cache is stored'
|
||||
required: false
|
||||
should-setup-pip-paths:
|
||||
description: 'If the action should setup `PIP_CACHE_DIR` & `PIP_INSTALL_PATH` env variables'
|
||||
required: false
|
||||
default: 'false'
|
||||
self-hosted-runner:
|
||||
description: 'If the runner is self-hosted'
|
||||
required: false
|
||||
default: 'true'
|
||||
show-cache-info:
|
||||
description: 'If the action should show the share space occupied by cache'
|
||||
required: false
|
||||
default: 'false'
|
||||
runs:
|
||||
using: 'composite'
|
||||
steps:
|
||||
|
||||
- if: ${{ runner.os == 'Linux' && inputs.self-hosted-runner == 'true' }}
|
||||
name: Install 'actions/setup-python@v4' dependencies
|
||||
shell: bash
|
||||
run: apt-get update && apt-get install -y ca-certificates software-properties-common
|
||||
|
||||
- if: ${{ runner.os == 'Linux' && runner.arch == 'ARM64' }}
|
||||
name: Setup sudo and python3
|
||||
shell: bash
|
||||
run: apt-get update && apt-get install -y sudo python3 # Needed for the deadsnakes action
|
||||
|
||||
- if: ${{ runner.os == 'Linux' && runner.arch == 'ARM64' }}
|
||||
name: Setup Python ${{ inputs.version }}
|
||||
uses: akashchi/deadsnakes-action@f01521a69eee61eaca3a34440bea3ce838317846
|
||||
with:
|
||||
python-version: ${{ inputs.version }}
|
||||
|
||||
- if: ${{ runner.os == 'macOS' || runner.os == 'Windows' || (runner.os == 'Linux' && runner.arch != 'ARM64') }}
|
||||
name: Setup Python ${{ inputs.version }}
|
||||
uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: ${{ inputs.version }}
|
||||
env:
|
||||
PIP_CACHE_DIR: ${{ inputs.self-hosted-runner == 'true' && inputs.pip-cache-path || '' }}
|
||||
|
||||
- if: ${{ inputs.should-setup-pip-paths == 'true' }}
|
||||
name: Setup pip variables (cache and install path)
|
||||
shell: bash
|
||||
run: |
|
||||
PIP_VER=$(python3 -c "import pip; print(pip.__version__)")
|
||||
echo "Using pip version: ${PIP_VER}"
|
||||
echo "PIP_CACHE_DIR=${{ inputs.pip-cache-path }}/${PIP_VER}" >> $GITHUB_ENV
|
||||
echo "PIP_INSTALL_PATH=$(python3 -c 'import sysconfig; print(sysconfig.get_paths()["purelib"])')" >> $GITHUB_ENV
|
||||
|
||||
- if: ${{ inputs.show-cache-info == 'true' }}
|
||||
name: Get pip cache info
|
||||
shell: bash
|
||||
run: |
|
||||
echo "Cache size: "
|
||||
du -h -d2 ${{ env.PIP_CACHE_DIR }}
|
||||
echo "Cache info: "
|
||||
python3 -m pip cache info
|
||||
continue-on-error: true
|
||||
99
.github/actions/smart-ci/action.yml
vendored
Normal file
99
.github/actions/smart-ci/action.yml
vendored
Normal file
@@ -0,0 +1,99 @@
|
||||
name: "Smart CI action"
|
||||
description: "Returns product components affected by PR or commit"
|
||||
inputs:
|
||||
repository:
|
||||
description: "GitHub repository"
|
||||
required: true
|
||||
repo_token:
|
||||
description: "Token for access to GitHub repository"
|
||||
required: true
|
||||
pr:
|
||||
description: "GitHub PR number. If not set - commit is used"
|
||||
required: false
|
||||
commit_sha:
|
||||
description: "GitHub commit hash. Used if no PR number is set"
|
||||
required: false
|
||||
component_pattern:
|
||||
description: "Pattern to extract component name from PR label. If not set, any label is considered a component name"
|
||||
required: false
|
||||
labeler_check_name:
|
||||
description: "Name of the labeler check"
|
||||
required: false
|
||||
default: "triage"
|
||||
components_config:
|
||||
description: "Path to components configuration file"
|
||||
required: false
|
||||
default: ".github/components.yml"
|
||||
components_config_schema:
|
||||
description: "Path to the schema file for components configuration"
|
||||
required: false
|
||||
default: ".github/actions/smart-ci/components_schema.yml"
|
||||
labeler_config:
|
||||
description: "Path to labeler configuration file"
|
||||
required: false
|
||||
default: ".github/labeler.yml"
|
||||
skip_when_only_listed_labels_set:
|
||||
description: "Comma-separated list of labels. If PR has only these labels set,
|
||||
return indicator that CI can be skipped"
|
||||
required: false
|
||||
skip_when_only_listed_files_changed:
|
||||
description: "Comma-separated list of patterns (fnmatch-style). If PR has only matching files changed,
|
||||
return indicator that CI can be skipped"
|
||||
required: false
|
||||
|
||||
outputs:
|
||||
all_components:
|
||||
description: "All components listed in configuration"
|
||||
value: ${{ steps.smart_ci.outputs.all_components }}
|
||||
affected_components:
|
||||
description: "Affected components to run validation for and their validation scope"
|
||||
value: ${{ steps.smart_ci.outputs.affected_components }}
|
||||
skip_workflow:
|
||||
description: "Whether the workflow should be run with Smart CI rules applied or skipped completely"
|
||||
value: ${{ steps.smart_ci.outputs.skip_workflow }}
|
||||
|
||||
runs:
|
||||
using: "composite"
|
||||
steps:
|
||||
- name: Wait for labeler to finish
|
||||
uses: lewagon/wait-on-check-action@v1.3.1
|
||||
if: ${{ github.event_name == 'pull_request' }}
|
||||
with:
|
||||
ref: ${{ github.event.pull_request.head.sha }}
|
||||
check-name: ${{ inputs.labeler_check_name }}
|
||||
repo-token: ${{ inputs.repo_token }}
|
||||
wait-interval: 10
|
||||
|
||||
- name: checkout components file
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
sparse-checkout: .github/components.yml
|
||||
sparse-checkout-cone-mode: false
|
||||
|
||||
- name: Install Python dependencies
|
||||
uses: py-actions/py-dependency-install@v4
|
||||
with:
|
||||
path: "${{ github.action_path }}/requirements.txt"
|
||||
update-setuptools: "false"
|
||||
update-wheel: "false"
|
||||
|
||||
- name: Test functionality
|
||||
run: |
|
||||
python ${{ github.action_path }}/smart_ci_test.py
|
||||
shell: bash
|
||||
|
||||
- name: Smart CI
|
||||
id: smart_ci
|
||||
run: |
|
||||
python ${{ github.action_path }}/smart_ci.py \
|
||||
$([[ -n "${{ inputs.pr }}" ]] && echo '--pr ${{ inputs.pr }}' || echo '-s ${{ inputs.commit_sha }}') \
|
||||
-r ${{ inputs.repository }} \
|
||||
-p "${{ inputs.component_pattern }}" \
|
||||
-c "${{ inputs.components_config }}" \
|
||||
-m "${{ inputs.components_config_schema }}" \
|
||||
-l "${{ inputs.labeler_config }}" \
|
||||
--skip-when-only-listed-labels-set "${{ inputs.skip_when_only_listed_labels_set }}" \
|
||||
--skip-when-only-listed-files-changed "${{ inputs.skip_when_only_listed_files_changed }}"
|
||||
shell: bash
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ inputs.repo_token }}
|
||||
41
.github/actions/smart-ci/components_schema.yml
vendored
Normal file
41
.github/actions/smart-ci/components_schema.yml
vendored
Normal file
@@ -0,0 +1,41 @@
|
||||
# YAML schema for Smart CI configuration file components.yml (see https://json-schema.org)
|
||||
|
||||
definitions:
|
||||
component_name:
|
||||
type: string
|
||||
pattern: "^[a-zA-Z_][a-zA-Z0-9_]*$"
|
||||
|
||||
component_data:
|
||||
type: object # dict
|
||||
additionalProperties: false
|
||||
properties:
|
||||
cmake:
|
||||
type: array
|
||||
uniqueItems: true
|
||||
items:
|
||||
'$ref': '#/definitions/component_name'
|
||||
|
||||
revalidate:
|
||||
oneOf:
|
||||
- type: array
|
||||
uniqueItems: true
|
||||
items:
|
||||
'$ref': '#/definitions/component_name'
|
||||
- type: string
|
||||
enum: ['all']
|
||||
|
||||
build:
|
||||
oneOf:
|
||||
- type: array
|
||||
uniqueItems: true
|
||||
items:
|
||||
'$ref': '#/definitions/component_name'
|
||||
- type: string
|
||||
enum: ['all']
|
||||
|
||||
propertyNames: # Validates component names
|
||||
'$ref': '#/definitions/component_name'
|
||||
patternProperties:
|
||||
".*": # Component (name validated via propertyNames)
|
||||
'$ref': '#/definitions/component_data'
|
||||
additionalProperties: false
|
||||
3
.github/actions/smart-ci/requirements.txt
vendored
Normal file
3
.github/actions/smart-ci/requirements.txt
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
ghapi~=1.0.4
|
||||
pyyaml~=6.0.1
|
||||
jsonschema~=4.19.1
|
||||
225
.github/actions/smart-ci/smart_ci.py
vendored
Normal file
225
.github/actions/smart-ci/smart_ci.py
vendored
Normal file
@@ -0,0 +1,225 @@
|
||||
import os
|
||||
import re
|
||||
import argparse
|
||||
import yaml
|
||||
import json
|
||||
import jsonschema
|
||||
import logging
|
||||
from pathlib import Path
|
||||
from ghapi.all import GhApi
|
||||
from fnmatch import fnmatch
|
||||
|
||||
|
||||
class ComponentConfig:
|
||||
FullScope = {'build', 'test'}
|
||||
ScopeKeys = {'build', 'revalidate'}
|
||||
|
||||
def __init__(self, config: dict, schema: dict, all_possible_components: set):
|
||||
self.config = config
|
||||
self.log = logging.getLogger(self.__class__.__name__)
|
||||
self.all_defined_components = set(self.config.keys()) # already defined in components.yml
|
||||
# can be added to components.yml (based on labeler.yml)
|
||||
self.all_possible_components = all_possible_components.union(self.all_defined_components)
|
||||
self.validate(schema)
|
||||
|
||||
def validate(self, schema: dict) -> None:
|
||||
"""Validates syntax of configuration file"""
|
||||
jsonschema.validate(self.config, schema)
|
||||
|
||||
for component_name, data in self.config.items():
|
||||
dependent_components = set()
|
||||
for key in self.ScopeKeys:
|
||||
scope = data.get(key)
|
||||
dependent_components = dependent_components.union(set(scope) if isinstance(scope, list) else set())
|
||||
|
||||
invalid_dependents = dependent_components.difference(self.all_possible_components)
|
||||
if invalid_dependents:
|
||||
error_msg = f"dependent components of {component_name} are invalid: " \
|
||||
f"{invalid_dependents} are not listed in components config: {self.all_possible_components}"
|
||||
raise jsonschema.exceptions.ValidationError(error_msg)
|
||||
|
||||
def get_affected_components(self, changed_components_names: set) -> dict:
|
||||
"""Returns changed components, their dependencies and validation scope for them"""
|
||||
affected_components = dict()
|
||||
|
||||
# If some changed components were not defined in config or no changed components detected at all,
|
||||
# run full scope for everything (just in case)
|
||||
changed_not_defined_components = changed_components_names.difference(self.all_defined_components)
|
||||
if not changed_components_names or changed_not_defined_components:
|
||||
self.log.info(f"Changed components {changed_not_defined_components} are not defined in smart ci config, "
|
||||
"run full scope")
|
||||
affected_components.update({name: self.FullScope for name in self.all_possible_components})
|
||||
return affected_components
|
||||
|
||||
# Else check changed components' dependencies and add them to affected
|
||||
for name in changed_components_names:
|
||||
component_scopes = {k: v for k, v in self.config.get(name, dict()).items() if k in self.ScopeKeys}
|
||||
for key, dependents in component_scopes.items():
|
||||
if dependents == 'all':
|
||||
dependents = self.all_possible_components
|
||||
for dep_name in dependents:
|
||||
affected_components[dep_name] = affected_components.get(dep_name, set())
|
||||
scope = self.FullScope if key == 'revalidate' else {key}
|
||||
affected_components[dep_name] = affected_components[dep_name].union(scope)
|
||||
|
||||
if not component_scopes:
|
||||
self.log.info(f"Changed component '{name}' doesn't have {self.ScopeKeys} keys in components config. "
|
||||
f"Assuming that it affects everything, the whole scope will be started")
|
||||
for dep_name in self.all_possible_components:
|
||||
affected_components[dep_name] = self.FullScope
|
||||
|
||||
# If the component was explicitly changed, run full scope for it
|
||||
affected_components.update({name: self.FullScope for name in changed_components_names})
|
||||
self.log.info(f"Changed components with dependencies: {affected_components}")
|
||||
|
||||
# For non-affected components that are not defined in config - run full scope
|
||||
affected_components.update({name: self.FullScope for name in self.all_possible_components
|
||||
if name not in self.all_defined_components})
|
||||
|
||||
return affected_components
|
||||
|
||||
def get_static_data(self, components_names: set, data_key: str, default: str = None) -> dict:
|
||||
"""Returns requested generic static data defined for each component"""
|
||||
data = {name: self.config[name].get(data_key, default) for name in components_names}
|
||||
return data
|
||||
|
||||
|
||||
def component_name_from_label(label: str, component_pattern: str = None) -> str:
|
||||
"""Extracts component name from label"""
|
||||
component = label
|
||||
if component_pattern:
|
||||
matches = re.findall(component_pattern, label)
|
||||
component = matches[0] if matches else None
|
||||
component = component.replace(' ', '_') if component else None
|
||||
return component
|
||||
|
||||
|
||||
def get_changed_component_names(pr, all_possible_components: set, component_pattern: str = None) -> set:
|
||||
"""Returns component names changed in a given PR"""
|
||||
components = set()
|
||||
for label in pr.labels:
|
||||
component = component_name_from_label(label.name, component_pattern)
|
||||
if component:
|
||||
components.add(component)
|
||||
elif label.name in all_possible_components:
|
||||
# Allow any labels defined explicitly in labeler config as components
|
||||
# (predefined labels, such as "do not merge", are still ignored)
|
||||
components.add(label.name)
|
||||
|
||||
return components
|
||||
|
||||
|
||||
def parse_args():
|
||||
parser = argparse.ArgumentParser(description='Returns product components changed in a given PR or commit')
|
||||
parser.add_argument('--pr', type=int, required=False, help='PR number. If not set, --commit is used')
|
||||
parser.add_argument('-s', '--commit-sha', required=False, help='Commit SHA. If not set, --pr is used')
|
||||
parser.add_argument('-r', '--repo', help='GitHub repository')
|
||||
parser.add_argument('-p', '--pattern', default=None, help='Pattern to extract component name from PR label. '
|
||||
'If not set, any label is considered a component name')
|
||||
parser.add_argument('-c', '--components-config', default='.github/components.yml',
|
||||
help='Path to config file with info about dependencies between components')
|
||||
parser.add_argument('-m', '--components-config-schema', default='.github/actions/smart-ci/components_schema.yml',
|
||||
help='Path to the schema file for components config')
|
||||
parser.add_argument('-l', '--labeler-config', default='.github/labeler.yml',
|
||||
help='Path to PR labeler config file')
|
||||
parser.add_argument('--skip-when-only-listed-labels-set',
|
||||
help="Comma-separated list of labels. If PR has only these labels set, "
|
||||
"return indicator that CI can be skipped")
|
||||
parser.add_argument('--skip-when-only-listed-files-changed',
|
||||
help="Comma-separated list of patterns (fnmatch-style). If PR has only matching files changed, "
|
||||
"return indicator that CI can be skipped")
|
||||
args = parser.parse_args()
|
||||
return args
|
||||
|
||||
|
||||
def init_logger():
|
||||
logging.basicConfig(level=logging.INFO,
|
||||
format='%(asctime)s %(name)-15s %(levelname)-8s %(message)s',
|
||||
datefmt='%m-%d-%Y %H:%M:%S')
|
||||
|
||||
|
||||
def set_github_output(name: str, value: str, github_output_var_name: str = 'GITHUB_OUTPUT'):
|
||||
"""Sets output variable for a GitHub Action"""
|
||||
logger = logging.getLogger(__name__)
|
||||
# In an environment variable "GITHUB_OUTPUT" GHA stores path to a file to write outputs to
|
||||
with open(os.environ.get(github_output_var_name), 'a+') as file:
|
||||
logger.info(f"Add {name}={value} to {github_output_var_name}")
|
||||
print(f'{name}={value}', file=file)
|
||||
|
||||
|
||||
def main():
|
||||
init_logger()
|
||||
logger = logging.getLogger(__name__)
|
||||
args = parse_args()
|
||||
for arg, value in sorted(vars(args).items()):
|
||||
logger.info(f"Argument {arg}: {value}")
|
||||
|
||||
with open(Path(args.components_config), 'r') as config:
|
||||
components_config = yaml.safe_load(config)
|
||||
|
||||
owner, repository = args.repo.split('/')
|
||||
gh_api = GhApi(owner=owner, repo=repository, token=os.getenv("GITHUB_TOKEN"))
|
||||
pr = gh_api.pulls.get(args.pr) if args.pr else None
|
||||
|
||||
with open(Path(args.components_config_schema), 'r') as schema_file:
|
||||
schema = yaml.safe_load(schema_file)
|
||||
|
||||
with open(Path(args.labeler_config), 'r') as labeler_file:
|
||||
labeler_config = yaml.safe_load(labeler_file)
|
||||
|
||||
all_possible_components = set()
|
||||
for label in labeler_config.keys():
|
||||
component_name = component_name_from_label(label, args.pattern)
|
||||
all_possible_components.add(component_name if component_name else label)
|
||||
|
||||
no_match_files_changed = False
|
||||
# For now, we don't want to apply smart ci rules for post-commits
|
||||
is_postcommit = not pr
|
||||
if is_postcommit:
|
||||
logger.info(f"The run is a post-commit run, executing full validation scope for all components")
|
||||
else:
|
||||
no_match_files_changed = 'no-match-files' in [label.name for label in pr.labels]
|
||||
if no_match_files_changed:
|
||||
logger.info(f"There are changed files that don't match any pattern in labeler config, "
|
||||
f"executing full validation scope for all components")
|
||||
|
||||
run_full_scope = is_postcommit or no_match_files_changed
|
||||
|
||||
# In post-commits - validate all components regardless of changeset
|
||||
# In pre-commits - validate only changed components with their dependencies
|
||||
all_defined_components = components_config.keys()
|
||||
changed_component_names = set(all_defined_components) if run_full_scope else \
|
||||
get_changed_component_names(pr, all_possible_components, args.pattern)
|
||||
|
||||
logger.info(f"changed_component_names: {changed_component_names}")
|
||||
|
||||
cfg = ComponentConfig(components_config, schema, all_possible_components)
|
||||
affected_components = cfg.get_affected_components(changed_component_names)
|
||||
|
||||
skip_workflow = False
|
||||
if args.pr and not run_full_scope:
|
||||
if args.skip_when_only_listed_labels_set:
|
||||
excepted_labels = set(args.skip_when_only_listed_labels_set.split(','))
|
||||
excepted_labels_only = changed_component_names - excepted_labels == set()
|
||||
skip_workflow = excepted_labels_only
|
||||
|
||||
if not skip_workflow and args.skip_when_only_listed_files_changed:
|
||||
# To avoid spending extra API requests running step below only if necessary
|
||||
changed_files = gh_api.pulls.list_files(args.pr)
|
||||
patterns = set(args.skip_when_only_listed_files_changed.split(','))
|
||||
|
||||
matched_files_only = all(any(fnmatch(f.filename, pattern) for pattern in patterns) for f in changed_files)
|
||||
logger.debug(f"matched files only: {matched_files_only}")
|
||||
skip_workflow = matched_files_only
|
||||
|
||||
if skip_workflow:
|
||||
logger.info(f"All changes are marked for skip, workflow may be skipped")
|
||||
set_github_output("skip_workflow", str(skip_workflow))
|
||||
|
||||
# Syntactic sugar for easier use in GHA pipeline
|
||||
affected_components_output = {name: {s: True for s in scope} for name, scope in affected_components.items()}
|
||||
set_github_output("affected_components", json.dumps(affected_components_output))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
214
.github/actions/smart-ci/smart_ci_test.py
vendored
Normal file
214
.github/actions/smart-ci/smart_ci_test.py
vendored
Normal file
@@ -0,0 +1,214 @@
|
||||
import logging
|
||||
import sys
|
||||
import unittest
|
||||
from smart_ci import ComponentConfig
|
||||
|
||||
log = logging.getLogger()
|
||||
log.level = logging.DEBUG
|
||||
|
||||
|
||||
def log_handler(func):
|
||||
def wrapper(*args, **kwargs):
|
||||
stream_handler = logging.StreamHandler(sys.stdout)
|
||||
log.addHandler(stream_handler)
|
||||
result = func(*args, **kwargs)
|
||||
log.removeHandler(stream_handler)
|
||||
return result
|
||||
return wrapper
|
||||
|
||||
|
||||
class TestComponentConfig(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.all_possible_components = {'comp1', 'comp2', 'comp3', 'comp4'}
|
||||
ComponentConfig.ScopeKeys = {'build', 'revalidate', '_scope_1', '_scope_2', '_scope_3'}
|
||||
|
||||
@log_handler
|
||||
def validate(self, config_data: dict, changed_components: set, expected_result: dict):
|
||||
log.info(f"{self._testMethodName}:")
|
||||
config = ComponentConfig(config_data, {}, self.all_possible_components)
|
||||
result = config.get_affected_components(changed_components)
|
||||
self.assertEqual(expected_result, result)
|
||||
|
||||
def test_no_changed_components(self):
|
||||
config_data = {
|
||||
'comp1': {'build': {}, 'revalidate': {}},
|
||||
'comp2': {'build': {}, 'revalidate': {}},
|
||||
'comp3': {'build': {}, 'revalidate': {}},
|
||||
'comp4': {'build': {}, 'revalidate': {}},
|
||||
}
|
||||
changed_components = set()
|
||||
expected_result = {
|
||||
'comp1': ComponentConfig.FullScope,
|
||||
'comp2': ComponentConfig.FullScope,
|
||||
'comp3': ComponentConfig.FullScope,
|
||||
'comp4': ComponentConfig.FullScope,
|
||||
}
|
||||
self.validate(config_data, changed_components, expected_result)
|
||||
|
||||
def test_all_components_changed(self):
|
||||
config_data = {
|
||||
'comp1': {'build': {}, 'revalidate': {}},
|
||||
'comp2': {'build': {}, 'revalidate': {}},
|
||||
'comp3': {'build': {}, 'revalidate': {}},
|
||||
'comp4': {'build': {}, 'revalidate': {}},
|
||||
}
|
||||
changed_components = {'comp1', 'comp2', 'comp3', 'comp4'}
|
||||
expected_result = {
|
||||
'comp1': ComponentConfig.FullScope,
|
||||
'comp2': ComponentConfig.FullScope,
|
||||
'comp3': ComponentConfig.FullScope,
|
||||
'comp4': ComponentConfig.FullScope,
|
||||
}
|
||||
self.validate(config_data, changed_components, expected_result)
|
||||
|
||||
def test_changed_component_not_defined(self):
|
||||
config_data = {
|
||||
'comp2': {'build': {}, 'revalidate': {}},
|
||||
'comp3': {'build': {}, 'revalidate': {}},
|
||||
'comp4': {'build': {}, 'revalidate': {}},
|
||||
}
|
||||
changed_components = {'comp1'}
|
||||
expected_result = {
|
||||
'comp1': ComponentConfig.FullScope,
|
||||
'comp2': ComponentConfig.FullScope,
|
||||
'comp3': ComponentConfig.FullScope,
|
||||
'comp4': ComponentConfig.FullScope,
|
||||
}
|
||||
self.validate(config_data, changed_components, expected_result)
|
||||
|
||||
def test_component_changed_no_scope_keys(self):
|
||||
config_data = {
|
||||
'comp1': {},
|
||||
'comp2': {},
|
||||
'comp3': {},
|
||||
'comp4': {},
|
||||
}
|
||||
changed_components = {'comp1'}
|
||||
expected_result = {
|
||||
'comp1': ComponentConfig.FullScope,
|
||||
'comp2': ComponentConfig.FullScope,
|
||||
'comp3': ComponentConfig.FullScope,
|
||||
'comp4': ComponentConfig.FullScope,
|
||||
}
|
||||
self.validate(config_data, changed_components, expected_result)
|
||||
|
||||
def test_one_component_changed_dependents_empty(self):
|
||||
config_data = {
|
||||
'comp1': {'build': {}, 'revalidate': {}},
|
||||
'comp2': {'build': {}, 'revalidate': {}},
|
||||
'comp3': {'build': {}, 'revalidate': {}},
|
||||
'comp4': {'build': {}, 'revalidate': {}},
|
||||
}
|
||||
changed_components = {'comp1'}
|
||||
expected_result = {
|
||||
'comp1': ComponentConfig.FullScope,
|
||||
}
|
||||
self.validate(config_data, changed_components, expected_result)
|
||||
|
||||
def test_not_changed_dependent_component(self):
|
||||
config_data = {
|
||||
'comp1': {'build': {'comp2'}, 'revalidate': {}},
|
||||
'comp2': {'build': {}, 'revalidate': {}},
|
||||
'comp3': {'build': {}, 'revalidate': {}},
|
||||
'comp4': {'build': {}, 'revalidate': {}},
|
||||
}
|
||||
changed_components = {'comp1'}
|
||||
expected_result = {
|
||||
'comp1': ComponentConfig.FullScope,
|
||||
'comp2': {'build'}
|
||||
}
|
||||
self.validate(config_data, changed_components, expected_result)
|
||||
|
||||
def test_changed_dependent_component(self):
|
||||
config_data = {
|
||||
'comp1': {'build': {'comp2'}, 'revalidate': {}},
|
||||
'comp2': {'build': {}, 'revalidate': {}},
|
||||
'comp3': {'build': {}, 'revalidate': {}},
|
||||
'comp4': {'build': {}, 'revalidate': {}},
|
||||
}
|
||||
changed_components = {'comp1', 'comp2'}
|
||||
expected_result = {
|
||||
'comp1': ComponentConfig.FullScope,
|
||||
'comp2': ComponentConfig.FullScope
|
||||
}
|
||||
self.validate(config_data, changed_components, expected_result)
|
||||
|
||||
def test_dependent_component_multiple_parents(self):
|
||||
config_data = {
|
||||
'comp1': {'_scope_1': {'comp2'}, 'revalidate': {}},
|
||||
'comp2': {'build': {}, 'revalidate': {}},
|
||||
'comp3': {'build': {}, '_scope_2': {'comp2'}, '_scope_3': {'comp2'}},
|
||||
'comp4': {'build': {}, 'revalidate': {}},
|
||||
}
|
||||
changed_components = {'comp1', 'comp3'}
|
||||
expected_result = {
|
||||
'comp1': ComponentConfig.FullScope,
|
||||
'comp2': {'_scope_1', '_scope_2', '_scope_3'},
|
||||
'comp3': ComponentConfig.FullScope
|
||||
}
|
||||
self.validate(config_data, changed_components, expected_result)
|
||||
|
||||
def test_dependent_component_empty_scopes(self):
|
||||
config_data = {
|
||||
'comp1': {'build': {}, 'revalidate': {'comp2'}},
|
||||
'comp2': {},
|
||||
'comp3': {},
|
||||
'comp4': {},
|
||||
}
|
||||
changed_components = {'comp1', 'comp3'}
|
||||
expected_result = {
|
||||
'comp1': ComponentConfig.FullScope,
|
||||
'comp2': ComponentConfig.FullScope,
|
||||
'comp3': ComponentConfig.FullScope,
|
||||
'comp4': ComponentConfig.FullScope
|
||||
}
|
||||
self.validate(config_data, changed_components, expected_result)
|
||||
|
||||
def test_changed_component_empty_dependencies(self):
|
||||
config_data = {
|
||||
'comp1': {'build': {}, 'revalidate': {}},
|
||||
'comp2': {'build': {}, 'revalidate': {}},
|
||||
'comp3': {'build': {}, 'revalidate': {}},
|
||||
'comp4': {'build': {}, 'revalidate': {}},
|
||||
}
|
||||
changed_components = {'comp1'}
|
||||
expected_result = {
|
||||
'comp1': ComponentConfig.FullScope,
|
||||
}
|
||||
self.validate(config_data, changed_components, expected_result)
|
||||
|
||||
def test_multiple_dependents(self):
|
||||
config_data = {
|
||||
'comp1': {'build': {'comp2'}, 'revalidate': {'comp3'}},
|
||||
'comp2': {'build': {}, 'revalidate': {}},
|
||||
'comp3': {'build': {'comp4'}, 'revalidate': {}},
|
||||
'comp4': {'build': {}, 'revalidate': {}},
|
||||
}
|
||||
changed_components = {'comp1'}
|
||||
expected_result = {
|
||||
'comp1': ComponentConfig.FullScope,
|
||||
'comp2': {'build'},
|
||||
'comp3': ComponentConfig.FullScope,
|
||||
# We don't consider dependencies of dependencies affected, so comp4 is not expected here
|
||||
}
|
||||
self.validate(config_data, changed_components, expected_result)
|
||||
|
||||
def test_all_as_dependents(self):
|
||||
config_data = {
|
||||
'comp1': {'build': 'all', 'revalidate': {}},
|
||||
'comp2': {'build': {}, 'revalidate': {}},
|
||||
'comp3': {'build': {}, 'revalidate': {}},
|
||||
'comp4': {'build': {}, 'revalidate': {}},
|
||||
}
|
||||
changed_components = {'comp1'}
|
||||
expected_result = {
|
||||
'comp1': ComponentConfig.FullScope,
|
||||
'comp2': {'build'},
|
||||
'comp3': {'build'},
|
||||
'comp4': {'build'},
|
||||
}
|
||||
self.validate(config_data, changed_components, expected_result)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main(verbosity=2)
|
||||
236
.github/components.yml
vendored
Normal file
236
.github/components.yml
vendored
Normal file
@@ -0,0 +1,236 @@
|
||||
Core:
|
||||
revalidate: 'all'
|
||||
|
||||
transformations:
|
||||
revalidate: 'all'
|
||||
|
||||
LP_transformations:
|
||||
revalidate:
|
||||
- CPU
|
||||
- GPU
|
||||
- PyTorch_FE
|
||||
- TF_FE
|
||||
- TFL_FE
|
||||
- ONNX_FE
|
||||
- PDPD_FE
|
||||
- POT
|
||||
|
||||
preprocessing:
|
||||
revalidate:
|
||||
- inference
|
||||
- GNA
|
||||
- C_API
|
||||
- Python_API
|
||||
|
||||
inference:
|
||||
revalidate: 'all'
|
||||
|
||||
CPU:
|
||||
revalidate:
|
||||
- C_API
|
||||
- Python_API
|
||||
- samples
|
||||
- ONNX_RT
|
||||
- PyTorch_FE
|
||||
- TF_FE
|
||||
- ONNX_FE
|
||||
build:
|
||||
- HETERO
|
||||
- AUTO_BATCH
|
||||
- TEMPLATE
|
||||
- IR_FE
|
||||
|
||||
GPU:
|
||||
build:
|
||||
- HETERO
|
||||
- AUTO_BATCH
|
||||
- TEMPLATE
|
||||
- IR_FE
|
||||
- PROXY
|
||||
|
||||
GNA:
|
||||
build:
|
||||
- HETERO
|
||||
- AUTO_BATCH
|
||||
- TEMPLATE
|
||||
- IR_FE
|
||||
|
||||
HETERO:
|
||||
revalidate:
|
||||
- CPU
|
||||
- GPU
|
||||
- GNA
|
||||
- HETERO
|
||||
- AUTO_BATCH
|
||||
- TEMPLATE
|
||||
- C_API
|
||||
- Python_API
|
||||
build:
|
||||
- IR_FE
|
||||
|
||||
AUTO_BATCH:
|
||||
revalidate:
|
||||
- CPU
|
||||
- GPU
|
||||
- GNA
|
||||
- HETERO
|
||||
- AUTO_BATCH
|
||||
- TEMPLATE
|
||||
- C_API
|
||||
- Python_API
|
||||
build:
|
||||
- IR_FE
|
||||
|
||||
TEMPLATE:
|
||||
revalidate:
|
||||
- CPU
|
||||
- GPU
|
||||
- GNA
|
||||
- HETERO
|
||||
- AUTO_BATCH
|
||||
- TEMPLATE
|
||||
- AUTO
|
||||
- C_API
|
||||
- Python_API
|
||||
- NVIDIA
|
||||
build:
|
||||
- IR_FE
|
||||
|
||||
AUTO:
|
||||
revalidate:
|
||||
- TEMPLATE
|
||||
- AUTO
|
||||
- C_API
|
||||
- Python_API
|
||||
build:
|
||||
- IR_FE
|
||||
|
||||
PROXY:
|
||||
revalidate:
|
||||
- inference
|
||||
- GPU
|
||||
build: []
|
||||
|
||||
IR_FE:
|
||||
revalidate:
|
||||
- C_API
|
||||
- Python_API
|
||||
- samples
|
||||
build:
|
||||
- CPU
|
||||
|
||||
ONNX_FE:
|
||||
revalidate:
|
||||
- MO
|
||||
build:
|
||||
- CPU
|
||||
- Python_API
|
||||
|
||||
PDPD_FE:
|
||||
revalidate:
|
||||
- MO
|
||||
build:
|
||||
- CPU
|
||||
- Python_API
|
||||
|
||||
TF_FE:
|
||||
revalidate:
|
||||
- MO
|
||||
build:
|
||||
- CPU
|
||||
- Python_API
|
||||
|
||||
TFL_FE:
|
||||
revalidate:
|
||||
- MO
|
||||
build:
|
||||
- CPU
|
||||
- Python_API
|
||||
|
||||
PyTorch_FE:
|
||||
revalidate:
|
||||
- MO
|
||||
build:
|
||||
- CPU
|
||||
- Python_API
|
||||
|
||||
C_API:
|
||||
build:
|
||||
- CPU
|
||||
- HETERO
|
||||
- AUTO_BATCH
|
||||
- AUTO
|
||||
- IR_FE
|
||||
|
||||
Python_API:
|
||||
revalidate:
|
||||
- samples
|
||||
- MO
|
||||
- POT
|
||||
- tools
|
||||
build:
|
||||
- CPU
|
||||
- HETERO
|
||||
- AUTO_BATCH
|
||||
- TEMPLATE
|
||||
- AUTO
|
||||
- IR_FE
|
||||
- ONNX_FE
|
||||
- PDPD_FE
|
||||
- TF_FE
|
||||
- TFL_FE
|
||||
- PyTorch_FE
|
||||
|
||||
samples:
|
||||
build:
|
||||
- CPU
|
||||
- AUTO_BATCH
|
||||
- AUTO
|
||||
- IR_FE
|
||||
- C_API
|
||||
- Python_API
|
||||
|
||||
IE_Tests:
|
||||
revalidate:
|
||||
- CPU
|
||||
- GPU
|
||||
- GNA
|
||||
- HETERO
|
||||
- AUTO_BATCH
|
||||
- TEMPLATE
|
||||
- AUTO
|
||||
- NVIDIA
|
||||
build:
|
||||
- IR_FE
|
||||
|
||||
MO:
|
||||
revalidate:
|
||||
- POT
|
||||
build:
|
||||
- Python_API
|
||||
|
||||
POT:
|
||||
build:
|
||||
- CPU
|
||||
- Python_API
|
||||
|
||||
tools:
|
||||
build:
|
||||
- CPU
|
||||
- Python_API
|
||||
|
||||
docs:
|
||||
revalidate: []
|
||||
build: []
|
||||
|
||||
licensing:
|
||||
revalidate: []
|
||||
build: []
|
||||
|
||||
NVIDIA:
|
||||
revalidate: []
|
||||
build: []
|
||||
|
||||
ONNX_RT:
|
||||
revalidate: []
|
||||
build: []
|
||||
39
.github/labeler.yml
vendored
39
.github/labeler.yml
vendored
@@ -48,12 +48,19 @@
|
||||
- 'scripts/**/*'
|
||||
- '.gitmodules'
|
||||
- '**/setup.py'
|
||||
- 'conan.lock'
|
||||
- 'conanfile.txt'
|
||||
- 'vcpkg.json'
|
||||
- any: ['thirdparty/**/*',
|
||||
'!thirdparty/**/CMakeLists.txt']
|
||||
|
||||
'category: docs':
|
||||
- 'docs/**/*'
|
||||
- '**/*.md'
|
||||
- any: ['docs/**/*',
|
||||
'!docs/snippets/**/*']
|
||||
|
||||
'category: docs_snippets':
|
||||
- 'docs/snippets/**/*'
|
||||
|
||||
'category: extensions':
|
||||
- 'src/core/include/openvino/core/extension.hpp'
|
||||
@@ -65,22 +72,22 @@
|
||||
|
||||
'category: GPU':
|
||||
- 'src/plugins/intel_gpu/**/*'
|
||||
- 'src/tests/**/gpu/**/*'
|
||||
- 'thirdparty/ocl/**/*'
|
||||
|
||||
'category: HETERO':
|
||||
- 'src/plugins/hetero/**/*'
|
||||
|
||||
'category: PROXY':
|
||||
- 'src/plugins/proxy/**/*'
|
||||
|
||||
'category: IE Tests':
|
||||
- 'thirdparty/gtest/**/*'
|
||||
- 'src/frontends/tests/frontend/shared/**/*'
|
||||
- any: ['src/tests/**/*',
|
||||
'!src/tests/**/gpu/**/*',
|
||||
'!src/tests/**/inference_engine/**/*']
|
||||
- 'src/tests/**/*'
|
||||
|
||||
'category: inference':
|
||||
- 'src/inference/**/*'
|
||||
- 'src/tests/functional/inference_engine/**/*'
|
||||
- 'src/cmake/**/*'
|
||||
|
||||
'category: IR FE':
|
||||
- 'src/frontends/ir/**/*'
|
||||
@@ -91,10 +98,13 @@
|
||||
'category: MO':
|
||||
- 'tools/mo/**/*'
|
||||
- 'tools/ovc/**/*'
|
||||
- 'tests/layer_tests/mo_python_api_tests/**/*'
|
||||
- 'tests/layer_tests/ovc_python_api_tests/**/*'
|
||||
|
||||
'category: ONNX FE':
|
||||
- 'src/frontends/onnx/**/*'
|
||||
- 'thirdparty/onnx/**/*'
|
||||
- 'tests/layer_tests/onnx_tests/**/*'
|
||||
|
||||
'category: packaging':
|
||||
- 'cmake/**/packaging/**/*'
|
||||
@@ -103,6 +113,7 @@
|
||||
|
||||
'category: PDPD FE':
|
||||
- 'src/frontends/paddle/**/*'
|
||||
- 'tests/layer_tests/py_frontend_tests/test_paddle_frontend.py'
|
||||
|
||||
'category: POT':
|
||||
- 'tools/pot/**/*'
|
||||
@@ -119,6 +130,7 @@
|
||||
- 'thirdparty/gflags/**/*'
|
||||
- 'thirdparty/json/**/*'
|
||||
- 'thirdparty/cnpy/**/*'
|
||||
- 'tests/samples_tests/smoke_tests/**/*'
|
||||
|
||||
'category: TEMPLATE':
|
||||
- 'src/plugins/template/**/*'
|
||||
@@ -127,6 +139,10 @@
|
||||
- 'src/frontends/tensorflow/**/*'
|
||||
- 'src/frontends/tensorflow_common/**/*'
|
||||
- 'tests/layer_tests/tensorflow_tests/**/*'
|
||||
- 'tests/layer_tests/tensorflow2_keras_tests/**/*'
|
||||
- 'tests/layer_tests/jax_tests/**/*'
|
||||
- any: ['tests/model_hub_tests/**',
|
||||
'!tests/model_hub_tests/torch_tests/**/*']
|
||||
|
||||
'category: TFL FE':
|
||||
- 'src/frontends/tensorflow_lite/**/*'
|
||||
@@ -137,12 +153,21 @@
|
||||
- 'src/frontends/pytorch/**/*'
|
||||
- 'tests/layer_tests/pytorch_tests/**/*'
|
||||
- 'src/bindings/python/src/openvino/frontend/pytorch/**/*'
|
||||
- 'tests/layer_tests/py_frontend_tests/test_torch_decoder.py'
|
||||
- 'tests/layer_tests/py_frontend_tests/test_torch_frontend.py'
|
||||
- any: ['tests/model_hub_tests/**',
|
||||
'!tests/model_hub_tests/tf_hub_tests/**/*']
|
||||
|
||||
'category: tools':
|
||||
- any: ['tools/**',
|
||||
'!tools/pot/**/*',
|
||||
'!tools/mo/**/*']
|
||||
'!tools/mo/**/*',
|
||||
'!tools/ovc/**/*']
|
||||
|
||||
'category: transformations':
|
||||
- 'src/common/transformations/**/*'
|
||||
- 'src/common/offline_transformations/**/*'
|
||||
|
||||
'category: licensing':
|
||||
- 'licensing/**/*'
|
||||
- 'LICENSE'
|
||||
|
||||
60
.github/workflows/android_arm64.yml
vendored
60
.github/workflows/android_arm64.yml
vendored
@@ -2,23 +2,10 @@ name: Android ARM64 with vcpkg
|
||||
on:
|
||||
workflow_dispatch:
|
||||
pull_request:
|
||||
paths-ignore:
|
||||
- '**/docs/**'
|
||||
- 'docs/**'
|
||||
- '**/**.md'
|
||||
- '**.md'
|
||||
- '**/layer_tests_summary/**'
|
||||
- '**/conformance/**'
|
||||
push:
|
||||
paths-ignore:
|
||||
- '**/docs/**'
|
||||
- 'docs/**'
|
||||
- '**/**.md'
|
||||
- '**.md'
|
||||
- '**/layer_tests_summary/**'
|
||||
- '**/conformance/**'
|
||||
branches:
|
||||
- master
|
||||
- 'releases/**'
|
||||
|
||||
concurrency:
|
||||
# github.ref is not unique in post-commit
|
||||
@@ -26,8 +13,32 @@ concurrency:
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
Smart_CI:
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
affected_components: "${{ steps.smart_ci.outputs.affected_components }}"
|
||||
skip_workflow: "${{ steps.smart_ci.outputs.skip_workflow }}"
|
||||
steps:
|
||||
- name: checkout action
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
sparse-checkout: .github/actions/smart-ci
|
||||
|
||||
- name: Get affected components
|
||||
id: smart_ci
|
||||
uses: ./.github/actions/smart-ci
|
||||
with:
|
||||
repository: ${{ github.repository }}
|
||||
pr: ${{ github.event.number }}
|
||||
commit_sha: ${{ github.sha }}
|
||||
component_pattern: "category: (.*)"
|
||||
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
skip_when_only_listed_labels_set: 'docs'
|
||||
skip_when_only_listed_files_changed: '*.md,*.rst,*.png,*.jpg,*.svg,*/layer_tests_summary/*,*/conformance/*'
|
||||
|
||||
Build:
|
||||
timeout-minutes: 15
|
||||
needs: Smart_CI
|
||||
timeout-minutes: 150
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
@@ -35,7 +46,7 @@ jobs:
|
||||
container:
|
||||
image: openvinogithubactions.azurecr.io/dockerhub/ubuntu:20.04
|
||||
volumes:
|
||||
- /mount/caches:/mount/caches
|
||||
- /mount:/mount
|
||||
options: -e SCCACHE_AZURE_BLOB_CONTAINER -e SCCACHE_AZURE_CONNECTION_STRING
|
||||
env:
|
||||
DEBIAN_FRONTEND: noninteractive # to prevent apt-get from waiting user input
|
||||
@@ -52,6 +63,7 @@ jobs:
|
||||
VCPKG_DEFAULT_BINARY_CACHE: '/mount/caches/ccache/android_arm64/vcpkg_cache'
|
||||
VCPKG_FORCE_SYSTEM_BINARIES: '1'
|
||||
SCCACHE_AZURE_KEY_PREFIX: android_arm64
|
||||
if: "!needs.smart_ci.outputs.skip_workflow"
|
||||
steps:
|
||||
- name: Install git
|
||||
run: apt-get update && apt-get install --assume-yes --no-install-recommends git ca-certificates
|
||||
@@ -151,10 +163,24 @@ jobs:
|
||||
-B ${BUILD_DIR}
|
||||
|
||||
- name: Clean ccache stats
|
||||
run: sccache --zero-stats
|
||||
run: ${SCCACHE_PATH} --zero-stats
|
||||
|
||||
- name: Cmake - build
|
||||
run: cmake --build ${BUILD_DIR} --parallel
|
||||
|
||||
- name: Show ccache stats
|
||||
run: ${SCCACHE_PATH} --show-stats
|
||||
|
||||
Overall_Status:
|
||||
name: ci/gha_overall_status_android
|
||||
needs: [Smart_CI, Build]
|
||||
if: ${{ always() }}
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Check status of all jobs
|
||||
if: >-
|
||||
${{
|
||||
contains(needs.*.result, 'failure') ||
|
||||
contains(needs.*.result, 'cancelled')
|
||||
}}
|
||||
run: exit 1
|
||||
|
||||
30
.github/workflows/build_doc.yml
vendored
30
.github/workflows/build_doc.yml
vendored
@@ -4,7 +4,6 @@ on:
|
||||
|
||||
env:
|
||||
DOXY_VER: '1.9.6'
|
||||
DOXYREST_VER: '2.1.3'
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.head_ref && github.ref || github.run_id }}
|
||||
@@ -26,7 +25,7 @@ jobs:
|
||||
packages: graphviz texlive liblua5.2-0 libclang1-9 libclang-cpp9
|
||||
version: 3.0
|
||||
|
||||
- uses: actions/setup-python@v4
|
||||
- uses: actions/setup-python@v5
|
||||
id: cp310
|
||||
with:
|
||||
python-version: '3.10'
|
||||
@@ -40,19 +39,18 @@ jobs:
|
||||
python3 -m pip install -r docs/requirements.txt
|
||||
(cd docs/openvino_sphinx_theme && python3 setup.py install)
|
||||
|
||||
- name: Download and install doxygen && doxyrest
|
||||
- name: Download and install doxygen
|
||||
run: |
|
||||
# install doxyrest
|
||||
wget https://github.com/vovkos/doxyrest/releases/download/doxyrest-$DOXYREST_VER/doxyrest-$DOXYREST_VER-linux-amd64.tar.xz
|
||||
tar -xf doxyrest-$DOXYREST_VER-linux-amd64.tar.xz
|
||||
echo "$(pwd)/doxyrest-$DOXYREST_VER-linux-amd64/bin/" >> $GITHUB_PATH
|
||||
# install doxygen
|
||||
wget https://www.doxygen.nl/files/doxygen-$DOXY_VER.linux.bin.tar.gz
|
||||
tar -xzf doxygen-$DOXY_VER.linux.bin.tar.gz
|
||||
echo "$(pwd)/doxygen-$DOXY_VER/bin/" >> $GITHUB_PATH
|
||||
|
||||
- name: CMake configure
|
||||
run: cmake -DENABLE_DOCS=ON -B build
|
||||
- name: Build docs
|
||||
run: |
|
||||
rm -rf build && mkdir build && cd build
|
||||
cmake .. -DCMAKE_BUILD_TYPE=Release -DENABLE_DOCS=ON -DENABLE_CPP_API=ON
|
||||
cmake --build . --target sphinx_docs
|
||||
|
||||
- name: Cache documentation
|
||||
id: cache_sphinx_docs
|
||||
@@ -61,13 +59,6 @@ jobs:
|
||||
path: build/docs/_build/.doctrees
|
||||
key: sphinx-docs-cache
|
||||
|
||||
- name: Get number of CPU cores
|
||||
uses: SimenB/github-actions-cpu-cores@v2
|
||||
id: cpu-cores
|
||||
|
||||
- name: Build docs
|
||||
run: cmake --build build --target sphinx_docs --parallel ${{ steps.cpu-cores.outputs.count }}
|
||||
|
||||
- name: Archive docs HTML
|
||||
run: (cd build/docs && zip -r openvino_docs_html.zip _build)
|
||||
|
||||
@@ -97,14 +88,13 @@ jobs:
|
||||
- name: Run Pytest
|
||||
run: |
|
||||
pytest --doxygen="./build/docs/doxygen.log" \
|
||||
--include_pot \
|
||||
--sphinx="./build/docs/sphinx.log" \
|
||||
--suppress-warnings="./docs/suppress_warnings.txt" \
|
||||
--suppress-warnings="./docs/scripts/tests/suppress_warnings.txt" \
|
||||
--confcutdir="./docs/scripts/tests/" \
|
||||
--html="./build/docs/_artifacts/doc-generation.html" \
|
||||
--doxygen-strip="$(pwd)" \
|
||||
--sphinx-strip="$(pwd)/build/docs/rst" \
|
||||
--doxygen-xfail="./docs/doxygen-xfail.txt" \
|
||||
--sphinx-strip="$(pwd)/build/docs/sphinx_source" \
|
||||
--xfail="./docs/scripts/tests/xfail.txt" \
|
||||
--self-contained-html ./docs/scripts/tests/test_docs.py
|
||||
|
||||
- name: 'Upload test results'
|
||||
|
||||
5
.github/workflows/cleanup_pip_cache.yml
vendored
5
.github/workflows/cleanup_pip_cache.yml
vendored
@@ -1,16 +1,17 @@
|
||||
name: Cleanup PIP caches
|
||||
on:
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
# at 00:00 on the 1st day of every month
|
||||
- cron: '0 0 1 * *'
|
||||
|
||||
jobs:
|
||||
Cleanup_PIP_Caches:
|
||||
runs-on: aks-linux-2-cores
|
||||
runs-on: aks-linux-2-cores-8gb
|
||||
container:
|
||||
image: openvinogithubactions.azurecr.io/dockerhub/ubuntu:20.04
|
||||
volumes:
|
||||
- /mount/caches:/mount/caches
|
||||
- /mount:/mount
|
||||
env:
|
||||
PIP_CACHE_PATH: /mount/caches/pip
|
||||
|
||||
|
||||
2
.github/workflows/coverage.yml
vendored
2
.github/workflows/coverage.yml
vendored
@@ -16,7 +16,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Setup python
|
||||
uses: actions/setup-python@v4
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: '3.10.10'
|
||||
architecture: 'x64'
|
||||
|
||||
141
.github/workflows/coverity.yml
vendored
Normal file
141
.github/workflows/coverity.yml
vendored
Normal file
@@ -0,0 +1,141 @@
|
||||
name: Coverity (Ubuntu 20.04, Python 3.11)
|
||||
on:
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
# run daily at 00:00
|
||||
- cron: '0 0 * * *'
|
||||
|
||||
concurrency:
|
||||
# github.ref is not unique in post-commit
|
||||
group: ${{ github.event_name == 'push' && github.run_id || github.ref }}-linux-coverity
|
||||
cancel-in-progress: true
|
||||
|
||||
env:
|
||||
PIP_CACHE_PATH: /mount/caches/pip/linux
|
||||
PYTHON_VERSION: '3.11'
|
||||
|
||||
jobs:
|
||||
Build:
|
||||
timeout-minutes: 150
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
runs-on: aks-linux-16-cores-32gb
|
||||
container:
|
||||
image: openvinogithubactions.azurecr.io/dockerhub/ubuntu:20.04
|
||||
volumes:
|
||||
- /mount/caches:/mount/caches
|
||||
options: -e SCCACHE_AZURE_BLOB_CONTAINER -e SCCACHE_AZURE_CONNECTION_STRING
|
||||
env:
|
||||
DEBIAN_FRONTEND: noninteractive # to prevent apt-get from waiting user input
|
||||
CMAKE_BUILD_TYPE: 'Release'
|
||||
CMAKE_GENERATOR: 'Ninja Multi-Config'
|
||||
CMAKE_CXX_COMPILER_LAUNCHER: sccache
|
||||
CMAKE_C_COMPILER_LAUNCHER: sccache
|
||||
GITHUB_WORKSPACE: '/__w/openvino/openvino'
|
||||
OPENVINO_REPO: /__w/openvino/openvino/openvino
|
||||
OPENVINO_CONTRIB_REPO: /__w/openvino/openvino/openvino_contrib
|
||||
BUILD_DIR: /__w/openvino/openvino/openvino_build
|
||||
SCCACHE_AZURE_KEY_PREFIX: coverity_ubuntu20_x86_64
|
||||
COVERITY_TOOL_DIR: /__w/openvino/openvino/coverity_tool
|
||||
|
||||
steps:
|
||||
- name: Install git
|
||||
run: |
|
||||
apt-get update
|
||||
apt-get install --assume-yes --no-install-recommends git ca-certificates
|
||||
|
||||
- name: Clone OpenVINO
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
path: ${{ env.OPENVINO_REPO }}
|
||||
submodules: 'true'
|
||||
|
||||
- name: Clone OpenVINO Contrib
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: 'openvinotoolkit/openvino_contrib'
|
||||
path: ${{ env.OPENVINO_CONTRIB_REPO }}
|
||||
submodules: 'true'
|
||||
ref: 'master'
|
||||
|
||||
#
|
||||
# Dependencies
|
||||
#
|
||||
|
||||
- name: Install build dependencies
|
||||
run: |
|
||||
bash ${OPENVINO_REPO}/install_build_dependencies.sh
|
||||
# default-jdk - Java API
|
||||
apt install --assume-yes --no-install-recommends default-jdk
|
||||
|
||||
- name: Install sccache
|
||||
uses: mozilla-actions/sccache-action@v0.0.3
|
||||
with:
|
||||
version: "v0.5.4"
|
||||
|
||||
- name: Setup Python ${{ env.PYTHON_VERSION }}
|
||||
uses: ./openvino/.github/actions/setup_python
|
||||
with:
|
||||
version: ${{ env.PYTHON_VERSION }}
|
||||
pip-cache-path: ${{ env.PIP_CACHE_PATH }}
|
||||
should-setup-pip-paths: 'true'
|
||||
self-hosted-runner: 'true'
|
||||
|
||||
#
|
||||
# Build
|
||||
#
|
||||
|
||||
- name: CMake configure - OpenVINO
|
||||
run: |
|
||||
cmake \
|
||||
-G "${{ env.CMAKE_GENERATOR }}" \
|
||||
-DENABLE_CPPLINT=OFF \
|
||||
-DENABLE_STRICT_DEPENDENCIES=OFF \
|
||||
-DENABLE_SYSTEM_TBB=ON \
|
||||
-DENABLE_SYSTEM_OPENCL=ON \
|
||||
-DCMAKE_VERBOSE_MAKEFILE=ON \
|
||||
-DCPACK_GENERATOR=TGZ \
|
||||
-DBUILD_nvidia_plugin=OFF \
|
||||
-DOPENVINO_EXTRA_MODULES=${OPENVINO_CONTRIB_REPO}/modules \
|
||||
-DCMAKE_CXX_COMPILER_LAUNCHER=${{ env.CMAKE_CXX_COMPILER_LAUNCHER }} \
|
||||
-DCMAKE_C_COMPILER_LAUNCHER=${{ env.CMAKE_C_COMPILER_LAUNCHER }} \
|
||||
-S ${OPENVINO_REPO} \
|
||||
-B ${BUILD_DIR}
|
||||
|
||||
- name: Clean sccache stats
|
||||
run: ${SCCACHE_PATH} --zero-stats
|
||||
|
||||
- name: Install Coverity tool
|
||||
run: |
|
||||
rm -rf ${COVERITY_TOOL_DIR} && mkdir -p ${COVERITY_TOOL_DIR}
|
||||
pushd ${COVERITY_TOOL_DIR}
|
||||
wget https://scan.coverity.com/download/linux64 --progress=bar:force:noscroll --post-data "token=${{ secrets.COVERITY_TOKEN }}&project=openvino" -O coverity_tool.tgz
|
||||
tar xvf coverity_tool.tgz && rm coverity_tool.tgz
|
||||
popd
|
||||
|
||||
- name: Cmake build - OpenVINO with Coverity
|
||||
run: |
|
||||
${COVERITY_TOOL_DIR}/cov-analysis*/bin/cov-build --dir ${BUILD_DIR}/cov-int \
|
||||
cmake --build ${BUILD_DIR} --parallel --config ${{ env.CMAKE_BUILD_TYPE }}
|
||||
|
||||
- name: Show sccache stats
|
||||
run: ${SCCACHE_PATH} --show-stats
|
||||
|
||||
- name: Pack Artefacts
|
||||
run: |
|
||||
pushd ${BUILD_DIR}
|
||||
tar -C ${BUILD_DIR} -czvf openvino.tgz cov-int
|
||||
popd
|
||||
|
||||
- name: Submit artefacts
|
||||
run: |
|
||||
apt-get update && apt-get install -y curl
|
||||
pushd ${BUILD_DIR}
|
||||
curl --form token=${{ secrets.COVERITY_TOKEN }} \
|
||||
--form email=${{ secrets.COVERITY_USER }} \
|
||||
--form file=@openvino.tgz \
|
||||
--form version="${{ github.sha }}" \
|
||||
--form description="https://github.com/openvinotoolkit/openvino/runs/${{ github.run_number }}" \
|
||||
https://scan.coverity.com/builds?project=openvino
|
||||
popd
|
||||
59
.github/workflows/fedora.yml
vendored
59
.github/workflows/fedora.yml
vendored
@@ -2,21 +2,7 @@ name: Fedora (RHEL), Python 3.9
|
||||
on:
|
||||
workflow_dispatch:
|
||||
pull_request:
|
||||
paths-ignore:
|
||||
- '**/docs/**'
|
||||
- 'docs/**'
|
||||
- '**/**.md'
|
||||
- '**.md'
|
||||
- '**/layer_tests_summary/**'
|
||||
- '**/conformance/**'
|
||||
push:
|
||||
paths-ignore:
|
||||
- '**/docs/**'
|
||||
- 'docs/**'
|
||||
- '**/**.md'
|
||||
- '**.md'
|
||||
- '**/layer_tests_summary/**'
|
||||
- '**/conformance/**'
|
||||
branches:
|
||||
- master
|
||||
- 'releases/**'
|
||||
@@ -27,7 +13,31 @@ concurrency:
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
Smart_CI:
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
affected_components: "${{ steps.smart_ci.outputs.affected_components }}"
|
||||
skip_workflow: "${{ steps.smart_ci.outputs.skip_workflow }}"
|
||||
steps:
|
||||
- name: checkout action
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
sparse-checkout: .github/actions/smart-ci
|
||||
|
||||
- name: Get affected components
|
||||
id: smart_ci
|
||||
uses: ./.github/actions/smart-ci
|
||||
with:
|
||||
repository: ${{ github.repository }}
|
||||
pr: ${{ github.event.number }}
|
||||
commit_sha: ${{ github.sha }}
|
||||
component_pattern: "category: (.*)"
|
||||
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
skip_when_only_listed_labels_set: 'docs'
|
||||
skip_when_only_listed_files_changed: '*.md,*.rst,*.png,*.jpg,*.svg,*/layer_tests_summary/*,*/conformance/*'
|
||||
|
||||
Build:
|
||||
needs: Smart_CI
|
||||
timeout-minutes: 150
|
||||
defaults:
|
||||
run:
|
||||
@@ -36,7 +46,7 @@ jobs:
|
||||
container:
|
||||
image: fedora:33
|
||||
volumes:
|
||||
- /mount/caches:/mount/caches
|
||||
- /mount:/mount
|
||||
options: -e SCCACHE_AZURE_BLOB_CONTAINER -e SCCACHE_AZURE_CONNECTION_STRING
|
||||
env:
|
||||
CMAKE_BUILD_TYPE: 'Release'
|
||||
@@ -49,6 +59,7 @@ jobs:
|
||||
INSTALL_TEST_DIR: /__w/openvino/openvino/tests_install
|
||||
BUILD_DIR: /__w/openvino/openvino/openvino_build
|
||||
SCCACHE_AZURE_KEY_PREFIX: fedora33_x86_64_Release
|
||||
if: "!needs.smart_ci.outputs.skip_workflow"
|
||||
steps:
|
||||
- name: Install git
|
||||
run: yum update -y && yum install -y git
|
||||
@@ -179,7 +190,7 @@ jobs:
|
||||
|
||||
RPM_Packages:
|
||||
needs: Build
|
||||
timeout-minutes: 5
|
||||
timeout-minutes: 10
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
@@ -191,7 +202,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Download OpenVINO RPM packages
|
||||
uses: actions/download-artifact@v3
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: openvino_rpm_packages
|
||||
path: ${{ env.RPM_PACKAGES_DIR }}
|
||||
@@ -231,3 +242,17 @@ jobs:
|
||||
python3 -c 'from openvino.frontend import FrontEndManager; assert len(FrontEndManager().get_available_front_ends()) == 6'
|
||||
benchmark_app --help
|
||||
ovc --help
|
||||
|
||||
Overall_Status:
|
||||
name: ci/gha_overall_status_fedora
|
||||
needs: [Smart_CI, Build, RPM_Packages]
|
||||
if: ${{ always() }}
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Check status of all jobs
|
||||
if: >-
|
||||
${{
|
||||
contains(needs.*.result, 'failure') ||
|
||||
contains(needs.*.result, 'cancelled')
|
||||
}}
|
||||
run: exit 1
|
||||
|
||||
124
.github/workflows/job_cpu_functional_tests.yml
vendored
Normal file
124
.github/workflows/job_cpu_functional_tests.yml
vendored
Normal file
@@ -0,0 +1,124 @@
|
||||
name: CPU functional tests
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
runner:
|
||||
description: 'Machine on which the tests would run'
|
||||
type: string
|
||||
required: true
|
||||
image:
|
||||
description: 'Docker image in which the tests would run'
|
||||
type: string
|
||||
required: false
|
||||
default: null
|
||||
|
||||
jobs:
|
||||
CPU_Functional_Tests:
|
||||
name: CPU functional tests
|
||||
timeout-minutes: 25
|
||||
runs-on: ${{ inputs.runner }}
|
||||
container:
|
||||
image: ${{ inputs.image }}
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
env:
|
||||
DEBIAN_FRONTEND: noninteractive # to prevent apt-get from waiting user input
|
||||
INSTALL_DIR: ${{ github.workspace }}/install
|
||||
INSTALL_TEST_DIR: ${{ github.workspace }}/install/tests
|
||||
PARALLEL_TEST_SCRIPT: ${{ github.workspace }}/install/tests/functional_test_utils/layer_tests_summary/run_parallel.py
|
||||
PARALLEL_TEST_CACHE: ${{ github.workspace }}/install/tests/test_cache.lst
|
||||
steps:
|
||||
- name: Download OpenVINO package
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: openvino_package
|
||||
path: ${{ env.INSTALL_DIR }}
|
||||
|
||||
- name: Download OpenVINO tests package
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: openvino_tests
|
||||
path: ${{ env.INSTALL_TEST_DIR }}
|
||||
|
||||
# Needed as ${{ github.workspace }} is not working correctly when using Docker
|
||||
- name: Setup Variables
|
||||
run: |
|
||||
echo "INSTALL_DIR=$GITHUB_WORKSPACE/install" >> "$GITHUB_ENV"
|
||||
echo "INSTALL_TEST_DIR=$GITHUB_WORKSPACE/install/tests" >> "$GITHUB_ENV"
|
||||
echo "PARALLEL_TEST_SCRIPT=$GITHUB_WORKSPACE/install/tests/functional_test_utils/layer_tests_summary/run_parallel.py" >> "$GITHUB_ENV"
|
||||
echo "PARALLEL_TEST_CACHE=$GITHUB_WORKSPACE/install/tests/test_cache.lst" >> "$GITHUB_ENV"
|
||||
|
||||
- name: Extract OpenVINO packages
|
||||
run: |
|
||||
pushd $INSTALL_DIR
|
||||
tar -xzf openvino_package.tar.gz -C $INSTALL_DIR
|
||||
popd
|
||||
|
||||
pushd $INSTALL_TEST_DIR
|
||||
tar -xzf openvino_tests.tar.gz -C $INSTALL_DIR
|
||||
popd
|
||||
|
||||
- name: Install OpenVINO dependencies (Linux)
|
||||
if: runner.os == 'Linux'
|
||||
run: $INSTALL_DIR/install_dependencies/install_openvino_dependencies.sh -c=core -c=dev -c=gpu -y
|
||||
|
||||
- name: Fetch setup_python action
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
sparse-checkout: |
|
||||
.github/actions/setup_python/action.yml
|
||||
sparse-checkout-cone-mode: false
|
||||
path: 'openvino'
|
||||
|
||||
- name: Setup Python 3.11
|
||||
uses: ./openvino/.github/actions/setup_python
|
||||
with:
|
||||
version: '3.11'
|
||||
should-setup-pip-paths: 'false'
|
||||
self-hosted-runner: ${{ runner.os == 'Linux' }}
|
||||
|
||||
- name: Install python dependencies for run_parallel.py
|
||||
run: python3 -m pip install -r ${INSTALL_TEST_DIR}/functional_test_utils/layer_tests_summary/requirements.txt
|
||||
|
||||
- name: Restore tests execution time
|
||||
uses: actions/cache/restore@v3
|
||||
with:
|
||||
path: ${{ env.PARALLEL_TEST_CACHE }}
|
||||
key: ${{ runner.os }}-${{ runner.arch }}-tests-functional-cpu-stamp-${{ github.sha }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-${{ runner.arch }}-tests-functional-cpu-stamp
|
||||
|
||||
- name: Intel CPU plugin func tests (parallel)
|
||||
run: |
|
||||
# Needed as the Linux CC does not require setupvars to work
|
||||
if [[ -f "${INSTALL_DIR}/setupvars.sh" ]]; then
|
||||
source ${INSTALL_DIR}/setupvars.sh
|
||||
fi
|
||||
|
||||
python3 ${PARALLEL_TEST_SCRIPT} -e ${INSTALL_TEST_DIR}/ov_cpu_func_tests -c ${PARALLEL_TEST_CACHE} -w ${INSTALL_TEST_DIR} -s suite -rf 0 -- --gtest_print_time=1 --gtest_filter=*smoke*
|
||||
timeout-minutes: 20
|
||||
|
||||
- name: Save tests execution time
|
||||
uses: actions/cache/save@v3
|
||||
if: github.ref_name == 'master'
|
||||
with:
|
||||
path: ${{ env.PARALLEL_TEST_CACHE }}
|
||||
key: ${{ runner.os }}-${{ runner.arch }}-tests-functional-cpu-stamp-${{ github.sha }}
|
||||
|
||||
- name: Upload Test Results
|
||||
uses: actions/upload-artifact@v3
|
||||
if: ${{ !cancelled() }}
|
||||
with:
|
||||
name: test-results-functional-cpu
|
||||
path: |
|
||||
${{ env.INSTALL_TEST_DIR }}/temp/*.log
|
||||
${{ env.INSTALL_TEST_DIR }}/logs/*.log
|
||||
${{ env.INSTALL_TEST_DIR }}/logs/failed/*.log
|
||||
${{ env.INSTALL_TEST_DIR }}/logs/crashed/*.log
|
||||
${{ env.INSTALL_TEST_DIR }}/logs/hanged/*.log
|
||||
${{ env.INSTALL_TEST_DIR }}/logs/interapted/*.log
|
||||
${{ env.INSTALL_TEST_DIR }}/logs/hash_table.csv
|
||||
${{ env.PARALLEL_TEST_CACHE }}
|
||||
if-no-files-found: 'error'
|
||||
279
.github/workflows/job_cxx_unit_tests.yml
vendored
Normal file
279
.github/workflows/job_cxx_unit_tests.yml
vendored
Normal file
@@ -0,0 +1,279 @@
|
||||
name: Samples
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
runner:
|
||||
description: 'Machine on which the tests would run'
|
||||
type: string
|
||||
required: true
|
||||
image:
|
||||
description: 'Docker image in which the tests would run'
|
||||
type: string
|
||||
required: false
|
||||
default: null
|
||||
affected-components:
|
||||
description: 'Components that are affected by changes in the commit defined by the Smart CI Action'
|
||||
type: string
|
||||
required: true
|
||||
|
||||
jobs:
|
||||
CXX_Unit_Tests:
|
||||
name: C++ unit tests
|
||||
timeout-minutes: 30
|
||||
runs-on: ${{ inputs.runner }}
|
||||
container:
|
||||
image: ${{ inputs.image }}
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
env:
|
||||
DEBIAN_FRONTEND: noninteractive # to prevent apt-get from waiting user input
|
||||
INSTALL_DIR: ${{ github.workspace }}/install
|
||||
INSTALL_TEST_DIR: ${{ github.workspace }}/install/tests
|
||||
steps:
|
||||
- name: Download OpenVINO package
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: openvino_package
|
||||
path: ${{ env.INSTALL_DIR }}
|
||||
|
||||
- name: Download OpenVINO tests package
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: openvino_tests
|
||||
path: ${{ env.INSTALL_TEST_DIR }}
|
||||
|
||||
# Needed as ${{ github.workspace }} is not working correctly when using Docker
|
||||
- name: Setup Variables
|
||||
run: |
|
||||
echo "INSTALL_DIR=$GITHUB_WORKSPACE/install" >> "$GITHUB_ENV"
|
||||
echo "INSTALL_TEST_DIR=$GITHUB_WORKSPACE/install/tests" >> "$GITHUB_ENV"
|
||||
|
||||
- name: Extract OpenVINO packages
|
||||
run: |
|
||||
pushd $INSTALL_DIR
|
||||
tar -xzf openvino_package.tar.gz -C $INSTALL_DIR
|
||||
popd
|
||||
pushd $INSTALL_TEST_DIR
|
||||
tar -xzf openvino_tests.tar.gz -C $INSTALL_DIR
|
||||
popd
|
||||
|
||||
- name: Install OpenVINO dependencies (Linux)
|
||||
if: runner.os == 'Linux'
|
||||
run: $INSTALL_DIR/install_dependencies/install_openvino_dependencies.sh -c=core -c=dev -c=gpu -y
|
||||
|
||||
#
|
||||
# Tests
|
||||
#
|
||||
|
||||
- name: OpenVINO Core Unit Tests
|
||||
if: fromJSON(inputs.affected-components).Core.test
|
||||
run: |
|
||||
source ${INSTALL_DIR}/setupvars.sh
|
||||
${INSTALL_TEST_DIR}/ov_core_unit_tests --gtest_print_time=1 --gtest_filter=-*IE_GPU* \
|
||||
--gtest_output=xml:${INSTALL_TEST_DIR}/TEST-OVCoreUT.xml
|
||||
|
||||
- name: OpenVINO Inference Functional Tests
|
||||
if: fromJSON(inputs.affected-components).inference.test
|
||||
run: |
|
||||
source ${INSTALL_DIR}/setupvars.sh
|
||||
${INSTALL_TEST_DIR}/ov_inference_functional_tests --gtest_print_time=1 \
|
||||
--gtest_output=xml:${INSTALL_TEST_DIR}/TEST-InferenceFunc.xml
|
||||
|
||||
- name: OpenVINO Inference Unit Tests
|
||||
if: fromJSON(inputs.affected-components).inference.test
|
||||
run: |
|
||||
source ${INSTALL_DIR}/setupvars.sh
|
||||
${INSTALL_TEST_DIR}/ov_inference_unit_tests --gtest_print_time=1 \
|
||||
--gtest_output=xml:${INSTALL_TEST_DIR}/TEST-InferenceUnit.xml
|
||||
|
||||
- name: Low Precision Transformations Tests
|
||||
if: fromJSON(inputs.affected-components).LP_transformations.test
|
||||
run: |
|
||||
source ${INSTALL_DIR}/setupvars.sh
|
||||
|
||||
${INSTALL_TEST_DIR}/ov_lp_transformations_tests --gtest_print_time=1 \
|
||||
--gtest_output=xml:${INSTALL_TEST_DIR}/TEST-LpTransformations.xml
|
||||
|
||||
- name: OpenVINO Conditional compilation tests
|
||||
if: fromJSON(inputs.affected-components).Core.test
|
||||
run: |
|
||||
source ${INSTALL_DIR}/setupvars.sh
|
||||
${INSTALL_TEST_DIR}/ov_conditional_compilation_tests --gtest_print_time=1 \
|
||||
--gtest_output=xml:${INSTALL_TEST_DIR}/TEST-ConditionalCompilation.xml
|
||||
|
||||
- name: IR frontend tests
|
||||
if: fromJSON(inputs.affected-components).IR_FE.test
|
||||
run: |
|
||||
source ${INSTALL_DIR}/setupvars.sh
|
||||
${INSTALL_TEST_DIR}/ov_ir_frontend_tests --gtest_print_time=1 \
|
||||
--gtest_output=xml:${INSTALL_TEST_DIR}/TEST-IRFrontend.xml
|
||||
|
||||
- name: PaddlePaddle frontend tests
|
||||
run: |
|
||||
source ${INSTALL_DIR}/setupvars.sh
|
||||
${INSTALL_TEST_DIR}/paddle_tests --gtest_print_time=1 \
|
||||
--gtest_output=xml:${INSTALL_TEST_DIR}/TEST-PaddleTests.xml
|
||||
|
||||
- name: ONNX frontend tests
|
||||
if: ${{ fromJSON(inputs.affected-components).ONNX_FE.test && runner.arch != 'ARM64' }} # Ticket for macOS ARM64: 122663, for Linux ARM64: 126280
|
||||
run: |
|
||||
source ${INSTALL_DIR}/setupvars.sh
|
||||
${INSTALL_TEST_DIR}/ov_onnx_frontend_tests --gtest_print_time=1 \
|
||||
--gtest_filter=-*IE_GPU* \
|
||||
--gtest_output=xml:${INSTALL_TEST_DIR}/TEST-ONNXFrontend.xml
|
||||
|
||||
- name: TensorFlow Common frontend tests
|
||||
if: fromJSON(inputs.affected-components).TF_FE.test ||
|
||||
fromJSON(inputs.affected-components).TFL_FE.test &&
|
||||
(runner.os != 'macOS' && runner.arch != 'ARM64')
|
||||
run: |
|
||||
source ${INSTALL_DIR}/setupvars.sh
|
||||
${INSTALL_TEST_DIR}/ov_tensorflow_common_tests --gtest_print_time=1 \
|
||||
--gtest_output=xml:${INSTALL_TEST_DIR}/TEST-TensorFlowCommonFrontend.xml
|
||||
|
||||
- name: TensorFlow frontend tests
|
||||
if: fromJSON(inputs.affected-components).TF_FE.test
|
||||
run: |
|
||||
source ${INSTALL_DIR}/setupvars.sh
|
||||
|
||||
${INSTALL_TEST_DIR}/ov_tensorflow_frontend_tests --gtest_print_time=1 \
|
||||
--gtest_output=xml:${INSTALL_TEST_DIR}/TEST-TensorFlowFrontend.xml
|
||||
|
||||
- name: TensorFlow Lite frontend tests
|
||||
if: fromJSON(inputs.affected-components).TFL_FE.test
|
||||
run: |
|
||||
source ${INSTALL_DIR}/setupvars.sh
|
||||
${INSTALL_TEST_DIR}/ov_tensorflow_lite_frontend_tests --gtest_print_time=1 \
|
||||
--gtest_output=xml:${INSTALL_TEST_DIR}/TEST-TensorFlowLiteFrontend.xml
|
||||
|
||||
- name: Transformations func tests
|
||||
if: ${{ fromJSON(inputs.affected-components).transformations.test && runner.arch != 'ARM64' }} # Ticket: 126281
|
||||
run: |
|
||||
source ${INSTALL_DIR}/setupvars.sh
|
||||
|
||||
${INSTALL_TEST_DIR}/ov_transformations_tests --gtest_print_time=1 \
|
||||
--gtest_output=xml:${INSTALL_TEST_DIR}/TEST-Transformations.xml
|
||||
|
||||
- name: Legacy Transformations func tests
|
||||
if: fromJSON(inputs.affected-components).GNA.test &&
|
||||
(runner.os != 'macOS' && runner.arch != 'ARM64')
|
||||
run: |
|
||||
source ${INSTALL_DIR}/setupvars.sh
|
||||
${INSTALL_TEST_DIR}/ov_legacy_transformations_tests --gtest_print_time=1 \
|
||||
--gtest_output=xml:${INSTALL_TEST_DIR}/TEST-LegacyTransformations.xml
|
||||
|
||||
- name: Inference Engine 1.0 unit tests
|
||||
if: fromJSON(inputs.affected-components).GNA.test &&
|
||||
(runner.os != 'macOS' && runner.arch != 'ARM64')
|
||||
run: |
|
||||
source ${INSTALL_DIR}/setupvars.sh
|
||||
${INSTALL_TEST_DIR}/InferenceEngineUnitTests --gtest_print_time=1 \
|
||||
--gtest_output=xml:${INSTALL_TEST_DIR}/TEST-InferenceEngineUnitTests.xml
|
||||
|
||||
- name: Common test utils tests
|
||||
run: |
|
||||
source ${INSTALL_DIR}/setupvars.sh
|
||||
${INSTALL_TEST_DIR}/ov_util_tests --gtest_print_time=1 \
|
||||
--gtest_output=xml:${INSTALL_TEST_DIR}/TEST-CommonUtilTests.xml
|
||||
|
||||
- name: Snippets func tests
|
||||
if: fromJSON(inputs.affected-components).CPU.test
|
||||
run: |
|
||||
source ${INSTALL_DIR}/setupvars.sh
|
||||
${INSTALL_TEST_DIR}/ov_snippets_func_tests --gtest_print_time=1 \
|
||||
--gtest_output=xml:${INSTALL_TEST_DIR}/TEST-SnippetsFuncTests.xml
|
||||
|
||||
- name: CPU plugin unit tests
|
||||
if: fromJSON(inputs.affected-components).CPU.test
|
||||
run: |
|
||||
source ${INSTALL_DIR}/setupvars.sh
|
||||
${INSTALL_TEST_DIR}/ov_cpu_unit_tests --gtest_print_time=1 \
|
||||
--gtest_output=xml:${INSTALL_TEST_DIR}/TEST-CPUUnitTests.xml
|
||||
|
||||
- name: ov_subgraphs_dumper_tests tests
|
||||
run: |
|
||||
source ${INSTALL_DIR}/setupvars.sh
|
||||
${INSTALL_TEST_DIR}/ov_subgraphs_dumper_tests --gtest_print_time=1 \
|
||||
--gtest_output=xml:${INSTALL_TEST_DIR}/TEST-ov_subgraphs_dumper_tests.xml
|
||||
|
||||
- name: Template OpImpl tests
|
||||
run: |
|
||||
source ${INSTALL_DIR}/setupvars.sh
|
||||
${INSTALL_TEST_DIR}/ov_op_conformance_tests --gtest_print_time=1 --device=TEMPLATE --gtest_filter=*OpImpl*\
|
||||
--gtest_output=xml:${INSTALL_TEST_DIR}/TEST-OpImplTests.xml
|
||||
|
||||
- name: AUTO unit tests
|
||||
if: fromJSON(inputs.affected-components).AUTO.test
|
||||
run: |
|
||||
source ${INSTALL_DIR}/setupvars.sh
|
||||
${INSTALL_TEST_DIR}/ov_auto_unit_tests --gtest_print_time=1 \
|
||||
--gtest_output=xml:${INSTALL_TEST_DIR}/TEST-ov_auto_unit_tests.xml
|
||||
|
||||
- name: AUTO func Tests
|
||||
if: fromJSON(inputs.affected-components).AUTO.test
|
||||
run: |
|
||||
source ${{ env.INSTALL_DIR }}/setupvars.sh
|
||||
${{ env.INSTALL_TEST_DIR }}/ov_auto_func_tests --gtest_print_time=1 \
|
||||
--gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-ov_auto_func_tests.xml
|
||||
|
||||
- name: Template plugin func tests
|
||||
if: fromJSON(inputs.affected-components).TEMPLATE.test
|
||||
run: |
|
||||
source ${INSTALL_DIR}/setupvars.sh
|
||||
${INSTALL_TEST_DIR}/ov_template_func_tests --gtest_print_time=1 \
|
||||
--gtest_filter=*smoke* \
|
||||
--gtest_output=xml:${INSTALL_TEST_DIR}/TEST-TemplateFuncTests.xml
|
||||
|
||||
- name: Inference Engine C API tests
|
||||
if: fromJSON(inputs.affected-components).C_API.test
|
||||
run: |
|
||||
source ${INSTALL_DIR}/setupvars.sh
|
||||
${INSTALL_TEST_DIR}/InferenceEngineCAPITests --gtest_print_time=1 \
|
||||
--gtest_output=xml:${INSTALL_TEST_DIR}/TEST-InferenceEngineCAPITests.xml
|
||||
|
||||
- name: OpenVINO C API tests
|
||||
if: fromJSON(inputs.affected-components).C_API.test
|
||||
run: |
|
||||
source ${INSTALL_DIR}/setupvars.sh
|
||||
${INSTALL_TEST_DIR}/ov_capi_test --gtest_print_time=1 \
|
||||
--gtest_output=xml:${INSTALL_TEST_DIR}/TEST-OpenVINOCAPITests.xml
|
||||
|
||||
- name: AutoBatch unit tests
|
||||
if: fromJSON(inputs.affected-components).AUTO_BATCH.test
|
||||
run: |
|
||||
source ${INSTALL_DIR}/setupvars.sh
|
||||
${INSTALL_TEST_DIR}/ov_auto_batch_unit_tests --gtest_output=xml:${INSTALL_TEST_DIR}/TEST-ov_auto_batch_unit_tests.xml
|
||||
|
||||
- name: AutoBatch func tests
|
||||
if: fromJSON(inputs.affected-components).AUTO_BATCH.test
|
||||
run: |
|
||||
source ${INSTALL_DIR}/setupvars.sh
|
||||
${INSTALL_TEST_DIR}/ov_auto_batch_func_tests --gtest_output=xml:${INSTALL_TEST_DIR}/TEST-ov_auto_batch_func_tests.xml
|
||||
|
||||
- name: Proxy Plugin func tests
|
||||
if: fromJSON(inputs.affected-components).PROXY.test
|
||||
run: |
|
||||
source ${INSTALL_DIR}/setupvars.sh
|
||||
${INSTALL_TEST_DIR}/ov_proxy_plugin_tests --gtest_print_time=1 --gtest_output=xml:${INSTALL_TEST_DIR}/TEST-OVProxyTests.xml
|
||||
|
||||
- name: Hetero unit tests
|
||||
if: fromJSON(inputs.affected-components).HETERO.test
|
||||
run: |
|
||||
source ${{ env.INSTALL_DIR }}/setupvars.sh
|
||||
${{ env.INSTALL_TEST_DIR }}/ov_hetero_unit_tests --gtest_print_time=1 --gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-OVHeteroUnitTests.xml
|
||||
|
||||
- name: Hetero func tests
|
||||
if: fromJSON(inputs.affected-components).HETERO.test
|
||||
run: |
|
||||
source ${INSTALL_DIR}/setupvars.sh
|
||||
${INSTALL_TEST_DIR}/ov_hetero_func_tests --gtest_print_time=1 --gtest_output=xml:${INSTALL_TEST_DIR}/TEST-OVHeteroFuncTests.xml
|
||||
|
||||
- name: Upload Test Results
|
||||
uses: actions/upload-artifact@v3
|
||||
if: ${{ !cancelled() }}
|
||||
with:
|
||||
name: test-results-cpp
|
||||
path: ${{ env.INSTALL_TEST_DIR }}/TEST*.xml
|
||||
if-no-files-found: 'warn'
|
||||
83
.github/workflows/job_debian_packages.yml
vendored
Normal file
83
.github/workflows/job_debian_packages.yml
vendored
Normal file
@@ -0,0 +1,83 @@
|
||||
name: Debian Packages
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
runner:
|
||||
description: 'Machine on which the tests would run'
|
||||
type: string
|
||||
required: true
|
||||
image:
|
||||
description: 'Docker image in which the tests would run'
|
||||
type: string
|
||||
required: false
|
||||
default: null
|
||||
|
||||
jobs:
|
||||
Debian_Packages:
|
||||
name: Debian Packages
|
||||
runs-on: ${{ inputs.runner }}
|
||||
container:
|
||||
image: ${{ inputs.image }}
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
env:
|
||||
DEBIAN_FRONTEND: noninteractive # to prevent apt-get from waiting user input
|
||||
DEBIAN_PACKAGES_DIR: ${{ github.workspace }}/packages
|
||||
steps:
|
||||
|
||||
- name: Download OpenVINO debian packages
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: openvino_debian_packages
|
||||
path: ${{ env.DEBIAN_PACKAGES_DIR }}
|
||||
|
||||
# Needed as ${{ github.workspace }} is not working correctly when using Docker
|
||||
- name: Setup Variables
|
||||
run: echo "DEBIAN_PACKAGES_DIR=$GITHUB_WORKSPACE/packages" >> "$GITHUB_ENV"
|
||||
|
||||
- name: Install debian packages & check conflicts
|
||||
run: |
|
||||
apt-get update -y
|
||||
|
||||
if [[ "${{ runner.arch }}" == "X64" ]]; then
|
||||
# Install debian packages from previous release
|
||||
apt-get install --no-install-recommends -y gnupg wget ca-certificates
|
||||
wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
|
||||
apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
|
||||
echo "deb https://apt.repos.intel.com/openvino/2023 ubuntu20 main" | tee /etc/apt/sources.list.d/intel-openvino-2023.list
|
||||
apt-get update -y
|
||||
apt-get install -y openvino
|
||||
fi
|
||||
|
||||
# install our local one and make sure the conflicts are resolved
|
||||
apt-get install --no-install-recommends -y dpkg-dev
|
||||
dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz
|
||||
echo "deb [trusted=yes] file:${DEBIAN_PACKAGES_DIR} ./" | tee /etc/apt/sources.list.d/openvino-local.list
|
||||
apt-get update -y
|
||||
apt-get install openvino -y
|
||||
working-directory: ${{ env.DEBIAN_PACKAGES_DIR }}
|
||||
|
||||
- name: Test debian packages
|
||||
run: |
|
||||
/usr/share/openvino/samples/cpp/build_samples.sh
|
||||
/usr/share/openvino/samples/c/build_samples.sh
|
||||
|
||||
[[ "${{ runner.arch }}" == "X64" ]] && path_by_arch="intel64" || path_by_arch="aarch64"
|
||||
~/openvino_cpp_samples_build/$path_by_arch/Release/hello_query_device
|
||||
|
||||
python3 /usr/share/openvino/samples/python/hello_query_device/hello_query_device.py
|
||||
python3 -c 'from openvino import Core; Core().get_property("CPU", "AVAILABLE_DEVICES")'
|
||||
|
||||
if [[ "${{ runner.arch }}" == "X64" ]]; then
|
||||
python3 -c 'from openvino import Core; Core().get_property("GPU", "AVAILABLE_DEVICES")'
|
||||
fi
|
||||
|
||||
python3 -c 'from openvino import Core; Core().get_property("AUTO", "SUPPORTED_METRICS")'
|
||||
python3 -c 'from openvino import Core; Core().get_property("MULTI", "SUPPORTED_METRICS")'
|
||||
python3 -c 'from openvino import Core; Core().get_property("HETERO", "SUPPORTED_METRICS")'
|
||||
python3 -c 'from openvino import Core; Core().get_property("BATCH", "SUPPORTED_METRICS")'
|
||||
python3 -c 'from openvino.frontend import FrontEndManager; assert len(FrontEndManager().get_available_front_ends()) == 6'
|
||||
benchmark_app --help
|
||||
ovc --help
|
||||
157
.github/workflows/job_onnx_runtime.yml
vendored
Normal file
157
.github/workflows/job_onnx_runtime.yml
vendored
Normal file
@@ -0,0 +1,157 @@
|
||||
name: ONNX Runtime Integration
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
runner:
|
||||
description: 'Machine on which the tests would run'
|
||||
type: string
|
||||
required: true
|
||||
container:
|
||||
description: 'JSON to be converted to the value of the "container" configuration for the job'
|
||||
type: string
|
||||
required: false
|
||||
default: '{"image": null}'
|
||||
sccache-azure-key-prefix:
|
||||
description: 'Key prefix for the cache folder on the Azure'
|
||||
type: string
|
||||
required: true
|
||||
|
||||
jobs:
|
||||
ONNX_Runtime:
|
||||
name: ONNX Runtime Integration
|
||||
timeout-minutes: 60
|
||||
runs-on: ${{ inputs.runner }}
|
||||
container: ${{ fromJSON(inputs.container) }}
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
env:
|
||||
DEBIAN_FRONTEND: noninteractive # to prevent apt-get from waiting user input
|
||||
OPENVINO_REPO: ${{ github.workspace }}/openvino
|
||||
INSTALL_DIR: ${{ github.workspace }}/install
|
||||
CMAKE_GENERATOR: 'Ninja Multi-Config'
|
||||
CMAKE_CXX_COMPILER_LAUNCHER: sccache
|
||||
CMAKE_C_COMPILER_LAUNCHER: sccache
|
||||
SCCACHE_AZURE_KEY_PREFIX: ${{ inputs.sccache-azure-key-prefix }}
|
||||
ONNX_RUNTIME_REPO: ${{ github.workspace }}/onnxruntime
|
||||
ONNX_RUNTIME_UTILS: ${{ github.workspace }}/install/onnxruntime
|
||||
ONNX_RUNTIME_BUILD_DIR: ${{ github.workspace }}/onnxruntime/build
|
||||
steps:
|
||||
- name: Download OpenVINO package
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: openvino_package
|
||||
path: ${{ env.INSTALL_DIR }}
|
||||
|
||||
# Needed as ${{ github.workspace }} is not working correctly when using Docker
|
||||
- name: Setup Variables
|
||||
run: |
|
||||
echo "OPENVINO_REPO=$GITHUB_WORKSPACE/openvino" >> "$GITHUB_ENV"
|
||||
echo "INSTALL_DIR=$GITHUB_WORKSPACE/install" >> "$GITHUB_ENV"
|
||||
echo "ONNX_RUNTIME_REPO=$GITHUB_WORKSPACE/onnxruntime" >> "$GITHUB_ENV"
|
||||
echo "ONNX_RUNTIME_UTILS=$GITHUB_WORKSPACE/install/onnxruntime" >> "$GITHUB_ENV"
|
||||
echo "ONNX_RUNTIME_BUILD_DIR=$GITHUB_WORKSPACE/onnxruntime/build" >> "$GITHUB_ENV"
|
||||
|
||||
- name: Fetch install_build_dependencies.sh and setup_python action
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
sparse-checkout: |
|
||||
install_build_dependencies.sh
|
||||
.github/actions/setup_python/action.yml
|
||||
sparse-checkout-cone-mode: false
|
||||
path: 'openvino'
|
||||
|
||||
- name: Install git
|
||||
run: |
|
||||
apt-get update
|
||||
apt-get install --assume-yes --no-install-recommends git ca-certificates
|
||||
|
||||
- name: Setup Python ${{ env.PYTHON_VERSION }}
|
||||
uses: ./openvino/.github/actions/setup_python
|
||||
with:
|
||||
version: '3.11'
|
||||
should-setup-pip-paths: 'false'
|
||||
|
||||
- name: Extract OpenVINO package
|
||||
run: |
|
||||
pushd ${INSTALL_DIR}
|
||||
tar -xzf openvino_package.tar.gz -C ${INSTALL_DIR}
|
||||
popd
|
||||
|
||||
- name: Install OpenVINO dependencies
|
||||
run: ${INSTALL_DIR}/install_dependencies/install_openvino_dependencies.sh -c=core -c=dev -y
|
||||
|
||||
- name: Clone ONNX Runtime
|
||||
run: |
|
||||
branch=`tr -s '\n ' < ${ONNX_RUNTIME_UTILS}/version`
|
||||
git clone --branch $branch --single-branch --recursive https://github.com/microsoft/onnxruntime.git ${ONNX_RUNTIME_REPO}
|
||||
|
||||
#
|
||||
# Tests
|
||||
#
|
||||
|
||||
- name: Install Build Dependencies
|
||||
run: bash ${OPENVINO_REPO}/install_build_dependencies.sh
|
||||
|
||||
- name: Install sccache
|
||||
uses: mozilla-actions/sccache-action@v0.0.3
|
||||
with:
|
||||
version: "v0.5.4"
|
||||
|
||||
- name: Build Lin ONNX Runtime
|
||||
run: |
|
||||
source ${INSTALL_DIR}/setupvars.sh
|
||||
|
||||
${ONNX_RUNTIME_REPO}/build.sh \
|
||||
--config RelWithDebInfo \
|
||||
--use_openvino CPU_FP32 \
|
||||
--build_shared_lib \
|
||||
--parallel \
|
||||
--skip_tests \
|
||||
--compile_no_warning_as_error \
|
||||
--build_dir ${ONNX_RUNTIME_BUILD_DIR}
|
||||
env:
|
||||
CXXFLAGS: "-Wno-error=deprecated-declarations"
|
||||
|
||||
- name: Show sccache stats
|
||||
run: ${SCCACHE_PATH} --show-stats
|
||||
|
||||
- name: Run onnxruntime_test_all
|
||||
if: ${{ runner.arch != 'ARM64' }} # Ticket: 126277
|
||||
run: |
|
||||
source ${INSTALL_DIR}/setupvars.sh
|
||||
skip_tests=$(tr -s '\n ' ':' < ${ONNX_RUNTIME_UTILS}/skip_tests)
|
||||
|
||||
./onnxruntime_test_all --gtest_filter=-$skip_tests
|
||||
working-directory: ${{ env.ONNX_RUNTIME_BUILD_DIR }}/RelWithDebInfo/RelWithDebInfo
|
||||
|
||||
- name: Run onnxruntime_shared_lib_test
|
||||
run: |
|
||||
source ${INSTALL_DIR}/setupvars.sh
|
||||
./onnxruntime_shared_lib_test --gtest_filter=-CApiTest.test_custom_op_openvino_wrapper_library
|
||||
working-directory: ${{ env.ONNX_RUNTIME_BUILD_DIR }}/RelWithDebInfo/RelWithDebInfo
|
||||
|
||||
- name: Run onnxruntime_global_thread_pools_test
|
||||
run: |
|
||||
source ${INSTALL_DIR}/setupvars.sh
|
||||
./onnxruntime_global_thread_pools_test
|
||||
working-directory: ${{ env.ONNX_RUNTIME_BUILD_DIR }}/RelWithDebInfo/RelWithDebInfo
|
||||
|
||||
- name: Run onnxruntime_api_tests_without_env
|
||||
run: |
|
||||
source ${INSTALL_DIR}/setupvars.sh
|
||||
./onnxruntime_api_tests_without_env
|
||||
working-directory: ${{ env.ONNX_RUNTIME_BUILD_DIR }}/RelWithDebInfo/RelWithDebInfo
|
||||
|
||||
- name: Run pytorch-converted tests
|
||||
run: |
|
||||
source ${INSTALL_DIR}/setupvars.sh
|
||||
./onnx_test_runner "${ONNX_RUNTIME_REPO}/cmake/external/onnx/onnx/backend/test/data/pytorch-converted"
|
||||
working-directory: ${{ env.ONNX_RUNTIME_BUILD_DIR }}/RelWithDebInfo/RelWithDebInfo
|
||||
|
||||
- name: Run pytorch-operator tests
|
||||
run: |
|
||||
source ${INSTALL_DIR}/setupvars.sh
|
||||
./onnx_test_runner "${ONNX_RUNTIME_REPO}/cmake/external/onnx/onnx/backend/test/data/pytorch-operator"
|
||||
working-directory: ${{ env.ONNX_RUNTIME_BUILD_DIR }}/RelWithDebInfo/RelWithDebInfo
|
||||
323
.github/workflows/job_python_unit_tests.yml
vendored
Normal file
323
.github/workflows/job_python_unit_tests.yml
vendored
Normal file
@@ -0,0 +1,323 @@
|
||||
name: Python unit tests
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
runner:
|
||||
description: 'Machine on which the tests would run'
|
||||
type: string
|
||||
required: true
|
||||
container:
|
||||
description: 'JSON to be converted to the value of the "container" configuration for the job'
|
||||
type: string
|
||||
required: false
|
||||
default: '{"image": null}'
|
||||
affected-components:
|
||||
description: 'Components that are affected by changes in the commit defined by the Smart CI Action'
|
||||
type: string
|
||||
required: true
|
||||
|
||||
env:
|
||||
PIP_CACHE_PATH: /mount/caches/pip/linux
|
||||
PYTHON_VERSION: '3.11'
|
||||
|
||||
jobs:
|
||||
Python_Unit_Tests:
|
||||
name: Python unit tests
|
||||
timeout-minutes: 60
|
||||
runs-on: ${{ inputs.runner }}
|
||||
container: ${{ fromJSON(inputs.container) }}
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
env:
|
||||
DEBIAN_FRONTEND: noninteractive # to prevent apt-get from waiting user input
|
||||
OPENVINO_REPO: ${{ github.workspace }}/openvino
|
||||
INSTALL_DIR: ${{ github.workspace }}/install
|
||||
INSTALL_TEST_DIR: ${{ github.workspace }}/install/tests
|
||||
LAYER_TESTS_INSTALL_DIR: ${{ github.workspace }}/install/tests/layer_tests
|
||||
steps:
|
||||
- name: Download OpenVINO package
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: openvino_package
|
||||
path: ${{ env.INSTALL_DIR }}
|
||||
|
||||
- name: Download OpenVINO tests package
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: openvino_tests
|
||||
path: ${{ env.INSTALL_TEST_DIR }}
|
||||
|
||||
# Needed as ${{ github.workspace }} is not working correctly when using Docker
|
||||
- name: Setup Variables
|
||||
run: |
|
||||
echo "OPENVINO_REPO=$GITHUB_WORKSPACE/openvino" >> "$GITHUB_ENV"
|
||||
echo "INSTALL_DIR=$GITHUB_WORKSPACE/install" >> "$GITHUB_ENV"
|
||||
echo "INSTALL_TEST_DIR=$GITHUB_WORKSPACE/install/tests" >> "$GITHUB_ENV"
|
||||
echo "LAYER_TESTS_INSTALL_DIR=$GITHUB_WORKSPACE/install/tests/layer_tests" >> "$GITHUB_ENV"
|
||||
|
||||
- name: Extract OpenVINO packages
|
||||
run: |
|
||||
pushd $INSTALL_DIR
|
||||
tar -xzf openvino_package.tar.gz -C $INSTALL_DIR
|
||||
popd
|
||||
pushd $INSTALL_TEST_DIR
|
||||
tar -xzf openvino_tests.tar.gz -C $INSTALL_DIR
|
||||
popd
|
||||
|
||||
- name: Install OpenVINO dependencies (Linux)
|
||||
if: runner.os == 'Linux'
|
||||
run: $INSTALL_DIR/install_dependencies/install_openvino_dependencies.sh -c=core -c=dev -y
|
||||
|
||||
- name: Fetch setup_python action
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
sparse-checkout: |
|
||||
.github/actions/setup_python/action.yml
|
||||
sparse-checkout-cone-mode: false
|
||||
path: 'openvino'
|
||||
|
||||
- name: Setup Python ${{ env.PYTHON_VERSION }}
|
||||
uses: ./openvino/.github/actions/setup_python
|
||||
with:
|
||||
version: ${{ env.PYTHON_VERSION }}
|
||||
pip-cache-path: ${{ runner.os == 'Linux' && env.PIP_CACHE_PATH || '' }}
|
||||
should-setup-pip-paths: ${{ runner.os == 'Linux' }}
|
||||
self-hosted-runner: ${{ runner.os == 'Linux' }}
|
||||
|
||||
#
|
||||
# Tests
|
||||
#
|
||||
|
||||
- name: Install OpenVINO Python wheels
|
||||
run: |
|
||||
# Install the core OV wheel
|
||||
python3 -m pip install ${INSTALL_DIR}/tools/openvino-*.whl
|
||||
|
||||
extras_to_install="caffe,kaldi,onnx,tensorflow2,pytorch"
|
||||
|
||||
if [[ "${{ runner.arch }}" != "ARM64" ]]; then
|
||||
extras_to_install="mxnet,$extras_to_install"
|
||||
fi
|
||||
|
||||
# Find and install OV dev wheel
|
||||
pushd ${INSTALL_DIR}/tools
|
||||
ov_dev_wheel_name=$(find . -name 'openvino_dev*.whl')
|
||||
python3 -m pip install $ov_dev_wheel_name[$extras_to_install]
|
||||
popd
|
||||
|
||||
- name: Install Python API tests dependencies
|
||||
run: |
|
||||
# To enable pytest parallel features
|
||||
python3 -m pip install pytest-xdist[psutil]
|
||||
# For torchvision to OpenVINO preprocessing converter
|
||||
python3 -m pip install -r ${INSTALL_TEST_DIR}/python/preprocess/torchvision/requirements.txt
|
||||
|
||||
# TODO: replace with Python API tests requirements
|
||||
python3 -m pip install -r ${INSTALL_TEST_DIR}/mo/requirements_dev.txt
|
||||
|
||||
#
|
||||
# Tests
|
||||
#
|
||||
|
||||
- name: Python API 1.0 Tests
|
||||
# if: fromJSON(inputs.affected-components).Python_API.test # Ticket: 127101
|
||||
run: |
|
||||
python3 -m pytest -s ${INSTALL_TEST_DIR}/pyngraph \
|
||||
--junitxml=${INSTALL_TEST_DIR}/TEST-Pyngraph.xml \
|
||||
--ignore=${INSTALL_TEST_DIR}/pyngraph/tests_compatibility/test_onnx/test_zoo_models.py \
|
||||
--ignore=${INSTALL_TEST_DIR}/pyngraph/tests_compatibility/test_onnx/test_backend.py
|
||||
|
||||
- name: Python API 2.0 Tests
|
||||
# if: ${{ fromJSON(inputs.affected-components).Python_API.test && runner.arch != 'ARM64' }} # Ticket: 126380, 127101
|
||||
run: |
|
||||
# for 'template' extension
|
||||
export LD_LIBRARY_PATH=${INSTALL_TEST_DIR}:$LD_LIBRARY_PATH
|
||||
python3 -m pytest -sv ${INSTALL_TEST_DIR}/pyopenvino \
|
||||
--junitxml=${INSTALL_TEST_DIR}/TEST-Pyngraph.xml \
|
||||
--ignore=${INSTALL_TEST_DIR}/pyopenvino/tests/test_utils/test_utils.py
|
||||
|
||||
- name: Model Optimizer unit tests
|
||||
if: fromJSON(inputs.affected-components).MO.test
|
||||
run: |
|
||||
skip_filter=''
|
||||
if [[ "${{ runner.os }}" != "Linux" ]] && [[ "${{ runner.arch }} != "ARM64" ]] || [[ "${{ runner.os }} != "macOS" ]]; then
|
||||
# required for MxNet
|
||||
apt-get install -y libgomp1 libquadmath0
|
||||
else
|
||||
# Skips under Ticket: 122666
|
||||
skip_filter='--ignore-glob=**/mo/unit_tests/mo/front/mxnet/**'
|
||||
fi
|
||||
|
||||
python3 -m pytest -s ${INSTALL_TEST_DIR}/mo/unit_tests \
|
||||
--junitxml=${INSTALL_TEST_DIR}/TEST-ModelOptimizer.xml \
|
||||
"$skip_filter"
|
||||
|
||||
- name: Python ONNX operators tests
|
||||
if: fromJSON(inputs.affected-components).Python_API.test ||
|
||||
fromJSON(inputs.affected-components).ONNX_FE.test && runner.os != 'macOS' # Ticket: 123325
|
||||
run: |
|
||||
# Skip test_onnx/test_zoo_models and test_onnx/test_backend due to long execution time - ONNX Model Zoo tests are run separately
|
||||
python3 -m pytest -sv ${INSTALL_TEST_DIR}/onnx -k 'not cuda' \
|
||||
--junitxml=${INSTALL_TEST_DIR}/TEST-onnx_frontend.xml \
|
||||
--ignore=${INSTALL_TEST_DIR}/onnx/test_python/test_zoo_models.py
|
||||
|
||||
- name: OVC unit tests
|
||||
if: fromJSON(inputs.affected-components).MO.test
|
||||
run: python3 -m pytest -s ${INSTALL_TEST_DIR}/ovc/unit_tests --junitxml=${INSTALL_TEST_DIR}/TEST-OpenVinoConversion.xml
|
||||
|
||||
- name: Install Python Layer tests dependencies
|
||||
run: |
|
||||
# layer test requirements
|
||||
python3 -m pip install -r ${LAYER_TESTS_INSTALL_DIR}/requirements.txt
|
||||
|
||||
- name: MO Python API Tests
|
||||
if: fromJSON(inputs.affected-components).MO.test
|
||||
run: |
|
||||
# Import 'test_utils' installed in '<package_test>/tests/python/openvino'
|
||||
export LD_LIBRARY_PATH=${PIP_INSTALL_PATH}/openvino/libs:$LD_LIBRARY_PATH
|
||||
export PYTHONPATH=${INSTALL_TEST_DIR}/python
|
||||
|
||||
if [[ "${{ runner.os }}" == "Linux" ]] && [[ "${{ runner.arch }}" == "ARM64" ]]; then
|
||||
# Find gomp lib
|
||||
GOMP_LIB=$(find "${PIP_INSTALL_PATH}/torch/lib/../../torch.libs/" -name '*libgomp-*so*')
|
||||
export LD_PRELOAD=${GOMP_LIB}
|
||||
fi
|
||||
|
||||
python3 -m pytest ${LAYER_TESTS_INSTALL_DIR}/mo_python_api_tests --junitxml=${INSTALL_TEST_DIR}/TEST-test_mo_convert.xml
|
||||
env:
|
||||
TEST_DEVICE: CPU
|
||||
TEST_PRECISION: FP16
|
||||
|
||||
- name: OVC Python API Tests
|
||||
if: fromJSON(inputs.affected-components).MO.test
|
||||
run: |
|
||||
# Import 'test_utils' installed in '<package_test>/tests/python/openvino'
|
||||
export PYTHONPATH=${INSTALL_TEST_DIR}/python
|
||||
export LD_LIBRARY_PATH=${PIP_INSTALL_PATH}/openvino/libs:$LD_LIBRARY_PATH
|
||||
|
||||
if [[ "${{ runner.os }}" == "Linux" ]] && [[ "${{ runner.arch }}" == "ARM64" ]]; then
|
||||
# Find gomp lib
|
||||
GOMP_LIB=$(find "${PIP_INSTALL_PATH}/torch/lib/../../torch.libs/" -name '*libgomp-*so*')
|
||||
export LD_PRELOAD=${GOMP_LIB}
|
||||
fi
|
||||
|
||||
python3 -m pytest ${LAYER_TESTS_INSTALL_DIR}/ovc_python_api_tests --junitxml=${INSTALL_TEST_DIR}/TEST-test_ovc_convert.xml
|
||||
env:
|
||||
TEST_DEVICE: CPU
|
||||
TEST_PRECISION: FP16
|
||||
|
||||
- name: Python Frontend tests
|
||||
if: fromJSON(inputs.affected-components).PyTorch_FE.test ||
|
||||
fromJSON(inputs.affected-components).PDPD_FE.test
|
||||
run: |
|
||||
# to allow 'libtest_builtin_extensions.so' to find 'libopenvino_onnx_frontend.so'
|
||||
export LD_LIBRARY_PATH=${PIP_INSTALL_PATH}/openvino/libs:$LD_LIBRARY_PATH
|
||||
python3 -m pytest ${LAYER_TESTS_INSTALL_DIR}/py_frontend_tests --junitxml=${INSTALL_TEST_DIR}/TEST-test_py_fontend.xml
|
||||
|
||||
- name: PyTorch Layer Tests
|
||||
if: ${{ fromJSON(inputs.affected-components).PyTorch_FE.test && runner.arch != 'ARM64' }} # Ticket: 126287
|
||||
run: python3 -m pytest ${LAYER_TESTS_INSTALL_DIR}/pytorch_tests -n logical -m precommit --junitxml=${INSTALL_TEST_DIR}/TEST-pytorch.xml
|
||||
env:
|
||||
TEST_DEVICE: CPU
|
||||
TEST_PRECISION: FP32
|
||||
|
||||
- name: PyTorch torch.compile TORCHFX Layer Tests
|
||||
if: ${{ fromJSON(inputs.affected-components).PyTorch_FE.test && runner.os != 'macOS' }}
|
||||
run: |
|
||||
python3 -m pytest ${LAYER_TESTS_INSTALL_DIR}/pytorch_tests -m precommit_fx_backend --junitxml=${INSTALL_TEST_DIR}/TEST-pytorch.xml
|
||||
env:
|
||||
TEST_DEVICE: CPU
|
||||
TEST_PRECISION: FP32
|
||||
PYTORCH_TRACING_MODE: TORCHFX
|
||||
|
||||
- name: PyTorch torch.compile TORCHSCRIPT Layer Tests
|
||||
if: ${{ fromJSON(inputs.affected-components).PyTorch_FE.test && runner.os != 'macOS' }}
|
||||
run: |
|
||||
python3 -m pytest ${LAYER_TESTS_INSTALL_DIR}/pytorch_tests -m precommit_ts_backend --junitxml=${INSTALL_TEST_DIR}/TEST-pytorch.xml
|
||||
env:
|
||||
TEST_DEVICE: CPU
|
||||
TEST_PRECISION: FP32
|
||||
PYTORCH_TRACING_MODE: TORCHSCRIPT
|
||||
|
||||
- name: ONNX Layer Tests
|
||||
if: fromJSON(inputs.affected-components).ONNX_FE.test
|
||||
run: |
|
||||
# requires 'unit_tests' from 'tools/mo'
|
||||
export PYTHONPATH=${INSTALL_TEST_DIR}/mo:$PYTHONPATH
|
||||
python3 -m pytest ${LAYER_TESTS_INSTALL_DIR}/onnx_tests -m "not launch_only_if_manually_specified and precommit" --junitxml=${INSTALL_TEST_DIR}/TEST-onnx.xml
|
||||
env:
|
||||
TEST_DEVICE: CPU
|
||||
TEST_PRECISION: FP16
|
||||
|
||||
- name: TensorFlow 1 Layer Tests - TF FE
|
||||
if: fromJSON(inputs.affected-components).TF_FE.test
|
||||
run: |
|
||||
# requires 'unit_tests' from 'mo'
|
||||
export PYTHONPATH=${INSTALL_TEST_DIR}/mo
|
||||
python3 -m pytest ${LAYER_TESTS_INSTALL_DIR}/tensorflow_tests/ --use_new_frontend -m precommit_tf_fe --junitxml=${INSTALL_TEST_DIR}/TEST-tf_fe.xml
|
||||
env:
|
||||
TEST_DEVICE: CPU
|
||||
TEST_PRECISION: FP16
|
||||
|
||||
- name: TensorFlow 2 Layer Tests - TF FE
|
||||
if: fromJSON(inputs.affected-components).TF_FE.test && runner.os != 'macOS' # Ticket: 123322
|
||||
run: |
|
||||
# requires 'unit_tests' from 'mo'
|
||||
export PYTHONPATH=${INSTALL_TEST_DIR}/mo
|
||||
python3 -m pytest ${LAYER_TESTS_INSTALL_DIR}/tensorflow2_keras_tests/ --use_new_frontend -m precommit_tf_fe --junitxml=${INSTALL_TEST_DIR}/TEST-tf2_fe.xml
|
||||
env:
|
||||
TEST_DEVICE: CPU
|
||||
TEST_PRECISION: FP16
|
||||
|
||||
- name: JAX Layer Tests - TF FE
|
||||
if: ${{ fromJSON(inputs.affected-components).TF_FE.test && runner.arch != 'ARM64' }}
|
||||
run: python3 -m pytest ${LAYER_TESTS_INSTALL_DIR}/jax_tests/ -m precommit --junitxml=${INSTALL_TEST_DIR}/TEST-jax.xml
|
||||
env:
|
||||
TEST_DEVICE: CPU
|
||||
|
||||
- name: TensorFlow 1 Layer Tests - Legacy FE
|
||||
if: fromJSON(inputs.affected-components).TF_FE.test
|
||||
run: python3 -m pytest ${LAYER_TESTS_INSTALL_DIR}/tensorflow_tests/test_tf_Roll.py --ir_version=10 --junitxml=${INSTALL_TEST_DIR}/TEST-tf_Roll.xml
|
||||
|
||||
- name: TensorFlow 2 Layer Tests - Legacy FE
|
||||
if: fromJSON(inputs.affected-components).TF_FE.test
|
||||
run: python3 -m pytest ${LAYER_TESTS_INSTALL_DIR}/tensorflow2_keras_tests/test_tf2_keras_activation.py --ir_version=11 -k "sigmoid" --junitxml=${INSTALL_TEST_DIR}/TEST-tf2_Activation.xml
|
||||
env:
|
||||
TEST_DEVICE: CPU
|
||||
TEST_PRECISION: FP16
|
||||
|
||||
- name: TensorFlow Lite Layer Tests - TFL FE
|
||||
if: fromJSON(inputs.affected-components).TFL_FE.test
|
||||
run: python3 -m pytest ${LAYER_TESTS_INSTALL_DIR}/tensorflow_lite_tests/ --junitxml=${INSTALL_TEST_DIR}/TEST-tfl_fe.xml
|
||||
env:
|
||||
TEST_DEVICE: CPU
|
||||
TEST_PRECISION: FP16
|
||||
|
||||
- name: Clone API snippets
|
||||
if: runner.os != 'macOS'
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
sparse-checkout: openvino/docs/snippets
|
||||
path: ${{ env.OPENVINO_REPO }}
|
||||
submodules: 'false'
|
||||
|
||||
- name: Docs Python snippets
|
||||
if: runner.os != 'macOS'
|
||||
run: |
|
||||
# to find 'snippets' module in docs
|
||||
export PYTHONPATH=${OPENVINO_REPO}/docs
|
||||
# for 'template' extension
|
||||
export LD_LIBRARY_PATH=${INSTALL_TEST_DIR}:$LD_LIBRARY_PATH
|
||||
python3 ${OPENVINO_REPO}/docs/snippets/main.py
|
||||
|
||||
- name: Upload Test Results
|
||||
uses: actions/upload-artifact@v3
|
||||
if: ${{ !cancelled() }}
|
||||
with:
|
||||
name: test-results-python
|
||||
path: |
|
||||
${{ env.INSTALL_TEST_DIR }}/TEST*.html
|
||||
${{ env.INSTALL_TEST_DIR }}/TEST*.xml
|
||||
if-no-files-found: 'warn'
|
||||
132
.github/workflows/job_pytorch_models_tests.yml
vendored
Normal file
132
.github/workflows/job_pytorch_models_tests.yml
vendored
Normal file
@@ -0,0 +1,132 @@
|
||||
name: PyTorch Models tests
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
runner:
|
||||
description: 'Machine on which the tests would run'
|
||||
type: string
|
||||
required: true
|
||||
container:
|
||||
description: 'JSON to be converted to the value of the "container" configuration for the job'
|
||||
type: string
|
||||
required: false
|
||||
default: '{"image": null}'
|
||||
event:
|
||||
description: 'Event that triggered the workflow. E.g., "schedule" for nightly runs'
|
||||
type: string
|
||||
required: true
|
||||
|
||||
jobs:
|
||||
PyTorch_Models_Tests:
|
||||
name: PyTorch Models tests
|
||||
timeout-minutes: ${{ inputs.event == 'schedule' && 400 || 30 }}
|
||||
runs-on: ${{ inputs.runner }}
|
||||
container: ${{ fromJSON(inputs.container) }}
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
env:
|
||||
DEBIAN_FRONTEND: noninteractive # to prevent apt-get from waiting user input
|
||||
OPENVINO_REPO: ${{ github.workspace }}/openvino
|
||||
INSTALL_DIR: ${{ github.workspace }}/install
|
||||
INSTALL_TEST_DIR: ${{ github.workspace }}/install/tests
|
||||
MODEL_HUB_TESTS_INSTALL_DIR: ${{ github.workspace }}/install/tests/model_hub_tests
|
||||
steps:
|
||||
|
||||
- name: Check sudo
|
||||
if: ${{ runner.os == 'Linux' }}
|
||||
run: if [ "$(id -u)" -eq 0 ]; then apt update && apt --assume-yes install sudo; fi
|
||||
|
||||
- name: Download OpenVINO package
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: openvino_package
|
||||
path: ${{ env.INSTALL_DIR }}
|
||||
|
||||
- name: Download OpenVINO tests package
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: openvino_tests
|
||||
path: ${{ env.INSTALL_TEST_DIR }}
|
||||
|
||||
# Needed as ${{ github.workspace }} is not working correctly when using Docker
|
||||
- name: Setup Variables
|
||||
run: |
|
||||
echo "OPENVINO_REPO=$GITHUB_WORKSPACE/openvino" >> "$GITHUB_ENV"
|
||||
echo "INSTALL_DIR=$GITHUB_WORKSPACE/install" >> "$GITHUB_ENV"
|
||||
echo "INSTALL_TEST_DIR=$GITHUB_WORKSPACE/install/tests" >> "$GITHUB_ENV"
|
||||
echo "MODEL_HUB_TESTS_INSTALL_DIR=$GITHUB_WORKSPACE/install/tests/model_hub_tests" >> "$GITHUB_ENV"
|
||||
|
||||
- name: Extract OpenVINO packages
|
||||
run: |
|
||||
pushd ${INSTALL_DIR}
|
||||
tar -xzf openvino_package.tar.gz -C ${INSTALL_DIR}
|
||||
popd
|
||||
|
||||
pushd ${INSTALL_TEST_DIR}
|
||||
tar -xzf openvino_tests.tar.gz -C ${INSTALL_DIR}
|
||||
popd
|
||||
|
||||
- name: Fetch setup_python action
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
sparse-checkout: |
|
||||
.github/actions/setup_python/action.yml
|
||||
sparse-checkout-cone-mode: false
|
||||
path: 'openvino'
|
||||
|
||||
- name: Install dependencies
|
||||
if: ${{ runner.os == 'Linux' }}
|
||||
run: |
|
||||
# install git (required to build pip deps from the sources)
|
||||
# install 'g++' to build 'detectron2' and 'natten' wheels
|
||||
sudo apt-get install --assume-yes --no-install-recommends g++ git ca-certificates
|
||||
|
||||
- name: Setup Python 3.11
|
||||
uses: ./openvino/.github/actions/setup_python
|
||||
with:
|
||||
version: '3.11'
|
||||
should-setup-pip-paths: 'false'
|
||||
self-hosted-runner: ${{ contains(inputs.runner, 'aks') }}
|
||||
|
||||
- name: Install OpenVINO Python wheels
|
||||
run: python3 -m pip install ${INSTALL_DIR}/tools/openvino-*
|
||||
|
||||
- name: Install PyTorch tests requirements
|
||||
run: |
|
||||
python3 -m pip install -r ${MODEL_HUB_TESTS_INSTALL_DIR}/torch_tests/requirements.txt
|
||||
python3 -m pip install -r ${MODEL_HUB_TESTS_INSTALL_DIR}/torch_tests/requirements_secondary.txt
|
||||
echo "Available storage:"
|
||||
df -h
|
||||
env:
|
||||
CPLUS_INCLUDE_PATH: ${{ env.Python_ROOT_DIR }}/include/python${{ env.PYTHON_VERSION }}
|
||||
|
||||
- name: PyTorch Models Tests
|
||||
run: |
|
||||
export PYTHONPATH=${MODEL_HUB_TESTS_INSTALL_DIR}:$PYTHONPATH
|
||||
python3 -m pytest ${MODEL_HUB_TESTS_INSTALL_DIR}/torch_tests -m ${TYPE} --html=${INSTALL_TEST_DIR}/TEST-torch_model_tests.html --self-contained-html -v
|
||||
env:
|
||||
TYPE: ${{ inputs.event == 'schedule' && 'nightly' || 'precommit'}}
|
||||
TEST_DEVICE: CPU
|
||||
USE_SYSTEM_CACHE: False
|
||||
OP_REPORT_FILE: ${{ env.INSTALL_TEST_DIR }}/TEST-torch_unsupported_ops.log
|
||||
|
||||
- name: Reformat unsupported ops file
|
||||
if: '!cancelled()'
|
||||
run: |
|
||||
python3 ${MODEL_HUB_TESTS_INSTALL_DIR}/torch_tests/scripts/process_op_report.py ${INSTALL_TEST_DIR}/TEST-torch_unsupported_ops.log
|
||||
|
||||
- name: Available storage after tests
|
||||
run: |
|
||||
echo "Available storage:"
|
||||
df -h
|
||||
|
||||
- name: Upload Test Results
|
||||
uses: actions/upload-artifact@v3
|
||||
if: ${{ !cancelled() }}
|
||||
with:
|
||||
name: test-results-torch-models
|
||||
path: |
|
||||
${{ env.INSTALL_TEST_DIR }}/TEST-torch*
|
||||
if-no-files-found: 'error'
|
||||
132
.github/workflows/job_samples_tests.yml
vendored
Normal file
132
.github/workflows/job_samples_tests.yml
vendored
Normal file
@@ -0,0 +1,132 @@
|
||||
name: Samples
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
runner:
|
||||
description: 'Machine on which the tests would run'
|
||||
type: string
|
||||
required: true
|
||||
image:
|
||||
description: 'Docker image in which the tests would run'
|
||||
type: string
|
||||
required: false
|
||||
default: null
|
||||
affected-components:
|
||||
description: 'Components that are affected by changes in the commit defined by the Smart CI Action'
|
||||
type: string
|
||||
required: true
|
||||
|
||||
jobs:
|
||||
Samples:
|
||||
runs-on: ${{ inputs.runner }}
|
||||
container:
|
||||
image: ${{ inputs.image }}
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
env:
|
||||
DEBIAN_FRONTEND: noninteractive # to prevent apt-get from waiting user input
|
||||
INSTALL_DIR: ${{ github.workspace }}/install
|
||||
INSTALL_TEST_DIR: ${{ github.workspace }}/install/tests
|
||||
BUILD_DIR: ${{ github.workspace }}/build
|
||||
steps:
|
||||
- name: Download OpenVINO package
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: openvino_package
|
||||
path: ${{ env.INSTALL_DIR }}
|
||||
|
||||
- name: Download OpenVINO tests package
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: openvino_tests
|
||||
path: ${{ env.INSTALL_TEST_DIR }}
|
||||
|
||||
# Needed as ${{ github.workspace }} is not working correctly when using Docker
|
||||
- name: Setup Variables
|
||||
run: |
|
||||
echo "INSTALL_DIR=$GITHUB_WORKSPACE/install" >> "$GITHUB_ENV"
|
||||
echo "INSTALL_TEST_DIR=$GITHUB_WORKSPACE/install/tests" >> "$GITHUB_ENV"
|
||||
echo "BUILD_DIR=$GITHUB_WORKSPACE/build" >> "$GITHUB_ENV"
|
||||
|
||||
- name: Extract OpenVINO packages
|
||||
run: |
|
||||
pushd $INSTALL_DIR
|
||||
tar -xzf openvino_package.tar.gz -C $INSTALL_DIR
|
||||
popd
|
||||
pushd $INSTALL_TEST_DIR
|
||||
tar -xzf openvino_tests.tar.gz -C $INSTALL_DIR
|
||||
popd
|
||||
|
||||
- name: Install OpenVINO dependencies (Linux)
|
||||
if: runner.os == 'Linux'
|
||||
run: $INSTALL_DIR/install_dependencies/install_openvino_dependencies.sh -c=core -c=dev -y
|
||||
|
||||
- name: Install OpenVINO dependencies (mac)
|
||||
if: runner.os == 'macOS'
|
||||
run: brew install coreutils
|
||||
|
||||
- name: Fetch setup_python action
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
sparse-checkout: |
|
||||
.github/actions/setup_python/action.yml
|
||||
sparse-checkout-cone-mode: false
|
||||
path: 'openvino'
|
||||
|
||||
- name: Setup Python 3.11
|
||||
uses: ./openvino/.github/actions/setup_python
|
||||
with:
|
||||
version: '3.11'
|
||||
should-setup-pip-paths: 'false'
|
||||
self-hosted-runner: ${{ runner.os == 'Linux' }}
|
||||
|
||||
- name: Build cpp samples - GCC
|
||||
run: $INSTALL_DIR/samples/cpp/build_samples.sh -i $INSTALL_DIR -b $BUILD_DIR/cpp_samples
|
||||
env:
|
||||
CMAKE_COMPILE_WARNING_AS_ERROR: 'ON'
|
||||
|
||||
- name: Build cpp samples - Clang
|
||||
if: runner.os == 'Linux'
|
||||
run: |
|
||||
apt-get install -y clang
|
||||
$INSTALL_DIR/samples/cpp/build_samples.sh -i $INSTALL_DIR -b $BUILD_DIR/cpp_samples_clang
|
||||
env:
|
||||
CMAKE_COMPILE_WARNING_AS_ERROR: 'ON'
|
||||
CC: clang
|
||||
CXX: clang++
|
||||
|
||||
- name: Build c samples
|
||||
run: $INSTALL_DIR/samples/c/build_samples.sh -i $INSTALL_DIR -b $BUILD_DIR/c_samples
|
||||
env:
|
||||
CMAKE_COMPILE_WARNING_AS_ERROR: 'ON'
|
||||
|
||||
#
|
||||
# Tests
|
||||
#
|
||||
|
||||
- name: Samples tests
|
||||
if: fromJSON(inputs.affected-components).samples.test
|
||||
run: |
|
||||
export WORKSPACE=$INSTALL_DIR
|
||||
export IE_APP_PATH=$INSTALL_DIR/samples_bin
|
||||
export IE_APP_PYTHON_PATH=$INSTALL_DIR/samples/python
|
||||
export SHARE=$INSTALL_TEST_DIR/smoke_tests/samples_smoke_tests_data
|
||||
|
||||
python3 -m pip install --ignore-installed PyYAML -r $INSTALL_TEST_DIR/smoke_tests/requirements.txt
|
||||
export LD_LIBRARY_PATH=${IE_APP_PATH}:$LD_LIBRARY_PATH
|
||||
|
||||
source ${INSTALL_DIR}/setupvars.sh
|
||||
|
||||
python3 -m pytest -sv $INSTALL_TEST_DIR/smoke_tests \
|
||||
--env_conf $INSTALL_TEST_DIR/smoke_tests/env_config.yml \
|
||||
--junitxml=$INSTALL_TEST_DIR/TEST-SamplesSmokeTests.xml
|
||||
|
||||
- name: Upload Test Results
|
||||
uses: actions/upload-artifact@v3
|
||||
if: ${{ !cancelled() }}
|
||||
with:
|
||||
name: test-results-samples
|
||||
path: ${{ env.INSTALL_TEST_DIR }}/TEST*.xml
|
||||
if-no-files-found: 'warn'
|
||||
113
.github/workflows/job_tensorflow_hub_models_tests.yml
vendored
Normal file
113
.github/workflows/job_tensorflow_hub_models_tests.yml
vendored
Normal file
@@ -0,0 +1,113 @@
|
||||
name: TensorFlow Hub Models tests
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
runner:
|
||||
description: 'Machine on which the tests would run'
|
||||
type: string
|
||||
required: true
|
||||
container:
|
||||
description: 'JSON to be converted to the value of the "container" configuration for the job'
|
||||
type: string
|
||||
required: false
|
||||
default: '{"image": null}'
|
||||
event:
|
||||
description: 'Event that triggered the workflow. E.g., "schedule" for nightly runs'
|
||||
type: string
|
||||
required: true
|
||||
|
||||
jobs:
|
||||
TensorFlow_Hub_Models_Tests:
|
||||
name: TensorFlow Hub Models tests
|
||||
timeout-minutes: ${{ inputs.event == 'schedule' && 400 || 25 }}
|
||||
runs-on: ${{ inputs.runner }}
|
||||
container: ${{ fromJSON(inputs.container) }}
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
env:
|
||||
DEBIAN_FRONTEND: noninteractive # to prevent apt-get from waiting user input
|
||||
OPENVINO_REPO: ${{ github.workspace }}/openvino
|
||||
INSTALL_DIR: ${{ github.workspace }}/install
|
||||
INSTALL_TEST_DIR: ${{ github.workspace }}/install/tests
|
||||
MODEL_HUB_TESTS_INSTALL_DIR: ${{ github.workspace }}/install/tests/model_hub_tests
|
||||
steps:
|
||||
|
||||
- name: Check sudo
|
||||
if: ${{ runner.os == 'Linux' }}
|
||||
run: if [ "$(id -u)" -eq 0 ]; then apt update && apt --assume-yes install sudo; fi
|
||||
|
||||
- name: Download OpenVINO package
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: openvino_package
|
||||
path: ${{ env.INSTALL_DIR }}
|
||||
|
||||
- name: Download OpenVINO tests package
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: openvino_tests
|
||||
path: ${{ env.INSTALL_TEST_DIR }}
|
||||
|
||||
# Needed as ${{ github.workspace }} is not working correctly when using Docker
|
||||
- name: Setup Variables
|
||||
run: |
|
||||
echo "OPENVINO_REPO=$GITHUB_WORKSPACE/openvino" >> "$GITHUB_ENV"
|
||||
echo "INSTALL_DIR=$GITHUB_WORKSPACE/install" >> "$GITHUB_ENV"
|
||||
echo "INSTALL_TEST_DIR=$GITHUB_WORKSPACE/install/tests" >> "$GITHUB_ENV"
|
||||
echo "MODEL_HUB_TESTS_INSTALL_DIR=$GITHUB_WORKSPACE/install/tests/model_hub_tests" >> "$GITHUB_ENV"
|
||||
|
||||
- name: Extract OpenVINO packages
|
||||
run: |
|
||||
pushd ${INSTALL_DIR}
|
||||
tar -xzf openvino_package.tar.gz -C ${INSTALL_DIR}
|
||||
popd
|
||||
|
||||
pushd ${INSTALL_TEST_DIR}
|
||||
tar -xzf openvino_tests.tar.gz -C ${INSTALL_DIR}
|
||||
popd
|
||||
|
||||
- name: Fetch setup_python action
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
sparse-checkout: |
|
||||
.github/actions/setup_python/action.yml
|
||||
sparse-checkout-cone-mode: false
|
||||
path: 'openvino'
|
||||
|
||||
- name: Install dependencies
|
||||
if: ${{ runner.os == 'Linux' }}
|
||||
run: |
|
||||
# install git (required to build pip deps from the sources)
|
||||
sudo apt-get install --assume-yes --no-install-recommends g++ git ca-certificates
|
||||
|
||||
- name: Setup Python 3.11
|
||||
uses: ./openvino/.github/actions/setup_python
|
||||
with:
|
||||
version: '3.11'
|
||||
should-setup-pip-paths: 'false'
|
||||
self-hosted-runner: ${{ contains(inputs.runner, 'aks') }}
|
||||
|
||||
- name: Install OpenVINO Python wheels
|
||||
run: python3 -m pip install ${INSTALL_DIR}/tools/openvino-*
|
||||
|
||||
- name: Install TF Hub tests requirements
|
||||
run: python3 -m pip install -r ${MODEL_HUB_TESTS_INSTALL_DIR}/tf_hub_tests/requirements.txt
|
||||
|
||||
- name: TensorFlow Hub Tests - TF FE
|
||||
run: |
|
||||
export PYTHONPATH=${MODEL_HUB_TESTS_INSTALL_DIR}:$PYTHONPATH
|
||||
python3 -m pytest ${MODEL_HUB_TESTS_INSTALL_DIR}/tf_hub_tests/ -m ${TYPE} --html=${INSTALL_TEST_DIR}/TEST-tf_hub_tf_fe.html --self-contained-html -v
|
||||
env:
|
||||
TYPE: ${{ inputs.event == 'schedule' && 'nightly' || 'precommit'}}
|
||||
TEST_DEVICE: CPU
|
||||
|
||||
- name: Upload Test Results
|
||||
uses: actions/upload-artifact@v3
|
||||
if: ${{ !cancelled() }}
|
||||
with:
|
||||
name: test-results-tensorflow-hub-models
|
||||
path: |
|
||||
${{ env.INSTALL_TEST_DIR }}/TEST*.html
|
||||
if-no-files-found: 'error'
|
||||
4
.github/workflows/labeler.yml
vendored
4
.github/workflows/labeler.yml
vendored
@@ -9,8 +9,10 @@ jobs:
|
||||
pull-requests: write
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/labeler@v4
|
||||
- uses: akladiev/labeler@v4.3.1
|
||||
with:
|
||||
repo-token: "${{ secrets.GITHUB_TOKEN }}"
|
||||
configuration-path: '.github/labeler.yml'
|
||||
sync-labels: 'true'
|
||||
dot: 'true'
|
||||
non-matching-label: 'no-match-files'
|
||||
|
||||
1210
.github/workflows/linux.yml
vendored
1210
.github/workflows/linux.yml
vendored
File diff suppressed because it is too large
Load Diff
361
.github/workflows/linux_arm64.yml
vendored
Normal file
361
.github/workflows/linux_arm64.yml
vendored
Normal file
@@ -0,0 +1,361 @@
|
||||
name: Linux ARM64 (Ubuntu 20.04, Python 3.11)
|
||||
on:
|
||||
workflow_dispatch:
|
||||
pull_request:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- 'releases/**'
|
||||
|
||||
concurrency:
|
||||
# github.ref is not unique in post-commit
|
||||
group: ${{ github.event_name == 'push' && github.run_id || github.ref }}-linux-arm
|
||||
cancel-in-progress: true
|
||||
|
||||
env:
|
||||
PIP_CACHE_PATH: /mount/caches/pip/linux
|
||||
PYTHON_VERSION: '3.11'
|
||||
|
||||
jobs:
|
||||
Smart_CI:
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
affected_components: "${{ steps.smart_ci.outputs.affected_components }}"
|
||||
steps:
|
||||
- name: checkout action
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
sparse-checkout: .github/actions/smart-ci
|
||||
|
||||
- name: Get affected components
|
||||
id: smart_ci
|
||||
uses: ./.github/actions/smart-ci
|
||||
with:
|
||||
repository: ${{ github.repository }}
|
||||
pr: ${{ github.event.number }}
|
||||
commit_sha: ${{ github.sha }}
|
||||
component_pattern: "category: (.*)"
|
||||
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Show affected components
|
||||
run: |
|
||||
echo "${{ toJSON(steps.smart_ci.outputs.affected_components) }}"
|
||||
shell: bash
|
||||
|
||||
Build:
|
||||
needs: Smart_CI
|
||||
timeout-minutes: 150
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
runs-on: 'aks-linux-16-cores-arm'
|
||||
container:
|
||||
image: openvinogithubactions.azurecr.io/dockerhub/ubuntu:20.04
|
||||
volumes:
|
||||
- /mount:/mount
|
||||
options: -e SCCACHE_AZURE_BLOB_CONTAINER -e SCCACHE_AZURE_CONNECTION_STRING
|
||||
env:
|
||||
DEBIAN_FRONTEND: noninteractive # to prevent apt-get from waiting user input
|
||||
CMAKE_BUILD_TYPE: 'Release'
|
||||
CMAKE_GENERATOR: 'Ninja Multi-Config'
|
||||
CMAKE_CXX_COMPILER_LAUNCHER: sccache
|
||||
CMAKE_C_COMPILER_LAUNCHER: sccache
|
||||
GITHUB_WORKSPACE: '/__w/openvino/openvino'
|
||||
OPENVINO_REPO: /__w/openvino/openvino/openvino
|
||||
OPENVINO_CONTRIB_REPO: /__w/openvino/openvino/openvino_contrib
|
||||
INSTALL_DIR: /__w/openvino/openvino/openvino_install
|
||||
INSTALL_TEST_DIR: /__w/openvino/openvino/tests_install
|
||||
DEVELOPER_PACKAGE_DIR: /__w/openvino/openvino/developer_package_install
|
||||
BUILD_DIR: /__w/openvino/openvino/openvino_build
|
||||
SCCACHE_AZURE_KEY_PREFIX: 'ubuntu20_aarch64_Release'
|
||||
ONNX_RUNTIME_UTILS: /__w/openvino/openvino/openvino/.ci/azure/ci_utils/onnxruntime
|
||||
if: "!fromJSON(needs.smart_ci.outputs.affected_components).docs_only"
|
||||
|
||||
steps:
|
||||
- name: Install git
|
||||
run: apt-get update && apt-get install --assume-yes --no-install-recommends git ca-certificates
|
||||
|
||||
- name: Clone OpenVINO
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
path: ${{ env.OPENVINO_REPO }}
|
||||
submodules: 'true'
|
||||
|
||||
- name: Clone OpenVINO Contrib
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: 'openvinotoolkit/openvino_contrib'
|
||||
path: ${{ env.OPENVINO_CONTRIB_REPO }}
|
||||
submodules: 'true'
|
||||
ref: 'master'
|
||||
|
||||
#
|
||||
# Print system info
|
||||
#
|
||||
|
||||
- name: System info
|
||||
uses: ./openvino/.github/actions/system_info
|
||||
|
||||
#
|
||||
# Dependencies
|
||||
#
|
||||
|
||||
- name: Install build dependencies
|
||||
run: |
|
||||
bash ${OPENVINO_REPO}/install_build_dependencies.sh
|
||||
# default-jdk - Java API
|
||||
apt install --assume-yes --no-install-recommends default-jdk
|
||||
|
||||
- name: Install sccache
|
||||
uses: mozilla-actions/sccache-action@v0.0.3
|
||||
with:
|
||||
version: "v0.5.4"
|
||||
|
||||
- name: Setup Python ${{ env.PYTHON_VERSION }}
|
||||
uses: ./openvino/.github/actions/setup_python
|
||||
with:
|
||||
version: ${{ env.PYTHON_VERSION }}
|
||||
pip-cache-path: ${{ env.PIP_CACHE_PATH }}
|
||||
should-setup-pip-paths: 'true'
|
||||
show-cache-info: 'true'
|
||||
|
||||
- name: Install python dependencies
|
||||
run: |
|
||||
# For Python API: build and wheel packaging
|
||||
python3 -m pip install -r ${OPENVINO_REPO}/src/bindings/python/wheel/requirements-dev.txt
|
||||
python3 -m pip install -r ${OPENVINO_REPO}/src/bindings/python/src/compatibility/openvino/requirements-dev.txt
|
||||
|
||||
# For running ONNX frontend unit tests
|
||||
python3 -m pip install --force-reinstall -r ${OPENVINO_REPO}/src/frontends/onnx/tests/requirements.txt
|
||||
|
||||
# For running TensorFlow frontend unit tests
|
||||
python3 -m pip install -r ${OPENVINO_REPO}/src/frontends/tensorflow/tests/requirements.txt
|
||||
|
||||
# For running TensorFlow Lite frontend unit tests
|
||||
python3 -m pip install -r ${OPENVINO_REPO}/src/frontends/tensorflow_lite/tests/requirements.txt
|
||||
|
||||
# For running Paddle frontend unit tests
|
||||
python3 -m pip install -r ${OPENVINO_REPO}/src/frontends/paddle/tests/requirements.txt
|
||||
|
||||
#
|
||||
# Build
|
||||
#
|
||||
|
||||
- name: CMake configure - OpenVINO
|
||||
run: |
|
||||
cmake \
|
||||
-G "${{ env.CMAKE_GENERATOR }}" \
|
||||
-DENABLE_CPPLINT=OFF \
|
||||
-DENABLE_NCC_STYLE=OFF \
|
||||
-DENABLE_TESTS=ON \
|
||||
-DENABLE_STRICT_DEPENDENCIES=OFF \
|
||||
-DENABLE_SYSTEM_TBB=OFF \
|
||||
-DENABLE_SYSTEM_OPENCL=ON \
|
||||
-DCMAKE_VERBOSE_MAKEFILE=ON \
|
||||
-DCPACK_GENERATOR=TGZ \
|
||||
-DCMAKE_COMPILE_WARNING_AS_ERROR=ON \
|
||||
-DCMAKE_CXX_COMPILER_LAUNCHER=${{ env.CMAKE_CXX_COMPILER_LAUNCHER }} \
|
||||
-DCMAKE_C_COMPILER_LAUNCHER=${{ env.CMAKE_C_COMPILER_LAUNCHER }} \
|
||||
-S ${OPENVINO_REPO} \
|
||||
-B ${BUILD_DIR}
|
||||
|
||||
- name: Clean sccache stats
|
||||
run: ${SCCACHE_PATH} --zero-stats
|
||||
|
||||
- name: Cmake build - OpenVINO
|
||||
run: cmake --build ${BUILD_DIR} --parallel --config ${{ env.CMAKE_BUILD_TYPE }}
|
||||
|
||||
- name: Show sccache stats
|
||||
run: ${SCCACHE_PATH} --show-stats
|
||||
|
||||
- name: Cmake install - OpenVINO
|
||||
run: |
|
||||
cmake -DCMAKE_INSTALL_PREFIX=${INSTALL_DIR} -P ${BUILD_DIR}/cmake_install.cmake
|
||||
cmake -DCMAKE_INSTALL_PREFIX=${INSTALL_TEST_DIR} -DCOMPONENT=tests -P ${BUILD_DIR}/cmake_install.cmake
|
||||
cmake -DCMAKE_INSTALL_PREFIX=${DEVELOPER_PACKAGE_DIR} -DCOMPONENT=developer_package -P ${BUILD_DIR}/cmake_install.cmake
|
||||
cmake -DCMAKE_INSTALL_PREFIX=${INSTALL_DIR} -DCOMPONENT=python_wheels -P ${BUILD_DIR}/cmake_install.cmake
|
||||
|
||||
- name: Pack Artifacts
|
||||
run: |
|
||||
|
||||
# Add the ONNX Runtime version and skip tests list to the archive to use in the ONNX Runtime Job
|
||||
# w/o the need to checkout repository
|
||||
|
||||
cp -R ${ONNX_RUNTIME_UTILS} ${INSTALL_DIR}
|
||||
|
||||
pushd ${INSTALL_DIR}
|
||||
tar -czvf ${BUILD_DIR}/openvino_package.tar.gz *
|
||||
popd
|
||||
|
||||
pushd ${DEVELOPER_PACKAGE_DIR}
|
||||
tar -czvf ${BUILD_DIR}/openvino_developer_package.tar.gz *
|
||||
popd
|
||||
|
||||
pushd ${INSTALL_TEST_DIR}
|
||||
tar -czvf ${BUILD_DIR}/openvino_tests.tar.gz *
|
||||
popd
|
||||
|
||||
- name: Build Debian packages
|
||||
if: ${{ 'false' }}
|
||||
run: |
|
||||
/usr/bin/python3.8 -m pip install -U pip
|
||||
/usr/bin/python3.8 -m pip install -r ${OPENVINO_REPO}/src/bindings/python/wheel/requirements-dev.txt
|
||||
/usr/bin/python3.8 -m pip install -r ${OPENVINO_REPO}/src/bindings/python/src/compatibility/openvino/requirements-dev.txt
|
||||
cmake -UPYTHON* \
|
||||
-DENABLE_PYTHON_PACKAGING=ON \
|
||||
-DENABLE_TESTS=OFF \
|
||||
-DPython3_EXECUTABLE=/usr/bin/python3.8 \
|
||||
-DCPACK_GENERATOR=DEB \
|
||||
${BUILD_DIR}
|
||||
cmake --build ${BUILD_DIR} --parallel --config ${{ env.CMAKE_BUILD_TYPE }} --target package
|
||||
|
||||
- name: Cmake & Build - OpenVINO Contrib
|
||||
run: |
|
||||
cmake \
|
||||
-DBUILD_nvidia_plugin=OFF \
|
||||
-DCUSTOM_OPERATIONS="calculate_grid;complex_mul;fft;grid_sample;sparse_conv;sparse_conv_transpose" \
|
||||
-DOPENVINO_EXTRA_MODULES=${OPENVINO_CONTRIB_REPO}/modules \
|
||||
-S ${OPENVINO_REPO} \
|
||||
-B ${BUILD_DIR}
|
||||
cmake --build ${BUILD_DIR} --parallel --config ${{ env.CMAKE_BUILD_TYPE }}
|
||||
|
||||
#
|
||||
# Upload build artifacts
|
||||
#
|
||||
|
||||
- name: Upload openvino package
|
||||
if: ${{ always() }}
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: openvino_package
|
||||
path: ${{ env.BUILD_DIR }}/openvino_package.tar.gz
|
||||
if-no-files-found: 'error'
|
||||
|
||||
- name: Upload openvino developer package
|
||||
if: ${{ always() }}
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: openvino_developer_package
|
||||
path: ${{ env.BUILD_DIR }}/openvino_developer_package.tar.gz
|
||||
if-no-files-found: 'error'
|
||||
|
||||
- name: Upload openvino debian packages
|
||||
if: ${{ 'false' }}
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: openvino_debian_packages
|
||||
path: ${{ env.BUILD_DIR }}/*.deb
|
||||
if-no-files-found: 'error'
|
||||
|
||||
- name: Upload openvino tests package
|
||||
if: ${{ always() }}
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: openvino_tests
|
||||
path: ${{ env.BUILD_DIR }}/openvino_tests.tar.gz
|
||||
if-no-files-found: 'error'
|
||||
|
||||
Debian_Packages:
|
||||
name: Debian Packages
|
||||
needs: Build
|
||||
if: ${{ 'false' }}
|
||||
uses: ./.github/workflows/job_debian_packages.yml
|
||||
with:
|
||||
runner: 'aks-linux-16-cores-arm'
|
||||
image: 'openvinogithubactions.azurecr.io/dockerhub/ubuntu:20.04'
|
||||
|
||||
Samples:
|
||||
needs: [ Build, Smart_CI ]
|
||||
if: fromJSON(needs.smart_ci.outputs.affected_components).samples
|
||||
uses: ./.github/workflows/job_samples_tests.yml
|
||||
with:
|
||||
runner: 'aks-linux-16-cores-arm'
|
||||
image: 'openvinogithubactions.azurecr.io/dockerhub/ubuntu:20.04'
|
||||
affected-components: ${{ needs.smart_ci.outputs.affected_components }}
|
||||
|
||||
ONNX_Runtime:
|
||||
name: ONNX Runtime Integration
|
||||
if: fromJSON(needs.smart_ci.outputs.affected_components).ONNX_RT
|
||||
needs: [ Build, Smart_CI ]
|
||||
uses: ./.github/workflows/job_onnx_runtime.yml
|
||||
with:
|
||||
runner: 'aks-linux-16-cores-arm'
|
||||
container: '{"image": "openvinogithubactions.azurecr.io/dockerhub/ubuntu:20.04", "volumes": ["/mount:/mount"], "options": "-e SCCACHE_AZURE_BLOB_CONTAINER -e SCCACHE_AZURE_CONNECTION_STRING"}'
|
||||
sccache-azure-key-prefix: 'ubuntu20_aarch64_onnxruntime'
|
||||
|
||||
CXX_Unit_Tests:
|
||||
name: C++ unit tests
|
||||
needs: [ Build, Smart_CI ]
|
||||
uses: ./.github/workflows/job_cxx_unit_tests.yml
|
||||
with:
|
||||
runner: 'aks-linux-16-cores-arm'
|
||||
image: 'openvinogithubactions.azurecr.io/dockerhub/ubuntu:20.04'
|
||||
affected-components: ${{ needs.smart_ci.outputs.affected_components }}
|
||||
|
||||
Python_Unit_Tests:
|
||||
name: Python unit tests
|
||||
needs: [ Build, Smart_CI ]
|
||||
uses: ./.github/workflows/job_python_unit_tests.yml
|
||||
with:
|
||||
runner: 'aks-linux-16-cores-arm'
|
||||
container: '{"image": "openvinogithubactions.azurecr.io/dockerhub/ubuntu:20.04", "volumes": ["/mount:/mount"]}'
|
||||
affected-components: ${{ needs.smart_ci.outputs.affected_components }}
|
||||
|
||||
CPU_Functional_Tests:
|
||||
name: CPU functional tests
|
||||
if: fromJSON(needs.smart_ci.outputs.affected_components).CPU.test
|
||||
needs: [ Build, Smart_CI ]
|
||||
uses: ./.github/workflows/job_cpu_functional_tests.yml
|
||||
with:
|
||||
runner: 'aks-linux-16-cores-arm'
|
||||
image: 'openvinogithubactions.azurecr.io/dockerhub/ubuntu:20.04'
|
||||
|
||||
TensorFlow_Hub_Models_Tests:
|
||||
name: TensorFlow Hub Models tests
|
||||
if: ${{ 'false' }} # TODO: Enable once the dependencies are ready for arm (no tensorflow-text available for arm from PyPI)
|
||||
# if: fromJSON(needs.smart_ci.outputs.affected_components).TF_FE.test ||
|
||||
# fromJSON(needs.smart_ci.outputs.affected_components).TFL_FE.test
|
||||
needs: [ Build, Smart_CI ]
|
||||
uses: ./.github/workflows/job_tensorflow_hub_models_tests.yml
|
||||
with:
|
||||
runner: 'aks-linux-16-cores-arm'
|
||||
container: '{"image": "openvinogithubactions.azurecr.io/dockerhub/ubuntu:20.04"}'
|
||||
event: ${{ github.event_name }}
|
||||
|
||||
TensorFlow_Hub_Performance_Models_Tests:
|
||||
name: TensorFlow Hub Performance Models tests
|
||||
if: ${{ 'false' }} # TODO: Enable once the dependencies are ready for arm (no tensorflow-text available for arm from PyPI)
|
||||
# if: fromJSON(needs.smart_ci.outputs.affected_components).TF_FE.test ||
|
||||
# fromJSON(needs.smart_ci.outputs.affected_components).TFL_FE.test
|
||||
needs: [ Build, Smart_CI ]
|
||||
uses: ./.github/workflows/job_tensorflow_hub_performance_models_tests.yml
|
||||
with:
|
||||
runner: 'aks-linux-16-cores-arm'
|
||||
container: '{"image": "openvinogithubactions.azurecr.io/dockerhub/ubuntu:20.04"}'
|
||||
event: ${{ github.event_name }}
|
||||
|
||||
PyTorch_Models_Tests:
|
||||
name: PyTorch Models tests
|
||||
if: ${{ 'false' }} # TODO: Enable once the dependencies are ready for arm (no tensorflow-text available for arm from PyPI)
|
||||
# if: fromJSON(needs.smart_ci.outputs.affected_components).PyTorch_FE.test
|
||||
needs: [ Build, Smart_CI ]
|
||||
uses: ./.github/workflows/job_pytorch_models_tests.yml
|
||||
with:
|
||||
runner: 'aks-linux-16-cores-arm'
|
||||
container: '{"image": "openvinogithubactions.azurecr.io/dockerhub/ubuntu:20.04"}'
|
||||
event: ${{ github.event_name }}
|
||||
|
||||
Overall_Status:
|
||||
name: ci/gha_overall_status_linux_arm64
|
||||
needs: [Smart_CI, Build, Debian_Packages, Samples, ONNX_Runtime, CXX_Unit_Tests, Python_Unit_Tests, CPU_Functional_Tests,
|
||||
TensorFlow_Hub_Models_Tests, TensorFlow_Hub_Performance_Models_Tests, PyTorch_Models_Tests]
|
||||
if: ${{ always() }}
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Check status of all jobs
|
||||
if: >-
|
||||
${{
|
||||
contains(needs.*.result, 'failure') ||
|
||||
contains(needs.*.result, 'cancelled')
|
||||
}}
|
||||
run: exit 1
|
||||
170
.github/workflows/linux_conditional_compilation.yml
vendored
170
.github/workflows/linux_conditional_compilation.yml
vendored
@@ -2,23 +2,10 @@ name: Linux Static CC (Ubuntu 22.04, Python 3.11, Clang)
|
||||
on:
|
||||
workflow_dispatch:
|
||||
pull_request:
|
||||
paths-ignore:
|
||||
- '**/docs/**'
|
||||
- 'docs/**'
|
||||
- '**/**.md'
|
||||
- '**.md'
|
||||
- '**/layer_tests_summary/**'
|
||||
- '**/conformance/**'
|
||||
push:
|
||||
paths-ignore:
|
||||
- '**/docs/**'
|
||||
- 'docs/**'
|
||||
- '**/**.md'
|
||||
- '**.md'
|
||||
- '**/layer_tests_summary/**'
|
||||
- '**/conformance/**'
|
||||
branches:
|
||||
- master
|
||||
- 'releases/**'
|
||||
|
||||
concurrency:
|
||||
# github.ref is not unique in post-commit
|
||||
@@ -30,7 +17,31 @@ env:
|
||||
PYTHON_VERSION: '3.11'
|
||||
|
||||
jobs:
|
||||
Smart_CI:
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
affected_components: "${{ steps.smart_ci.outputs.affected_components }}"
|
||||
skip_workflow: "${{ steps.smart_ci.outputs.skip_workflow }}"
|
||||
steps:
|
||||
- name: checkout action
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
sparse-checkout: .github/actions/smart-ci
|
||||
|
||||
- name: Get affected components
|
||||
id: smart_ci
|
||||
uses: ./.github/actions/smart-ci
|
||||
with:
|
||||
repository: ${{ github.repository }}
|
||||
pr: ${{ github.event.number }}
|
||||
commit_sha: ${{ github.sha }}
|
||||
component_pattern: "category: (.*)"
|
||||
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
skip_when_only_listed_labels_set: 'docs'
|
||||
skip_when_only_listed_files_changed: '*.md,*.rst,*.png,*.jpg,*.svg,*/layer_tests_summary/*,*/conformance/*'
|
||||
|
||||
Build:
|
||||
needs: Smart_CI
|
||||
timeout-minutes: 150
|
||||
defaults:
|
||||
run:
|
||||
@@ -39,7 +50,7 @@ jobs:
|
||||
container:
|
||||
image: openvinogithubactions.azurecr.io/dockerhub/ubuntu:22.04
|
||||
volumes:
|
||||
- /mount/caches:/mount/caches
|
||||
- /mount:/mount
|
||||
options: -e SCCACHE_AZURE_BLOB_CONTAINER -e SCCACHE_AZURE_CONNECTION_STRING
|
||||
env:
|
||||
DEBIAN_FRONTEND: noninteractive # to prevent apt-get from waiting user input
|
||||
@@ -50,10 +61,12 @@ jobs:
|
||||
GITHUB_WORKSPACE: '/__w/openvino/openvino'
|
||||
OPENVINO_REPO: /__w/openvino/openvino/openvino
|
||||
INSTALL_DIR: /__w/openvino/openvino/openvino_install
|
||||
INSTALL_TEST_DIR: /__w/openvino/openvino/tests_install
|
||||
BUILD_DIR: /__w/openvino/openvino/openvino_build
|
||||
SELECTIVE_BUILD_STAT_DIR: /__w/openvino/openvino/selective_build_stat
|
||||
MODELS_PATH: /__w/openvino/openvino/testdata
|
||||
SCCACHE_AZURE_KEY_PREFIX: ubuntu22_x86_64_itt_clang_Release
|
||||
if: "!needs.smart_ci.outputs.skip_workflow"
|
||||
|
||||
steps:
|
||||
- name: Install git
|
||||
@@ -73,7 +86,7 @@ jobs:
|
||||
repository: 'openvinotoolkit/testdata'
|
||||
path: ${{ env.MODELS_PATH }}
|
||||
lfs: 'true'
|
||||
ref: 'releases/2023/2'
|
||||
ref: 'master'
|
||||
|
||||
#
|
||||
# Print system info
|
||||
@@ -100,15 +113,13 @@ jobs:
|
||||
with:
|
||||
version: "v0.5.4"
|
||||
|
||||
- uses: actions/setup-python@v4
|
||||
- name: Setup Python ${{ env.PYTHON_VERSION }}
|
||||
uses: ./openvino/.github/actions/setup_python
|
||||
with:
|
||||
python-version: ${{ env.PYTHON_VERSION }}
|
||||
|
||||
- name: Setup pip cache dir
|
||||
run: |
|
||||
PIP_VER=$(python3 -c "import pip; print(pip.__version__)")
|
||||
echo "Using pip version: ${PIP_VER}"
|
||||
echo "PIP_CACHE_DIR=${PIP_CACHE_PATH}/${PIP_VER}" >> $GITHUB_ENV
|
||||
version: ${{ env.PYTHON_VERSION }}
|
||||
pip-cache-path: ${{ env.PIP_CACHE_PATH }}
|
||||
should-setup-pip-paths: 'true'
|
||||
self-hosted-runner: 'true'
|
||||
|
||||
- name: Install python dependencies
|
||||
run: |
|
||||
@@ -154,7 +165,9 @@ jobs:
|
||||
run: ${SCCACHE_PATH} --show-stats
|
||||
|
||||
- name: Cmake install - OpenVINO
|
||||
run: cmake -DCMAKE_INSTALL_PREFIX=${INSTALL_DIR} -P ${BUILD_DIR}/cmake_install.cmake
|
||||
run: |
|
||||
cmake -DCMAKE_INSTALL_PREFIX=${INSTALL_DIR} -P ${BUILD_DIR}/cmake_install.cmake
|
||||
cmake -DCMAKE_INSTALL_PREFIX=${INSTALL_TEST_DIR} -DCOMPONENT=tests -P ${BUILD_DIR}/cmake_install.cmake
|
||||
|
||||
- name: Build C++ samples - OpenVINO build tree
|
||||
run: |
|
||||
@@ -180,13 +193,26 @@ jobs:
|
||||
tar -czvf ${BUILD_DIR}/openvino_selective_build_stat.tar.gz *
|
||||
popd
|
||||
|
||||
pushd ${OPENVINO_REPO}
|
||||
tar -czvf ${BUILD_DIR}/openvino_tests.tar.gz \
|
||||
bin/intel64/Release/ov_cpu_func_tests \
|
||||
src/tests/test_utils/functional_test_utils/layer_tests_summary/* \
|
||||
scripts/install_dependencies/*
|
||||
pushd ${INSTALL_DIR}
|
||||
tar -czvf ${BUILD_DIR}/openvino_package.tar.gz \
|
||||
install_dependencies/install_openvino_dependencies.sh
|
||||
popd
|
||||
|
||||
pushd ${INSTALL_TEST_DIR}
|
||||
tar -czvf ${BUILD_DIR}/openvino_tests.tar.gz \
|
||||
tests/ov_cpu_func_tests \
|
||||
tests/libtemplate_extension.so \
|
||||
tests/functional_test_utils/layer_tests_summary/*
|
||||
popd
|
||||
|
||||
- name: Upload openvino package
|
||||
if: ${{ always() }}
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: openvino_package
|
||||
path: ${{ env.BUILD_DIR }}/openvino_package.tar.gz
|
||||
if-no-files-found: 'error'
|
||||
|
||||
- name: Upload selective build statistics package
|
||||
if: ${{ always() }}
|
||||
uses: actions/upload-artifact@v3
|
||||
@@ -214,7 +240,7 @@ jobs:
|
||||
container:
|
||||
image: openvinogithubactions.azurecr.io/dockerhub/ubuntu:22.04
|
||||
volumes:
|
||||
- /mount/caches:/mount/caches
|
||||
- /mount:/mount
|
||||
options: -e SCCACHE_AZURE_BLOB_CONTAINER -e SCCACHE_AZURE_CONNECTION_STRING
|
||||
env:
|
||||
DEBIAN_FRONTEND: noninteractive # to prevent apt-get from waiting user input
|
||||
@@ -243,10 +269,10 @@ jobs:
|
||||
repository: 'openvinotoolkit/testdata'
|
||||
path: ${{ env.MODELS_PATH }}
|
||||
lfs: 'true'
|
||||
ref: 'releases/2023/2'
|
||||
ref: 'master'
|
||||
|
||||
- name: Download selective build statistics package
|
||||
uses: actions/download-artifact@v3
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: openvino_selective_build_stat
|
||||
path: ${{ env.SELECTIVE_BUILD_STAT_DIR }}
|
||||
@@ -301,65 +327,23 @@ jobs:
|
||||
|
||||
CPU_Functional_Tests:
|
||||
name: CPU functional tests
|
||||
needs: Build
|
||||
timeout-minutes: 25
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
runs-on: aks-linux-8-cores-16gb
|
||||
container:
|
||||
image: openvinogithubactions.azurecr.io/dockerhub/ubuntu:22.04
|
||||
env:
|
||||
DEBIAN_FRONTEND: noninteractive # to prevent apt-get from waiting user input
|
||||
INSTALL_TEST_DIR: /__w/openvino/openvino/install/tests
|
||||
PARALLEL_TEST_SCRIPT: /__w/openvino/openvino/install/tests/src/tests/test_utils/functional_test_utils/layer_tests_summary/run_parallel.py
|
||||
PARALLEL_TEST_CACHE: /__w/openvino/openvino/install/tests/test_cache.lst
|
||||
if: fromJSON(needs.smart_ci.outputs.affected_components).CPU.test
|
||||
needs: [ Build, Smart_CI ]
|
||||
uses: ./.github/workflows/job_cpu_functional_tests.yml
|
||||
with:
|
||||
runner: 'aks-linux-8-cores-32gb'
|
||||
image: 'openvinogithubactions.azurecr.io/dockerhub/ubuntu:22.04'
|
||||
|
||||
Overall_Status:
|
||||
name: ci/gha_overall_status_linux_cc
|
||||
needs: [Smart_CI, Build, CC_Build, CPU_Functional_Tests]
|
||||
if: ${{ always() }}
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Download OpenVINO tests package
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: openvino_tests
|
||||
path: ${{ env.INSTALL_TEST_DIR }}
|
||||
|
||||
- name: Extract OpenVINO tests package
|
||||
run: tar -xvzf ${INSTALL_TEST_DIR}/openvino_tests.tar.gz -C ${INSTALL_TEST_DIR}
|
||||
|
||||
- name: Install OpenVINO dependencies
|
||||
run: bash ${INSTALL_TEST_DIR}/scripts/install_dependencies/install_openvino_dependencies.sh -c=core -c=gpu -y
|
||||
|
||||
- name: Install 'actions/setup-python@v4' dependencies
|
||||
run: apt-get install -y libssl3
|
||||
|
||||
- uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: ${{ env.PYTHON_VERSION }}
|
||||
|
||||
- name: Install python dependencies for run_parallel.py
|
||||
run: python3 -m pip install -r ${INSTALL_TEST_DIR}/src/tests/test_utils/functional_test_utils/layer_tests_summary/requirements.txt
|
||||
|
||||
- name: Restore tests execution time
|
||||
uses: actions/cache/restore@v3
|
||||
with:
|
||||
path: ${{ env.PARALLEL_TEST_CACHE }}
|
||||
key: ${{ runner.os }}-tests-functional-cpu-stamp-${{ github.sha }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-tests-functional-cpu-stamp
|
||||
|
||||
- name: Intel CPU plugin func tests (parallel)
|
||||
run: python3 ${PARALLEL_TEST_SCRIPT} -e ${INSTALL_TEST_DIR}/bin/intel64/Release/ov_cpu_func_tests -c ${PARALLEL_TEST_CACHE} -w ${INSTALL_TEST_DIR} -s suite -rf 0 -- --gtest_print_time=1 --gtest_filter=*smoke*
|
||||
timeout-minutes: 20
|
||||
|
||||
- name: Upload Test Results
|
||||
uses: actions/upload-artifact@v3
|
||||
if: ${{ !cancelled() }}
|
||||
with:
|
||||
name: test-results-functional-cpu
|
||||
path: |
|
||||
${{ env.INSTALL_TEST_DIR }}/TEST*.xml
|
||||
${{ env.INSTALL_TEST_DIR }}/logs/failed/*.log
|
||||
${{ env.INSTALL_TEST_DIR }}/logs/crashed/*.log
|
||||
${{ env.INSTALL_TEST_DIR }}/logs/hanged/*.log
|
||||
${{ env.INSTALL_TEST_DIR }}/logs/interapted/*.log
|
||||
${{ env.INSTALL_TEST_DIR }}/logs/disabled_tests.log
|
||||
if-no-files-found: 'error'
|
||||
- name: Check status of all jobs
|
||||
if: >-
|
||||
${{
|
||||
contains(needs.*.result, 'failure') ||
|
||||
contains(needs.*.result, 'cancelled')
|
||||
}}
|
||||
run: exit 1
|
||||
|
||||
61
.github/workflows/linux_riscv.yml
vendored
61
.github/workflows/linux_riscv.yml
vendored
@@ -5,21 +5,7 @@ on:
|
||||
- cron: '0 0 * * 3,6'
|
||||
workflow_dispatch:
|
||||
pull_request:
|
||||
paths-ignore:
|
||||
- '**/docs/**'
|
||||
- 'docs/**'
|
||||
- '**/**.md'
|
||||
- '**.md'
|
||||
- '**/layer_tests_summary/**'
|
||||
- '**/conformance/**'
|
||||
push:
|
||||
paths-ignore:
|
||||
- '**/docs/**'
|
||||
- 'docs/**'
|
||||
- '**/**.md'
|
||||
- '**.md'
|
||||
- '**/layer_tests_summary/**'
|
||||
- '**/conformance/**'
|
||||
branches:
|
||||
- master
|
||||
- 'releases/**'
|
||||
@@ -30,8 +16,32 @@ concurrency:
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
Smart_CI:
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
affected_components: "${{ steps.smart_ci.outputs.affected_components }}"
|
||||
skip_workflow: "${{ steps.smart_ci.outputs.skip_workflow }}"
|
||||
steps:
|
||||
- name: checkout action
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
sparse-checkout: .github/actions/smart-ci
|
||||
|
||||
- name: Get affected components
|
||||
id: smart_ci
|
||||
uses: ./.github/actions/smart-ci
|
||||
with:
|
||||
repository: ${{ github.repository }}
|
||||
pr: ${{ github.event.number }}
|
||||
commit_sha: ${{ github.sha }}
|
||||
component_pattern: "category: (.*)"
|
||||
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
skip_when_only_listed_labels_set: 'docs'
|
||||
skip_when_only_listed_files_changed: '*.md,*.rst,*.png,*.jpg,*.svg,*/layer_tests_summary/*,*/conformance/*'
|
||||
|
||||
Build:
|
||||
timeout-minutes: 30
|
||||
needs: Smart_CI
|
||||
timeout-minutes: 150
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
@@ -39,7 +49,7 @@ jobs:
|
||||
container:
|
||||
image: openvinogithubactions.azurecr.io/dockerhub/ubuntu:22.04
|
||||
volumes:
|
||||
- /mount/caches:/mount/caches
|
||||
- /mount:/mount
|
||||
env:
|
||||
CMAKE_BUILD_TYPE: 'Release'
|
||||
CMAKE_GENERATOR: 'Ninja'
|
||||
@@ -48,10 +58,11 @@ jobs:
|
||||
OPENVINO_REPO: /__w/openvino/openvino/openvino
|
||||
OPENVINO_BUILD_DIR: /__w/openvino/openvino/openvino_build
|
||||
INSTALL_DIR: /__w/openvino/openvino/openvino_install
|
||||
CONAN_USER_HOME: /mount/caches/ccache/ubuntu22_riscv64_Release/.conan
|
||||
CCACHE_DIR: /mount/caches/ccache/ubuntu22_riscv64_Release
|
||||
CONAN_USER_HOME: /mount/caches/ccache/ubuntu22_riscv64_master_release/.conan
|
||||
CCACHE_DIR: /mount/caches/ccache/ubuntu22_riscv64_master_release
|
||||
CCACHE_TEMPDIR: /__w/openvino/openvino/ccache_temp
|
||||
CCACHE_MAXSIZE: 50G
|
||||
if: "!needs.smart_ci.outputs.skip_workflow"
|
||||
steps:
|
||||
- name: Install git
|
||||
run: apt-get update && apt-get install --assume-yes --no-install-recommends git ca-certificates
|
||||
@@ -195,3 +206,17 @@ jobs:
|
||||
source ${OPENVINO_BUILD_DIR}/dependencies/deactivate_conanbuild.sh
|
||||
env:
|
||||
CMAKE_TOOLCHAIN_FILE: ${{ env.OPENVINO_BUILD_DIR }}/dependencies/conan_toolchain.cmake
|
||||
|
||||
Overall_Status:
|
||||
name: ci/gha_overall_status_linux_riscv
|
||||
needs: [Smart_CI, Build]
|
||||
if: ${{ always() }}
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Check status of all jobs
|
||||
if: >-
|
||||
${{
|
||||
contains(needs.*.result, 'failure') ||
|
||||
contains(needs.*.result, 'cancelled')
|
||||
}}
|
||||
run: exit 1
|
||||
|
||||
687
.github/workflows/mac.yml
vendored
687
.github/workflows/mac.yml
vendored
@@ -33,27 +33,41 @@ env:
|
||||
PYTHON_VERSION: '3.11'
|
||||
|
||||
jobs:
|
||||
|
||||
Smart_CI:
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
affected_components: "${{ steps.smart_ci.outputs.affected_components }}"
|
||||
skip_workflow: "${{ steps.smart_ci.outputs.skip_workflow }}"
|
||||
steps:
|
||||
- name: checkout action
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
sparse-checkout: .github/actions/smart-ci
|
||||
|
||||
- name: Get affected components
|
||||
id: smart_ci
|
||||
uses: ./.github/actions/smart-ci
|
||||
with:
|
||||
repository: ${{ github.repository }}
|
||||
pr: ${{ github.event.number }}
|
||||
commit_sha: ${{ github.sha }}
|
||||
component_pattern: "category: (.*)"
|
||||
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
skip_when_only_listed_labels_set: 'docs'
|
||||
skip_when_only_listed_files_changed: '*.md,*.rst,*.png,*.jpg,*.svg'
|
||||
|
||||
Build:
|
||||
needs: Smart_CI
|
||||
timeout-minutes: 150
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
strategy:
|
||||
max-parallel: 2
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- arhitecture: 'x86_64'
|
||||
machine: 'macos-13-large'
|
||||
macos_deployment_target: '10.12'
|
||||
- arhitecture: 'arm64'
|
||||
machine: 'macos-13-xlarge'
|
||||
macos_deployment_target: '11.0'
|
||||
runs-on: ${{ matrix.machine }}
|
||||
runs-on: 'macos-13-large'
|
||||
env:
|
||||
CMAKE_BUILD_TYPE: 'Release'
|
||||
CMAKE_GENERATOR: 'Ninja Multi-Config'
|
||||
MACOSX_DEPLOYMENT_TARGET: ${{ matrix.macos_deployment_target }}
|
||||
MACOSX_DEPLOYMENT_TARGET: '10.12'
|
||||
CMAKE_CXX_COMPILER_LAUNCHER: ccache
|
||||
CMAKE_C_COMPILER_LAUNCHER: ccache
|
||||
OPENVINO_REPO: ${{ github.workspace }}/openvino
|
||||
@@ -88,9 +102,12 @@ jobs:
|
||||
- name: Install build dependencies
|
||||
run: brew install coreutils ninja scons
|
||||
|
||||
- uses: actions/setup-python@v4
|
||||
- name: Setup Python ${{ env.PYTHON_VERSION }}
|
||||
uses: ./openvino/.github/actions/setup_python
|
||||
with:
|
||||
python-version: ${{ env.PYTHON_VERSION }}
|
||||
version: ${{ env.PYTHON_VERSION }}
|
||||
should-setup-pip-paths: 'false'
|
||||
self-hosted-runner: 'false'
|
||||
|
||||
- name: Install python dependencies
|
||||
run: |
|
||||
@@ -122,9 +139,9 @@ jobs:
|
||||
# github.ref_name is 'ref/PR_#' in case of the PR, and 'branch_name' when executed on push
|
||||
save: ${{ github.ref_name == 'master' && 'true' || 'false' }}
|
||||
verbose: 2
|
||||
key: ${{ runner.os }}-${{ matrix.arhitecture }}-main
|
||||
key: ${{ runner.os }}-${{ runner.arch }}-main
|
||||
restore-keys: |
|
||||
${{ runner.os }}-${{ matrix.arhitecture }}-main
|
||||
${{ runner.os }}-${{ runner.arch }}-main
|
||||
|
||||
- name: CMake configure
|
||||
run: |
|
||||
@@ -181,7 +198,7 @@ jobs:
|
||||
if: ${{ always() }}
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: openvino_package_${{ matrix.arhitecture }}
|
||||
name: openvino_package
|
||||
path: ${{ env.BUILD_DIR }}/openvino_package.tar.gz
|
||||
if-no-files-found: 'error'
|
||||
|
||||
@@ -189,625 +206,39 @@ jobs:
|
||||
if: ${{ always() }}
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: openvino_tests_${{ matrix.arhitecture }}
|
||||
name: openvino_tests
|
||||
path: ${{ env.BUILD_DIR }}/openvino_tests.tar.gz
|
||||
if-no-files-found: 'error'
|
||||
|
||||
Samples:
|
||||
needs: Build
|
||||
timeout-minutes: 5
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
strategy:
|
||||
max-parallel: 2
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- arhitecture: 'x86_64'
|
||||
machine: 'macos-13'
|
||||
- arhitecture: 'arm64'
|
||||
machine: 'macos-13-xlarge'
|
||||
runs-on: ${{ matrix.machine }}
|
||||
env:
|
||||
INSTALL_DIR: ${{ github.workspace }}/install
|
||||
INSTALL_TEST_DIR: ${{ github.workspace }}/install/tests
|
||||
BUILD_DIR: ${{ github.workspace }}/build
|
||||
|
||||
steps:
|
||||
#
|
||||
# Initialize OpenVINO
|
||||
#
|
||||
|
||||
- name: Download OpenVINO package
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: openvino_package_${{ matrix.arhitecture }}
|
||||
path: ${{ env.INSTALL_DIR }}
|
||||
|
||||
- name: Download OpenVINO tests package
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: openvino_tests_${{ matrix.arhitecture }}
|
||||
path: ${{ env.INSTALL_TEST_DIR }}
|
||||
|
||||
- name: Extract OpenVINO packages
|
||||
run: |
|
||||
pushd ${INSTALL_DIR}
|
||||
tar -xzf openvino_package.tar.gz -C ${INSTALL_DIR}
|
||||
popd
|
||||
|
||||
pushd ${INSTALL_TEST_DIR}
|
||||
tar -xzf openvino_tests.tar.gz -C ${INSTALL_DIR}
|
||||
popd
|
||||
|
||||
- name: Install dependencies
|
||||
run: brew install coreutils
|
||||
|
||||
- uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: ${{ env.PYTHON_VERSION }}
|
||||
|
||||
- name: Build cpp samples
|
||||
run: ${INSTALL_DIR}/samples/cpp/build_samples.sh -i ${INSTALL_DIR} -b ${BUILD_DIR}/cpp_samples
|
||||
env:
|
||||
CMAKE_COMPILE_WARNING_AS_ERROR: 'ON'
|
||||
|
||||
- name: Build c samples
|
||||
run: ${INSTALL_DIR}/samples/c/build_samples.sh -i ${INSTALL_DIR} -b ${BUILD_DIR}/c_samples
|
||||
env:
|
||||
CMAKE_COMPILE_WARNING_AS_ERROR: 'ON'
|
||||
|
||||
#
|
||||
# Tests
|
||||
#
|
||||
|
||||
- name: Samples tests
|
||||
run: |
|
||||
export WORKSPACE=${INSTALL_DIR}
|
||||
export IE_APP_PATH=${INSTALL_DIR}/samples_bin
|
||||
export IE_APP_PYTHON_PATH=${INSTALL_DIR}/samples/python
|
||||
export SHARE=${INSTALL_TEST_DIR}/smoke_tests/samples_smoke_tests_data
|
||||
|
||||
python3 -m pip install --ignore-installed PyYAML -r ${INSTALL_TEST_DIR}/smoke_tests/requirements.txt
|
||||
|
||||
source ${INSTALL_DIR}/setupvars.sh
|
||||
|
||||
python3 -m pytest -sv ${INSTALL_TEST_DIR}/smoke_tests \
|
||||
--env_conf ${INSTALL_TEST_DIR}/smoke_tests/env_config.yml \
|
||||
--junitxml=${INSTALL_TEST_DIR}/TEST-SamplesSmokeTests.xml
|
||||
|
||||
- name: Upload Test Results
|
||||
uses: actions/upload-artifact@v3
|
||||
if: ${{ !cancelled() }}
|
||||
with:
|
||||
name: test-results-samples-${{ matrix.arhitecture }}
|
||||
path: ${{ env.INSTALL_TEST_DIR }}/TEST*.xml
|
||||
if-no-files-found: 'error'
|
||||
needs: [ Build, Smart_CI ]
|
||||
if: fromJSON(needs.smart_ci.outputs.affected_components).samples
|
||||
uses: ./.github/workflows/job_samples_tests.yml
|
||||
with:
|
||||
runner: 'macos-13'
|
||||
affected-components: ${{ needs.smart_ci.outputs.affected_components }}
|
||||
|
||||
CXX_Unit_Tests:
|
||||
name: C++ Unit tests
|
||||
needs: Build
|
||||
timeout-minutes: 20
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
strategy:
|
||||
max-parallel: 2
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- arhitecture: 'x86_64'
|
||||
machine: 'macos-13'
|
||||
- arhitecture: 'arm64'
|
||||
machine: 'macos-13-xlarge'
|
||||
runs-on: ${{ matrix.machine }}
|
||||
env:
|
||||
INSTALL_DIR: ${{ github.workspace }}/install
|
||||
INSTALL_TEST_DIR: ${{ github.workspace }}/install/tests
|
||||
|
||||
steps:
|
||||
#
|
||||
# Dependencies
|
||||
#
|
||||
|
||||
- name: Download OpenVINO package
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: openvino_package_${{ matrix.arhitecture }}
|
||||
path: ${{ env.INSTALL_DIR }}
|
||||
|
||||
- name: Download OpenVINO tests package
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: openvino_tests_${{ matrix.arhitecture }}
|
||||
path: ${{ env.INSTALL_TEST_DIR }}
|
||||
|
||||
- name: Extract OpenVINO packages
|
||||
run: |
|
||||
pushd ${{ env.INSTALL_DIR }}
|
||||
tar -xzf openvino_package.tar.gz -C ${{ env.INSTALL_DIR }} && rm openvino_package.tar.gz || exit 1
|
||||
popd
|
||||
pushd ${{ env.INSTALL_TEST_DIR }}
|
||||
tar -xzf openvino_tests.tar.gz -C ${{ env.INSTALL_DIR }} && rm openvino_tests.tar.gz || exit 1
|
||||
popd
|
||||
|
||||
#
|
||||
# Tests
|
||||
#
|
||||
|
||||
- name: OpenVINO Core Unit Tests
|
||||
run: |
|
||||
source ${{ env.INSTALL_DIR }}/setupvars.sh
|
||||
${{ env.INSTALL_TEST_DIR }}/ov_core_unit_tests --gtest_print_time=1 --gtest_filter=-*IE_GPU* \
|
||||
--gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-NGraphUT.xml
|
||||
|
||||
- name: OpenVINO Inference Functional Tests
|
||||
run: |
|
||||
source ${{ env.INSTALL_DIR }}/setupvars.sh
|
||||
${{ env.INSTALL_TEST_DIR }}/ov_inference_functional_tests --gtest_print_time=1 \
|
||||
--gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-InferenceFunc.xml
|
||||
|
||||
- name: OpenVINO Inference Unit Tests
|
||||
run: |
|
||||
source ${{ env.INSTALL_DIR }}/setupvars.sh
|
||||
${{ env.INSTALL_TEST_DIR }}/ov_inference_unit_tests --gtest_print_time=1 \
|
||||
--gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-InferenceUnit.xml
|
||||
|
||||
- name: Low Precision Transformations Tests
|
||||
run: |
|
||||
source ${{ env.INSTALL_DIR }}/setupvars.sh
|
||||
|
||||
# Skips under Ticket: 122660
|
||||
skip_filter=${{ matrix.arhitecture == 'arm64' && '--gtest_filter=-*smoke_LPT/FoldFakeQuantizeInTransformations.CompareFunctions*' || '' }}
|
||||
|
||||
${{ env.INSTALL_TEST_DIR }}/ov_lp_transformations_tests --gtest_print_time=1 "$skip_filter" \
|
||||
--gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-LpTransformations.xml
|
||||
|
||||
- name: OpenVINO Conditional compilation tests
|
||||
run: |
|
||||
source ${{ env.INSTALL_DIR }}/setupvars.sh
|
||||
${{ env.INSTALL_TEST_DIR }}/ov_conditional_compilation_tests --gtest_print_time=1 \
|
||||
--gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-ConditionalCompilation.xml
|
||||
|
||||
- name: IR frontend tests
|
||||
run: |
|
||||
source ${{ env.INSTALL_DIR }}/setupvars.sh
|
||||
${{ env.INSTALL_TEST_DIR }}/ov_ir_frontend_tests --gtest_print_time=1 \
|
||||
--gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-IRFrontend.xml
|
||||
|
||||
- name: PaddlePaddle frontend tests
|
||||
if: ${{ 'false' }}
|
||||
run: |
|
||||
source ${{ env.INSTALL_DIR }}/setupvars.sh
|
||||
${{ env.INSTALL_TEST_DIR }}/paddle_tests --gtest_print_time=1 --gtest_filter=*smoke* \
|
||||
--gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-PaddleTests.xml
|
||||
|
||||
- name: ONNX frontend tests
|
||||
if: ${{ matrix.arhitecture == 'x86_64' }} # Ticket for ARM64: 122663
|
||||
run: |
|
||||
source ${{ env.INSTALL_DIR }}/setupvars.sh
|
||||
|
||||
${{ env.INSTALL_TEST_DIR }}/ov_onnx_frontend_tests --gtest_print_time=1 --gtest_filter=-*IE_GPU* \
|
||||
--gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-ONNXFrontend.xml
|
||||
|
||||
- name: TensorFlow Common tests
|
||||
run: |
|
||||
source ${{ env.INSTALL_DIR }}/setupvars.sh
|
||||
${{ env.INSTALL_TEST_DIR }}/ov_tensorflow_common_tests --gtest_print_time=1 \
|
||||
--gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-TensorFlowCommonFrontend.xml
|
||||
|
||||
- name: TensorFlow frontend tests
|
||||
run: |
|
||||
source ${{ env.INSTALL_DIR }}/setupvars.sh
|
||||
|
||||
# Skips under Ticket: 122666
|
||||
skip_filter=${{ matrix.arhitecture == 'arm64' && '--gtest_filter=-*CompileModelsTests.ModelWithSplitConvConcat*:*NgramCompilation*' || '' }}
|
||||
|
||||
${{ env.INSTALL_TEST_DIR }}/ov_tensorflow_frontend_tests --gtest_print_time=1 "$skip_filter" \
|
||||
--gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-TensorFlowFrontend.xml
|
||||
|
||||
- name: TensorFlow Lite frontend tests
|
||||
run: |
|
||||
source ${{ env.INSTALL_DIR }}/setupvars.sh
|
||||
${{ env.INSTALL_TEST_DIR }}/ov_tensorflow_lite_frontend_tests --gtest_print_time=1 \
|
||||
--gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-TensorFlowLiteFrontend.xml
|
||||
|
||||
- name: Transformations func tests
|
||||
run: |
|
||||
source ${{ env.INSTALL_DIR }}/setupvars.sh
|
||||
|
||||
# Skips under Ticket: 122668
|
||||
skip_filter=${{ matrix.arhitecture == 'arm64' && '--gtest_filter=-*TransformationTestsF.CompressQuantizeWeights*:*TransformationTests/CompressQuantizeWeightsTests.FusionTest*' || '' }}
|
||||
|
||||
${{ env.INSTALL_TEST_DIR }}/ov_transformations_tests --gtest_print_time=1 "$skip_filter" \
|
||||
--gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-Transformations.xml
|
||||
|
||||
- name: Common test utils tests
|
||||
run: |
|
||||
source ${{ env.INSTALL_DIR }}/setupvars.sh
|
||||
${{ env.INSTALL_TEST_DIR }}/ov_util_tests --gtest_print_time=1 \
|
||||
--gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-commonUtilsTests.xml
|
||||
|
||||
- name: Snippets func tests
|
||||
run: |
|
||||
source ${{ env.INSTALL_DIR }}/setupvars.sh
|
||||
${{ env.INSTALL_TEST_DIR }}/ov_snippets_func_tests --gtest_print_time=1 \
|
||||
--gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-SnippetsFuncTests.xml
|
||||
|
||||
- name: CPU plugin unit tests
|
||||
run: |
|
||||
source ${{ env.INSTALL_DIR }}/setupvars.sh
|
||||
${{ env.INSTALL_TEST_DIR }}/ov_cpu_unit_tests --gtest_print_time=1 \
|
||||
--gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-CPUUnitTests.xml
|
||||
|
||||
- name: SubgraphsDumper tests
|
||||
run: |
|
||||
source ${{ env.INSTALL_DIR }}/setupvars.sh
|
||||
${{ env.INSTALL_TEST_DIR }}/subgraphsDumperTests --gtest_print_time=1 \
|
||||
--gtest_output=xml:${INSTALL_TEST_DIR}/TEST-SubgraphsDumperTests.xml
|
||||
|
||||
- name: Template OpImpl tests
|
||||
run: |
|
||||
source ${{ env.INSTALL_DIR }}/setupvars.sh
|
||||
${{ env.INSTALL_TEST_DIR }}/conformanceTests --gtest_print_time=1 --device=TEMPLATE --gtest_filter="*OpImpl*" \
|
||||
--gtest_output=xml:${INSTALL_TEST_DIR}/TEST-TemplateOpImplTests.xml
|
||||
|
||||
- name: AUTO unit tests
|
||||
run: |
|
||||
source ${{ env.INSTALL_DIR }}/setupvars.sh
|
||||
${{ env.INSTALL_TEST_DIR }}/ov_auto_unit_tests --gtest_print_time=1 \
|
||||
--gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-ov_auto_unit_tests.xml
|
||||
|
||||
- name: AUTO func Tests
|
||||
run: |
|
||||
source ${{ env.INSTALL_DIR }}/setupvars.sh
|
||||
${{ env.INSTALL_TEST_DIR }}/ov_auto_func_tests --gtest_print_time=1 \
|
||||
--gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-ov_auto_func_tests.xml
|
||||
|
||||
- name: Template plugin func tests
|
||||
run: |
|
||||
source ${{ env.INSTALL_DIR }}/setupvars.sh
|
||||
${{ env.INSTALL_TEST_DIR }}/ov_template_func_tests --gtest_print_time=1 \
|
||||
--gtest_filter=*smoke* \
|
||||
--gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-TemplateFuncTests.xml
|
||||
|
||||
- name: Inference Engine C API tests
|
||||
run: |
|
||||
source ${{ env.INSTALL_DIR }}/setupvars.sh
|
||||
${{ env.INSTALL_TEST_DIR }}/InferenceEngineCAPITests --gtest_print_time=1 \
|
||||
--gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-InferenceEngineCAPITests.xml
|
||||
|
||||
- name: OpenVINO C API tests
|
||||
run: |
|
||||
source ${{ env.INSTALL_DIR }}/setupvars.sh
|
||||
${{ env.INSTALL_TEST_DIR }}/ov_capi_test --gtest_print_time=1 \
|
||||
--gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-OpenVINOCAPITests.xml
|
||||
|
||||
- name: AutoBatch unit tests
|
||||
run: |
|
||||
source ${{ env.INSTALL_DIR }}/setupvars.sh
|
||||
${{ env.INSTALL_TEST_DIR }}/ov_auto_batch_unit_tests --gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-ov_auto_batch_unit_tests.xml
|
||||
|
||||
- name: AutoBatch func tests
|
||||
run: |
|
||||
source ${{ env.INSTALL_DIR }}/setupvars.sh
|
||||
${{ env.INSTALL_TEST_DIR }}/ov_auto_batch_func_tests --gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-ov_auto_batch_func_tests.xml
|
||||
|
||||
- name: Proxy Plugin func tests
|
||||
run: |
|
||||
source ${{ env.INSTALL_DIR }}/setupvars.sh
|
||||
${{ env.INSTALL_TEST_DIR }}/ov_proxy_plugin_tests --gtest_print_time=1 --gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-OVProxyTests.xml
|
||||
|
||||
- name: Hetero unit tests
|
||||
run: |
|
||||
source ${{ env.INSTALL_DIR }}/setupvars.sh
|
||||
${{ env.INSTALL_TEST_DIR }}/ov_hetero_unit_tests --gtest_print_time=1 --gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-OVHeteroUnitTests.xml
|
||||
|
||||
- name: Hetero func tests
|
||||
run: |
|
||||
source ${{ env.INSTALL_DIR }}/setupvars.sh
|
||||
${{ env.INSTALL_TEST_DIR }}/ov_hetero_func_tests --gtest_print_time=1 --gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-OVHeteroFuncTests.xml
|
||||
|
||||
- name: Upload Test Results
|
||||
uses: actions/upload-artifact@v3
|
||||
if: ${{ always() }}
|
||||
with:
|
||||
name: test-results-cpp-${{ matrix.arhitecture }}
|
||||
path: ${{ env.INSTALL_TEST_DIR }}/TEST*.xml
|
||||
if-no-files-found: 'error'
|
||||
name: C++ unit tests
|
||||
needs: [ Build, Smart_CI ]
|
||||
uses: ./.github/workflows/job_cxx_unit_tests.yml
|
||||
with:
|
||||
runner: 'macos-13'
|
||||
affected-components: ${{ needs.smart_ci.outputs.affected_components }}
|
||||
|
||||
Python_Unit_Tests:
|
||||
name: Python unit tests
|
||||
needs: Build
|
||||
timeout-minutes: 55
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
strategy:
|
||||
max-parallel: 2
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- arhitecture: 'x86_64'
|
||||
machine: 'macos-13'
|
||||
- arhitecture: 'arm64'
|
||||
machine: 'macos-13-xlarge'
|
||||
runs-on: ${{ matrix.machine }}
|
||||
env:
|
||||
OPENVINO_REPO: ${{ github.workspace }}/openvino
|
||||
OPENVINO_CONTRIB_REPO: ${{ github.workspace }}/openvino_contrib
|
||||
INSTALL_DIR: ${{ github.workspace }}/install
|
||||
INSTALL_TEST_DIR: ${{ github.workspace }}/install/tests
|
||||
LAYER_TESTS_INSTALL_DIR: ${{ github.workspace }}/install/tests/layer_tests
|
||||
steps:
|
||||
- name: Clone OpenVINO
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
path: 'openvino'
|
||||
submodules: 'true'
|
||||
|
||||
#
|
||||
# Dependencies
|
||||
#
|
||||
|
||||
- uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: ${{ env.PYTHON_VERSION }}
|
||||
|
||||
- name: Download OpenVINO package
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: openvino_package_${{ matrix.arhitecture }}
|
||||
path: ${{ env.INSTALL_DIR }}
|
||||
|
||||
- name: Download OpenVINO tests package
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: openvino_tests_${{ matrix.arhitecture }}
|
||||
path: ${{ env.INSTALL_TEST_DIR }}
|
||||
|
||||
- name: Extract OpenVINO packages
|
||||
run: |
|
||||
pushd ${{ env.INSTALL_DIR }}
|
||||
tar -xzf openvino_package.tar.gz -C ${{ env.INSTALL_DIR }}
|
||||
popd
|
||||
|
||||
pushd ${{ env.INSTALL_TEST_DIR }}
|
||||
tar -xzf openvino_tests.tar.gz -C ${{ env.INSTALL_DIR }}
|
||||
popd
|
||||
|
||||
- name: Install Python API tests dependencies
|
||||
run: |
|
||||
# For torchvision to OpenVINO preprocessing converter
|
||||
python3 -m pip install -r ${{ env.OPENVINO_REPO }}/src/bindings/python/src/openvino/preprocess/torchvision/requirements.txt
|
||||
|
||||
# TODO: replace with Python API tests requirements
|
||||
python3 -m pip install -r ${{ env.OPENVINO_REPO }}/tools/mo/requirements_dev.txt
|
||||
|
||||
- name: Install OpenVINO Python wheels
|
||||
run: |
|
||||
# Install the core OV wheel
|
||||
python3 -m pip install ${{ env.INSTALL_DIR }}/tools/openvino-*.whl
|
||||
|
||||
# mxnet is only available on x86_64
|
||||
extras_to_install="caffe,kaldi,onnx,tensorflow2,pytorch"
|
||||
if [[ "${{ matrix.arhitecture }}" == "x86_64" ]]; then
|
||||
extras_to_install="mxnet,$extras_to_install"
|
||||
fi
|
||||
|
||||
# Find and install OV dev wheel
|
||||
pushd ${{ env.INSTALL_DIR }}/tools
|
||||
ov_dev_wheel_name=$(find . -name 'openvino_dev*.whl')
|
||||
python3 -m pip install $ov_dev_wheel_name[$extras_to_install]
|
||||
popd
|
||||
|
||||
- name: Python API 1.0 Tests
|
||||
run: |
|
||||
python3 -m pytest -s ${{ env.INSTALL_TEST_DIR }}/pyngraph \
|
||||
--junitxml=${{ env.INSTALL_TEST_DIR }}/TEST-Pyngraph.xml \
|
||||
--ignore=${{ env.INSTALL_TEST_DIR }}/pyngraph/tests_compatibility/test_onnx/test_zoo_models.py \
|
||||
--ignore=${{ env.INSTALL_TEST_DIR }}/pyngraph/tests_compatibility/test_onnx/test_backend.py
|
||||
|
||||
- name: Python API 2.0 Tests
|
||||
run: |
|
||||
# For python imports to import pybind_mock_frontend
|
||||
export PYTHONPATH=${{ env.INSTALL_TEST_DIR }}:$PYTHONPATH
|
||||
# for 'template' extension
|
||||
export DYLD_LIBRARY_PATH=${{ env.INSTALL_TEST_DIR }}:$DYLD_LIBRARY_PATH
|
||||
|
||||
python3 -m pytest -sv ${{ env.INSTALL_TEST_DIR }}/pyopenvino \
|
||||
--junitxml=${{ env.INSTALL_TEST_DIR }}/TEST-Pyngraph.xml \
|
||||
--ignore=${{ env.INSTALL_TEST_DIR }}/pyopenvino/tests/test_utils/test_utils.py
|
||||
|
||||
- name: MO Python API Tests
|
||||
run: |
|
||||
python3 -m pip install -r ${{ env.LAYER_TESTS_INSTALL_DIR }}/requirements.txt
|
||||
export PYTHONPATH=${{ env.LAYER_TESTS_INSTALL_DIR }}:$PYTHONPATH
|
||||
# TODO: remove setupvars.sh from here; currently, it's used for 'test_utils' installed in '<package>/python/openvino'
|
||||
source ${INSTALL_DIR}/setupvars.sh
|
||||
|
||||
python3 -m pytest ${{ env.LAYER_TESTS_INSTALL_DIR }}/mo_python_api_tests/ --junitxml=${{ env.INSTALL_TEST_DIR }}/TEST-test_mo_convert.xml
|
||||
env:
|
||||
TEST_DEVICE: CPU
|
||||
TEST_PRECISION: FP16
|
||||
|
||||
- name: OVC Python API Tests
|
||||
run: |
|
||||
python3 -m pip install -r ${{ env.LAYER_TESTS_INSTALL_DIR }}/requirements.txt
|
||||
# TODO: remove setupvars.sh from here; currently, it's used for 'test_utils' installed in '<package>/python/openvino'
|
||||
source ${{ env.INSTALL_DIR }}/setupvars.sh
|
||||
|
||||
python3 -m pytest ${{ env.LAYER_TESTS_INSTALL_DIR }}/ovc_python_api_tests --junitxml=${{ env.INSTALL_TEST_DIR }}/TEST-test_ovc_convert.xml
|
||||
env:
|
||||
TEST_DEVICE: CPU
|
||||
TEST_PRECISION: FP16
|
||||
|
||||
- name: Model Optimizer unit tests
|
||||
run: |
|
||||
export PYTHONPATH=${{ env.INSTALL_TEST_DIR }}:$PYTHONPATH
|
||||
python3 -m pytest -s ${{ env.INSTALL_TEST_DIR }}/mo/unit_tests \
|
||||
--ignore=${{ env.INSTALL_TEST_DIR }}/mo/unit_tests/mo/front/mxnet \
|
||||
--junitxml=${{ env.INSTALL_TEST_DIR }}/TEST-ModelOptimizer.xml
|
||||
|
||||
- name: PyTorch Layer Tests
|
||||
run: |
|
||||
python3 -m pip install -r ${{ env.LAYER_TESTS_INSTALL_DIR }}/requirements.txt
|
||||
export PYTHONPATH=${{ env.LAYER_TESTS_INSTALL_DIR }}:$PYTHONPATH
|
||||
|
||||
python3 -m pytest ${{ env.LAYER_TESTS_INSTALL_DIR }}/pytorch_tests -m precommit --junitxml=${{ env.INSTALL_TEST_DIR }}/TEST-pytorch.xml
|
||||
env:
|
||||
TEST_DEVICE: CPU
|
||||
TEST_PRECISION: FP16
|
||||
|
||||
- name: ONNX Layer Tests
|
||||
run: |
|
||||
python3 -m pip install -r ${{ env.LAYER_TESTS_INSTALL_DIR }}/requirements.txt
|
||||
|
||||
export PYTHONPATH=${{ env.OPENVINO_REPO }}/tools/mo/:${{ env.LAYER_TESTS_INSTALL_DIR }}:$PYTHONPATH
|
||||
|
||||
python3 -m pytest ${{ env.LAYER_TESTS_INSTALL_DIR }}/onnx_tests -m "not launch_only_if_manually_specified and precommit" --junitxml=${{ env.INSTALL_TEST_DIR }}/TEST-onnx.xml
|
||||
env:
|
||||
TEST_DEVICE: CPU
|
||||
TEST_PRECISION: FP16
|
||||
|
||||
- name: TensorFlow 1 Layer Tests - TF FE
|
||||
run: |
|
||||
python3 -m pip install -r ${{ env.LAYER_TESTS_INSTALL_DIR }}/requirements.txt
|
||||
|
||||
export PYTHONPATH=${{ env.OPENVINO_REPO }}/tools/mo/:${{ env.LAYER_TESTS_INSTALL_DIR }}:$PYTHONPATH
|
||||
|
||||
python3 -m pytest ${{ env.LAYER_TESTS_INSTALL_DIR }}/tensorflow_tests/ --use_new_frontend -m precommit_tf_fe --junitxml=${{ env.INSTALL_TEST_DIR }}/TEST-tf_fe.xml
|
||||
env:
|
||||
TEST_DEVICE: CPU
|
||||
|
||||
- name: TensorFlow 2 Layer Tests - TF FE
|
||||
if: ${{ 'false' }} # Ticket: 123322
|
||||
run: |
|
||||
python3 -m pip install -r ${{ env.LAYER_TESTS_INSTALL_DIR }}/requirements.txt
|
||||
export PYTHONPATH=${{ env.OPENVINO_REPO }}/tools/mo/:${{ env.LAYER_TESTS_INSTALL_DIR }}:$PYTHONPATH
|
||||
|
||||
python3 -m pytest ${{ env.LAYER_TESTS_INSTALL_DIR }}/tensorflow2_keras_tests/ --use_new_frontend -m precommit_tf_fe --junitxml=${{ env.INSTALL_TEST_DIR }}/TEST-tf2_fe.xml
|
||||
env:
|
||||
TEST_DEVICE: CPU
|
||||
|
||||
- name: TensorFlow 1 Layer Tests - Legacy FE
|
||||
run: |
|
||||
python3 -m pip install -r ${{ env.LAYER_TESTS_INSTALL_DIR }}/requirements.txt
|
||||
export PYTHONPATH=${{ env.OPENVINO_REPO }}/tools/mo/:${{ env.LAYER_TESTS_INSTALL_DIR }}:$PYTHONPATH
|
||||
|
||||
python3 -m pytest ${{ env.LAYER_TESTS_INSTALL_DIR }}/tensorflow_tests/test_tf_Roll.py --ir_version=10 --junitxml=${{ env.INSTALL_TEST_DIR }}/TEST-tf_Roll.xml
|
||||
|
||||
- name: TensorFlow 2 Layer Tests - Legacy FE
|
||||
run: |
|
||||
python3 -m pip install -r ${{ env.LAYER_TESTS_INSTALL_DIR }}/requirements.txt
|
||||
export PYTHONPATH=${{ env.OPENVINO_REPO }}/tools/mo/:${{ env.LAYER_TESTS_INSTALL_DIR }}:$PYTHONPATH
|
||||
|
||||
python3 -m pytest ${{ env.LAYER_TESTS_INSTALL_DIR }}/tensorflow2_keras_tests/test_tf2_keras_activation.py \
|
||||
--ir_version=11 --junitxml=${{ env.INSTALL_TEST_DIR }}/TEST-tf2_Activation.xml -k "sigmoid"
|
||||
env:
|
||||
TEST_DEVICE: CPU
|
||||
TEST_PRECISION: FP16
|
||||
|
||||
- name: TensorFlow Lite Layer Tests - TFL FE
|
||||
run: |
|
||||
python3 -m pip install -r ${{ env.LAYER_TESTS_INSTALL_DIR }}/requirements.txt
|
||||
export PYTHONPATH=${{ env.OPENVINO_REPO }}/tools/mo/:${{ env.LAYER_TESTS_INSTALL_DIR }}:$PYTHONPATH
|
||||
|
||||
python3 -m pytest ${{ env.LAYER_TESTS_INSTALL_DIR }}/tensorflow_lite_tests/ --junitxml=${{ env.INSTALL_TEST_DIR }}/TEST-tfl_fe.xml
|
||||
env:
|
||||
TEST_DEVICE: CPU
|
||||
TEST_PRECISION: FP16
|
||||
|
||||
- name: Python ONNX operators tests
|
||||
if: ${{ 'false' }} # Ticket: 123325
|
||||
run: |
|
||||
# Skip test_onnx/test_zoo_models and test_onnx/test_backend due to long execution time - ONNX Model Zoo tests are run separately
|
||||
python3 -m pytest -sv ${{ env.OPENVINO_REPO }}/src/frontends/onnx/tests -k 'not cuda' \
|
||||
--junitxml=${{ env.INSTALL_TEST_DIR }}/TEST-onnx_frontend.xml \
|
||||
--ignore=${{ env.OPENVINO_REPO }}/src/frontends/onnx/tests/test_python/test_zoo_models.py
|
||||
|
||||
- name: Python Frontend tests
|
||||
run: |
|
||||
python3 -m pip install -r ${{ env.LAYER_TESTS_INSTALL_DIR }}/requirements.txt
|
||||
export PYTHONPATH=${{ env.OPENVINO_REPO }}/tools/mo/:${{ env.LAYER_TESTS_INSTALL_DIR }}:$PYTHONPATH
|
||||
# to allow 'libtest_builtin_extensions.so' to find 'libopenvino_onnx_frontend.so'
|
||||
source ${{ env.INSTALL_DIR }}/setupvars.sh
|
||||
|
||||
python3 -m pytest ${{ env.LAYER_TESTS_INSTALL_DIR }}/py_frontend_tests --junitxml=${{ env.INSTALL_TEST_DIR }}/TEST-test_py_fontend.xml
|
||||
|
||||
# TODO: install to 'tests' component via cpack
|
||||
- name: OVC unit tests
|
||||
run: python3 -m pytest -s ${{ env.OPENVINO_REPO }}/tools/ovc/unit_tests --junitxml=${{ env.INSTALL_TEST_DIR }}/TEST-OpenVinoConversion.xml
|
||||
|
||||
- name: Upload Test Results
|
||||
uses: actions/upload-artifact@v3
|
||||
if: ${{ always() }}
|
||||
with:
|
||||
name: test-results-python-${{ matrix.arhitecture }}
|
||||
path: ${{ env.INSTALL_TEST_DIR }}/TEST*.xml
|
||||
if-no-files-found: 'error'
|
||||
needs: [ Build, Smart_CI ]
|
||||
uses: ./.github/workflows/job_python_unit_tests.yml
|
||||
with:
|
||||
runner: 'macos-13'
|
||||
affected-components: ${{ needs.smart_ci.outputs.affected_components }}
|
||||
|
||||
CPU_Functional_Tests:
|
||||
name: CPU functional tests
|
||||
needs: Build
|
||||
timeout-minutes: 25
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
strategy:
|
||||
max-parallel: 2
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
# ticket: 122001
|
||||
# - arhitecture: 'x86_64'
|
||||
# machine: 'macos-13'
|
||||
- arhitecture: 'arm64'
|
||||
machine: 'macos-13-xlarge'
|
||||
runs-on: ${{ matrix.machine }}
|
||||
env:
|
||||
INSTALL_DIR: ${{ github.workspace }}/install
|
||||
INSTALL_TEST_DIR: ${{ github.workspace }}/install/tests
|
||||
|
||||
steps:
|
||||
- name: Create Directories
|
||||
run: mkdir -p ${{ env.INSTALL_DIR }} ${{ env.INSTALL_TEST_DIR }}
|
||||
|
||||
- name: Download OpenVINO package
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: openvino_package_${{ matrix.arhitecture }}
|
||||
path: ${{ env.INSTALL_DIR }}
|
||||
|
||||
- name: Download OpenVINO tests package
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: openvino_tests_${{ matrix.arhitecture }}
|
||||
path: ${{ env.INSTALL_TEST_DIR }}
|
||||
|
||||
- name: Extract OpenVINO packages
|
||||
run: |
|
||||
pushd ${{ env.INSTALL_DIR }}
|
||||
tar -xzf openvino_package.tar.gz -C ${{ env.INSTALL_DIR }} && rm openvino_package.tar.gz
|
||||
popd
|
||||
pushd ${{ env.INSTALL_TEST_DIR }}
|
||||
tar -xzf openvino_tests.tar.gz -C ${{ env.INSTALL_DIR }} && rm openvino_tests.tar.gz
|
||||
popd
|
||||
|
||||
- name: CPU plugin func tests
|
||||
run: |
|
||||
source ${{ env.INSTALL_DIR }}/setupvars.sh
|
||||
|
||||
# Skips under Ticket: 122769
|
||||
skip_filter=${{ matrix.arhitecture == 'arm64' && '--gtest_filter=-*smoke_nonzero/NonZeroLayerTest.Inference/IS*:*smoke_NormalizeL2_*:*Extension.XmlModelWithExtensionFromDSO*:*Extension.OnnxModelWithExtensionFromDSO*:*ONNXQuantizedModels/QuantizedModelsTests.MaxPool*:*ONNXQuantizedModels/QuantizedModelsTests.Convolution*:**' || '' }}
|
||||
|
||||
${{ env.INSTALL_TEST_DIR }}/ov_cpu_func_tests --gtest_print_time=1 --gtest_filter=*smoke* "$skip_filter" --gtest_output=xml:"${{ env.INSTALL_TEST_DIR }}/TEST-CPUFuncTests.xml"
|
||||
|
||||
- name: Upload Test Results
|
||||
uses: actions/upload-artifact@v3
|
||||
if: ${{ always() }}
|
||||
with:
|
||||
name: test-results-functional-cpu-${{ matrix.arhitecture }}
|
||||
path: ${{ env.INSTALL_TEST_DIR }}/TEST*.xml
|
||||
if-no-files-found: 'error'
|
||||
# if: fromJSON(needs.smart_ci.outputs.affected_components).CPU.test
|
||||
if: ${{ 'false' }} # Ticket: 122001
|
||||
needs: [ Build, Smart_CI ]
|
||||
uses: ./.github/workflows/job_cpu_functional_tests.yml
|
||||
with:
|
||||
runner: 'macos-13'
|
||||
|
||||
241
.github/workflows/mac_arm64.yml
vendored
Normal file
241
.github/workflows/mac_arm64.yml
vendored
Normal file
@@ -0,0 +1,241 @@
|
||||
name: macOS ARM64 (Python 3.11)
|
||||
on:
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
# at 00:00 on workdays
|
||||
- cron: '0 0 * * 1,2,3,4,5'
|
||||
# pull_request:
|
||||
# paths-ignore:
|
||||
# - '**/docs/**'
|
||||
# - 'docs/**'
|
||||
# - '**/**.md'
|
||||
# - '**.md'
|
||||
# - '**/layer_tests_summary/**'
|
||||
# - '**/conformance/**'
|
||||
# push:
|
||||
# paths-ignore:
|
||||
# - '**/docs/**'
|
||||
# - 'docs/**'
|
||||
# - '**/**.md'
|
||||
# - '**.md'
|
||||
# - '**/layer_tests_summary/**'
|
||||
# - '**/conformance/**'
|
||||
# branches:
|
||||
# - master
|
||||
# - 'releases/**'
|
||||
|
||||
concurrency:
|
||||
# github.ref is not unique in post-commit
|
||||
group: ${{ github.event_name == 'push' && github.run_id || github.ref }}-mac-arm64
|
||||
cancel-in-progress: true
|
||||
|
||||
env:
|
||||
PYTHON_VERSION: '3.11'
|
||||
|
||||
jobs:
|
||||
Smart_CI:
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
affected_components: "${{ steps.smart_ci.outputs.affected_components }}"
|
||||
skip_workflow: "${{ steps.smart_ci.outputs.skip_workflow }}"
|
||||
steps:
|
||||
- name: checkout action
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
sparse-checkout: .github/actions/smart-ci
|
||||
|
||||
- name: Get affected components
|
||||
id: smart_ci
|
||||
uses: ./.github/actions/smart-ci
|
||||
with:
|
||||
repository: ${{ github.repository }}
|
||||
pr: ${{ github.event.number }}
|
||||
commit_sha: ${{ github.sha }}
|
||||
component_pattern: "category: (.*)"
|
||||
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
skip_when_only_listed_labels_set: 'docs'
|
||||
skip_when_only_listed_files_changed: '*.md,*.rst,*.png,*.jpg,*.svg'
|
||||
|
||||
Build:
|
||||
needs: Smart_CI
|
||||
timeout-minutes: 150
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
runs-on: 'macos-13-xlarge'
|
||||
env:
|
||||
CMAKE_BUILD_TYPE: 'Release'
|
||||
CMAKE_GENERATOR: 'Ninja Multi-Config'
|
||||
MACOSX_DEPLOYMENT_TARGET: '11.0'
|
||||
CMAKE_CXX_COMPILER_LAUNCHER: ccache
|
||||
CMAKE_C_COMPILER_LAUNCHER: ccache
|
||||
OPENVINO_REPO: ${{ github.workspace }}/openvino
|
||||
OPENVINO_CONTRIB_REPO: ${{ github.workspace }}/openvino_contrib
|
||||
INSTALL_DIR: ${{ github.workspace }}/openvino_install
|
||||
INSTALL_TEST_DIR: ${{ github.workspace }}/tests_install
|
||||
BUILD_DIR: ${{ github.workspace }}/build
|
||||
steps:
|
||||
- name: Clone OpenVINO
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
path: 'openvino'
|
||||
submodules: 'true'
|
||||
|
||||
- name: Clone OpenVINO Contrib
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: 'openvinotoolkit/openvino_contrib'
|
||||
path: 'openvino_contrib'
|
||||
|
||||
#
|
||||
# Print system info
|
||||
#
|
||||
|
||||
- name: System info
|
||||
uses: ./openvino/.github/actions/system_info
|
||||
|
||||
#
|
||||
# Dependencies
|
||||
#
|
||||
|
||||
- name: Install build dependencies
|
||||
run: brew install coreutils ninja scons
|
||||
|
||||
- name: Setup Python ${{ env.PYTHON_VERSION }}
|
||||
uses: ./openvino/.github/actions/setup_python
|
||||
with:
|
||||
version: ${{ env.PYTHON_VERSION }}
|
||||
should-setup-pip-paths: 'false'
|
||||
self-hosted-runner: 'false'
|
||||
|
||||
- name: Install python dependencies
|
||||
run: |
|
||||
# For Python API
|
||||
python3 -m pip install -r ${{ env.OPENVINO_REPO }}/src/bindings/python/wheel/requirements-dev.txt
|
||||
python3 -m pip install -r ${{ env.OPENVINO_REPO }}/src/bindings/python/requirements.txt
|
||||
|
||||
# For running Python API tests
|
||||
python3 -m pip install -r ${{ env.OPENVINO_REPO }}/src/bindings/python/src/compatibility/openvino/requirements-dev.txt
|
||||
|
||||
# For running ONNX frontend unit tests
|
||||
python3 -m pip install --force-reinstall -r ${{ env.OPENVINO_REPO }}/src/frontends/onnx/tests/requirements.txt
|
||||
|
||||
# For running TensorFlow frontend unit tests
|
||||
python3 -m pip install -r ${{ env.OPENVINO_REPO }}/src/frontends/tensorflow/tests/requirements.txt
|
||||
|
||||
# For running Paddle frontend unit tests
|
||||
python3 -m pip install -r ${{ env.OPENVINO_REPO }}/src/frontends/paddle/tests/requirements.txt
|
||||
|
||||
#
|
||||
# Build
|
||||
#
|
||||
|
||||
- name: Setup ccache
|
||||
uses: hendrikmuhs/ccache-action@v1.2
|
||||
with:
|
||||
max-size: "2000M"
|
||||
# Should save cache only if run in the master branch of the base repo
|
||||
# github.ref_name is 'ref/PR_#' in case of the PR, and 'branch_name' when executed on push
|
||||
save: ${{ github.ref_name == 'master' && 'true' || 'false' }}
|
||||
verbose: 2
|
||||
key: ${{ runner.os }}-${{ runner.arch }}-main
|
||||
restore-keys: |
|
||||
${{ runner.os }}-${{ runner.arch }}-main
|
||||
|
||||
- name: CMake configure
|
||||
run: |
|
||||
cmake \
|
||||
-G "${{ env.CMAKE_GENERATOR }}" \
|
||||
-DENABLE_CPPLINT=OFF \
|
||||
-DENABLE_NCC_STYLE=OFF \
|
||||
-DENABLE_TESTS=ON \
|
||||
-DCMAKE_COMPILE_WARNING_AS_ERROR=OFF \
|
||||
-DENABLE_STRICT_DEPENDENCIES=OFF \
|
||||
-DCMAKE_CXX_COMPILER_LAUNCHER=${{ env.CMAKE_CXX_COMPILER_LAUNCHER }} \
|
||||
-DCMAKE_C_COMPILER_LAUNCHER=${{ env.CMAKE_C_COMPILER_LAUNCHER }} \
|
||||
-S ${{ env.OPENVINO_REPO }} \
|
||||
-B ${{ env.BUILD_DIR }}
|
||||
|
||||
- name: Cmake build - OpenVINO
|
||||
run: cmake --build ${{ env.BUILD_DIR }} --parallel --config ${{ env.CMAKE_BUILD_TYPE }}
|
||||
|
||||
- name: Show ccache stats
|
||||
run: ccache --show-stats
|
||||
|
||||
- name: Cmake install - OpenVINO
|
||||
run: |
|
||||
cmake -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} -P ${{ env.BUILD_DIR }}/cmake_install.cmake
|
||||
cmake -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_TEST_DIR }} -DCOMPONENT=tests -P ${{ env.BUILD_DIR }}/cmake_install.cmake
|
||||
cmake -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} -DCOMPONENT=python_wheels -P ${{ env.BUILD_DIR }}/cmake_install.cmake
|
||||
|
||||
- name: Pack Artifacts
|
||||
run: |
|
||||
pushd ${{ env.INSTALL_DIR }}
|
||||
tar -czvf ${{ env.BUILD_DIR }}/openvino_package.tar.gz *
|
||||
popd
|
||||
|
||||
pushd ${{ env.INSTALL_TEST_DIR }}
|
||||
tar -czvf ${{ env.BUILD_DIR }}/openvino_tests.tar.gz *
|
||||
popd
|
||||
|
||||
- name: Cmake & Build - OpenVINO Contrib
|
||||
run: |
|
||||
cmake \
|
||||
-DBUILD_nvidia_plugin=OFF \
|
||||
-DBUILD_java_api=OFF \
|
||||
-DCUSTOM_OPERATIONS="calculate_grid;complex_mul;fft;grid_sample;sparse_conv;sparse_conv_transpose" \
|
||||
-DOPENVINO_EXTRA_MODULES=${{ env.OPENVINO_CONTRIB_REPO }}/modules \
|
||||
-S ${{ env.OPENVINO_REPO }} \
|
||||
-B ${{ env.BUILD_DIR }}
|
||||
cmake --build ${{ env.BUILD_DIR }} --parallel --config ${{ env.CMAKE_BUILD_TYPE }}
|
||||
|
||||
#
|
||||
# Upload build artifacts
|
||||
#
|
||||
|
||||
- name: Upload openvino package
|
||||
if: ${{ always() }}
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: openvino_package
|
||||
path: ${{ env.BUILD_DIR }}/openvino_package.tar.gz
|
||||
if-no-files-found: 'error'
|
||||
|
||||
- name: Upload openvino tests package
|
||||
if: ${{ always() }}
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: openvino_tests
|
||||
path: ${{ env.BUILD_DIR }}/openvino_tests.tar.gz
|
||||
if-no-files-found: 'error'
|
||||
|
||||
Samples:
|
||||
needs: Build
|
||||
uses: ./.github/workflows/job_samples_tests.yml
|
||||
with:
|
||||
runner: 'macos-13-xlarge'
|
||||
affected-components: ${{ needs.smart_ci.outputs.affected_components }}
|
||||
|
||||
CXX_Unit_Tests:
|
||||
name: C++ unit tests
|
||||
needs: [ Build, Smart_CI ]
|
||||
uses: ./.github/workflows/job_cxx_unit_tests.yml
|
||||
with:
|
||||
runner: 'macos-13-xlarge'
|
||||
affected-components: ${{ needs.smart_ci.outputs.affected_components }}
|
||||
|
||||
Python_Unit_Tests:
|
||||
name: Python unit tests
|
||||
needs: [ Build, Smart_CI ]
|
||||
uses: ./.github/workflows/job_python_unit_tests.yml
|
||||
with:
|
||||
runner: 'macos-13-xlarge'
|
||||
affected-components: ${{ needs.smart_ci.outputs.affected_components }}
|
||||
|
||||
CPU_Functional_Tests:
|
||||
name: CPU functional tests
|
||||
if: fromJSON(needs.smart_ci.outputs.affected_components).CPU.test
|
||||
needs: [ Build, Smart_CI ]
|
||||
uses: ./.github/workflows/job_cpu_functional_tests.yml
|
||||
with:
|
||||
runner: 'macos-13-xlarge'
|
||||
2
.github/workflows/mo.yml
vendored
2
.github/workflows/mo.yml
vendored
@@ -24,7 +24,7 @@ jobs:
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup Python
|
||||
uses: actions/setup-python@v4
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: '3.10'
|
||||
|
||||
|
||||
2
.github/workflows/py_checks.yml
vendored
2
.github/workflows/py_checks.yml
vendored
@@ -28,7 +28,7 @@ jobs:
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup Python
|
||||
uses: actions/setup-python@v4
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: '3.8'
|
||||
|
||||
|
||||
2
.github/workflows/stale_prs_and_issues.yml
vendored
2
.github/workflows/stale_prs_and_issues.yml
vendored
@@ -12,7 +12,7 @@ jobs:
|
||||
stale:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/stale@v8
|
||||
- uses: actions/stale@v9
|
||||
with:
|
||||
stale-issue-message: 'This issue will be closed in a week because of 9 months of no activity.'
|
||||
stale-pr-message: 'This PR will be closed in a week because of 2 weeks of no activity.'
|
||||
|
||||
2
.github/workflows/webassembly.yml
vendored
2
.github/workflows/webassembly.yml
vendored
@@ -35,7 +35,7 @@ jobs:
|
||||
container:
|
||||
image: emscripten/emsdk
|
||||
volumes:
|
||||
- /mount/caches:/mount/caches
|
||||
- /mount:/mount
|
||||
options: -e SCCACHE_AZURE_BLOB_CONTAINER -e SCCACHE_AZURE_CONNECTION_STRING
|
||||
env:
|
||||
CMAKE_BUILD_TYPE: 'Release'
|
||||
|
||||
320
.github/workflows/windows.yml
vendored
320
.github/workflows/windows.yml
vendored
@@ -1,43 +1,51 @@
|
||||
name: Windows (VS 2019, Python 3.11)
|
||||
on:
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
# at 00:00 on workdays
|
||||
- cron: '0 0 * * 1,2,3,4,5'
|
||||
# pull_request:
|
||||
# paths-ignore:
|
||||
# - '**/docs/**'
|
||||
# - 'docs/**'
|
||||
# - '**/**.md'
|
||||
# - '**.md'
|
||||
# - '**/layer_tests_summary/**'
|
||||
# - '**/conformance/**'
|
||||
# push:
|
||||
# paths-ignore:
|
||||
# - '**/docs/**'
|
||||
# - 'docs/**'
|
||||
# - '**/**.md'
|
||||
# - '**.md'
|
||||
# - '**/layer_tests_summary/**'
|
||||
# - '**/conformance/**'
|
||||
# branches:
|
||||
# - master
|
||||
|
||||
pull_request:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- 'releases/**'
|
||||
concurrency:
|
||||
# github.ref is not unique in post-commit
|
||||
group: ${{ github.event_name == 'push' && github.run_id || github.ref }}-windows
|
||||
cancel-in-progress: true
|
||||
|
||||
env:
|
||||
PIP_CACHE_PATH: /mount/caches/pip/win
|
||||
PYTHON_VERSION: '3.11'
|
||||
|
||||
jobs:
|
||||
Smart_CI:
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
affected_components: "${{ steps.smart_ci.outputs.affected_components }}"
|
||||
skip_workflow: "${{ steps.smart_ci.outputs.skip_workflow }}"
|
||||
steps:
|
||||
- name: checkout action
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
sparse-checkout: .github/actions/smart-ci
|
||||
|
||||
- name: Get affected components
|
||||
id: smart_ci
|
||||
uses: ./.github/actions/smart-ci
|
||||
with:
|
||||
repository: ${{ github.repository }}
|
||||
pr: ${{ github.event.number }}
|
||||
commit_sha: ${{ github.sha }}
|
||||
component_pattern: "category: (.*)"
|
||||
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
skip_when_only_listed_labels_set: 'docs'
|
||||
skip_when_only_listed_files_changed: '*.md,*.rst,*.png,*.jpg,*.svg,*/layer_tests_summary/*,*/conformance/*'
|
||||
|
||||
Build:
|
||||
needs: Smart_CI
|
||||
timeout-minutes: 180
|
||||
defaults:
|
||||
run:
|
||||
shell: pwsh
|
||||
runs-on: windows-2019-16-core
|
||||
runs-on: aks-win-16-cores-32gb
|
||||
env:
|
||||
CMAKE_BUILD_TYPE: 'Release'
|
||||
CMAKE_GENERATOR: 'Ninja Multi-Config'
|
||||
@@ -48,6 +56,10 @@ jobs:
|
||||
INSTALL_DIR: "${{ github.workspace }}\\openvino_install"
|
||||
INSTALL_TEST_DIR: "${{ github.workspace }}\\tests_install"
|
||||
BUILD_DIR: "${{ github.workspace }}\\openvino_build"
|
||||
# TODO: specify version of compiler here
|
||||
SCCACHE_AZURE_KEY_PREFIX: windows2022_x86_64_Release
|
||||
if: "!needs.smart_ci.outputs.skip_workflow"
|
||||
|
||||
steps:
|
||||
- name: Clone OpenVINO
|
||||
uses: actions/checkout@v4
|
||||
@@ -60,7 +72,7 @@ jobs:
|
||||
with:
|
||||
repository: 'openvinotoolkit/openvino_contrib'
|
||||
path: 'openvino_contrib'
|
||||
ref: 'releases/2023/2'
|
||||
ref: 'master'
|
||||
|
||||
#
|
||||
# Print system info
|
||||
@@ -73,9 +85,14 @@ jobs:
|
||||
# Dependencies
|
||||
#
|
||||
|
||||
- uses: actions/setup-python@v4
|
||||
- name: Setup Python ${{ env.PYTHON_VERSION }}
|
||||
uses: ./openvino/.github/actions/setup_python
|
||||
with:
|
||||
python-version: ${{ env.PYTHON_VERSION }}
|
||||
version: ${{ env.PYTHON_VERSION }}
|
||||
pip-cache-path: ${{ env.PIP_CACHE_PATH }}
|
||||
should-setup-pip-paths: 'true'
|
||||
self-hosted-runner: 'true'
|
||||
show-cache-info: 'true'
|
||||
|
||||
- name: Install python dependencies
|
||||
run: |
|
||||
@@ -92,9 +109,18 @@ jobs:
|
||||
# For running TensorFlow Lite frontend unit tests
|
||||
python3 -m pip install -r ${{ env.OPENVINO_REPO }}/src/frontends/tensorflow_lite/tests/requirements.txt
|
||||
|
||||
# Disabled because of CVS-95904
|
||||
# For running Paddle frontend unit tests
|
||||
# python3 -m pip install -r ${{ env.OPENVINO_REPO }}/src/frontends/paddle/tests/requirements.txt
|
||||
|
||||
# For getting rid of SSL issues during model downloading for unit tests
|
||||
python3 -m pip install certifi
|
||||
|
||||
- name: Install sccache
|
||||
uses: mozilla-actions/sccache-action@v0.0.3
|
||||
with:
|
||||
version: "v0.5.4"
|
||||
|
||||
- name: Install build dependencies
|
||||
run: choco install --no-progress ninja
|
||||
|
||||
@@ -105,18 +131,8 @@ jobs:
|
||||
- name: Configure Developer Command Prompt for Microsoft Visual C++
|
||||
uses: ilammy/msvc-dev-cmd@v1
|
||||
|
||||
- name: Setup sccache
|
||||
uses: hendrikmuhs/ccache-action@v1.2
|
||||
with:
|
||||
variant: sccache
|
||||
max-size: "2000M"
|
||||
# Should save cache only if run in the master branch of the base repo
|
||||
# github.ref_name is 'ref/PR_#' in case of the PR, and 'branch_name' when executed on push
|
||||
save: ${{ github.ref_name == 'master' && 'true' || 'false' }}
|
||||
append-timestamp: true
|
||||
key: ${{ github.job }}-${{ runner.os }}-common
|
||||
restore-keys: |
|
||||
${{ github.job }}-${{ runner.os }}-common
|
||||
- name: Set SSL_CERT_FILE for model downloading for unit tests
|
||||
run: echo SSL_CERT_FILE=$(python3 -m certifi) >> $env:GITHUB_ENV
|
||||
|
||||
- name: CMake configure
|
||||
run: |
|
||||
@@ -134,9 +150,15 @@ jobs:
|
||||
-S ${{ env.OPENVINO_REPO }} `
|
||||
-B ${{ env.BUILD_DIR }}
|
||||
|
||||
- name: Clean sccache stats
|
||||
run: '& "$Env:SCCACHE_PATH" --zero-stats'
|
||||
|
||||
- name: Cmake build - OpenVINO
|
||||
run: cmake --build ${{ env.BUILD_DIR }} --parallel --config ${{ env.CMAKE_BUILD_TYPE }} --verbose
|
||||
|
||||
- name: Show sccache stats
|
||||
run: '& "$Env:SCCACHE_PATH" --show-stats'
|
||||
|
||||
- name: Cmake install - OpenVINO
|
||||
run: |
|
||||
cmake -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} -P ${{ env.BUILD_DIR }}/cmake_install.cmake
|
||||
@@ -187,13 +209,15 @@ jobs:
|
||||
if-no-files-found: 'error'
|
||||
|
||||
Samples:
|
||||
needs: Build
|
||||
timeout-minutes: 10
|
||||
needs: [Build, Smart_CI]
|
||||
if: fromJSON(needs.smart_ci.outputs.affected_components).samples
|
||||
timeout-minutes: 20
|
||||
defaults:
|
||||
run:
|
||||
shell: pwsh
|
||||
runs-on: windows-2019
|
||||
runs-on: aks-win-4-cores-8gb
|
||||
env:
|
||||
OPENVINO_REPO: "${{ github.workspace }}\\openvino"
|
||||
INSTALL_DIR: "${{ github.workspace }}\\install"
|
||||
INSTALL_TEST_DIR: "${{ github.workspace }}\\install\\tests"
|
||||
SAMPLES_INSTALL_DIR: "${{ github.workspace }}\\install\\samples"
|
||||
@@ -201,13 +225,13 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Download OpenVINO package
|
||||
uses: actions/download-artifact@v3
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: openvino_package
|
||||
path: ${{ env.INSTALL_DIR }}
|
||||
|
||||
- name: Download OpenVINO tests package
|
||||
uses: actions/download-artifact@v3
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: openvino_tests
|
||||
path: ${{ env.INSTALL_TEST_DIR }}
|
||||
@@ -221,9 +245,20 @@ jobs:
|
||||
Expand-Archive openvino_tests.zip -DestinationPath "${{ env.INSTALL_DIR }}"
|
||||
popd
|
||||
|
||||
- uses: actions/setup-python@v4
|
||||
- name: Fetch setup_python action
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
python-version: ${{ env.PYTHON_VERSION }}
|
||||
sparse-checkout: |
|
||||
.github/actions/setup_python/action.yml
|
||||
sparse-checkout-cone-mode: false
|
||||
path: 'openvino'
|
||||
|
||||
- name: Setup Python ${{ env.PYTHON_VERSION }}
|
||||
uses: ./openvino/.github/actions/setup_python
|
||||
with:
|
||||
version: ${{ env.PYTHON_VERSION }}
|
||||
should-setup-pip-paths: 'false'
|
||||
self-hosted-runner: 'true'
|
||||
|
||||
- name: Build cpp samples
|
||||
run: |
|
||||
@@ -256,12 +291,12 @@ jobs:
|
||||
|
||||
Python_Unit_Tests:
|
||||
name: Python unit tests
|
||||
needs: Build
|
||||
needs: [Build, Smart_CI]
|
||||
timeout-minutes: 75
|
||||
defaults:
|
||||
run:
|
||||
shell: pwsh
|
||||
runs-on: windows-2019
|
||||
runs-on: aks-win-8-cores-16gb
|
||||
env:
|
||||
OPENVINO_REPO: "${{ github.workspace }}\\openvino"
|
||||
OPENVINO_CONTRIB_REPO: "${{ github.workspace }}\\openvino_contrib"
|
||||
@@ -272,13 +307,13 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Download OpenVINO package
|
||||
uses: actions/download-artifact@v3
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: openvino_package
|
||||
path: ${{ env.INSTALL_DIR }}
|
||||
|
||||
- name: Download OpenVINO tests package
|
||||
uses: actions/download-artifact@v3
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: openvino_tests
|
||||
path: ${{ env.INSTALL_TEST_DIR }}
|
||||
@@ -292,22 +327,21 @@ jobs:
|
||||
Expand-Archive openvino_tests.zip -DestinationPath "${{ env.INSTALL_DIR }}"
|
||||
popd
|
||||
|
||||
- name: Clone OpenVINO
|
||||
- name: Fetch setup_python action
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
sparse-checkout: |
|
||||
.github/actions/setup_python/action.yml
|
||||
sparse-checkout-cone-mode: false
|
||||
path: 'openvino'
|
||||
|
||||
- uses: actions/setup-python@v4
|
||||
- name: Setup Python ${{ env.PYTHON_VERSION }}
|
||||
uses: ./openvino/.github/actions/setup_python
|
||||
with:
|
||||
python-version: ${{ env.PYTHON_VERSION }}
|
||||
|
||||
- name: Install Python API tests dependencies
|
||||
run: |
|
||||
# For torchvision to OpenVINO preprocessing converter
|
||||
python3 -m pip install -r ${{ env.OPENVINO_REPO }}/src/bindings/python/src/openvino/preprocess/torchvision/requirements.txt
|
||||
|
||||
# TODO: replace with Python API tests requirements
|
||||
python3 -m pip install -r ${{ env.OPENVINO_REPO }}/tools/mo/requirements_dev.txt
|
||||
version: ${{ env.PYTHON_VERSION }}
|
||||
pip-cache-path: ${{ env.PIP_CACHE_PATH }}
|
||||
should-setup-pip-paths: 'false'
|
||||
self-hosted-runner: 'true'
|
||||
|
||||
- name: Install OpenVINO Python wheels
|
||||
run: |
|
||||
@@ -319,133 +353,153 @@ jobs:
|
||||
$ovDevWheelPath=Get-ChildItem -Path "${{ env.INSTALL_DIR }}\tools" -Filter openvino_dev*.whl | % { $_.FullName }
|
||||
python3 -m pip install "$ovDevWheelPath[mxnet,caffe,kaldi,onnx,tensorflow2,pytorch]"
|
||||
|
||||
- name: Install Python API tests dependencies
|
||||
run: |
|
||||
# To enable pytest parallel features
|
||||
python3 -m pip install pytest-xdist[psutil]
|
||||
|
||||
# For torchvision to OpenVINO preprocessing converter
|
||||
python3 -m pip install -r ${{ env.INSTALL_TEST_DIR }}/python/preprocess/torchvision/requirements.txt
|
||||
|
||||
# TODO: replace with Python API tests requirements
|
||||
python3 -m pip install -r ${{ env.INSTALL_TEST_DIR }}/mo/requirements_dev.txt
|
||||
|
||||
- name: Python API 1.0 Tests
|
||||
#if: fromJSON(needs.smart_ci.outputs.affected_components).Python_API.test # Ticket: 127101
|
||||
shell: cmd
|
||||
run: |
|
||||
python3 -m pytest -s ${{ env.INSTALL_TEST_DIR }}/pyngraph ${{ env.PYTHON_STATIC_ARGS }} --junitxml=${{ env.INSTALL_TEST_DIR }}/TEST-Pyngraph.xml --ignore=${{ env.INSTALL_TEST_DIR }}/pyngraph/tests_compatibility/test_onnx/test_zoo_models.py
|
||||
|
||||
- name: Python API 2.0 Tests
|
||||
#if: fromJSON(needs.smart_ci.outputs.affected_components).Python_API.test # Ticket: 127101
|
||||
shell: cmd
|
||||
run: |
|
||||
set PYTHONPATH=${{ env.LAYER_TESTS_INSTALL_DIR }};%PYTHONPATH%
|
||||
python3 -m pytest -sv ${{ env.INSTALL_TEST_DIR }}/pyopenvino ${{ env.PYTHON_STATIC_ARGS }} --junitxml=${{ env.INSTALL_TEST_DIR }}/TEST-Pyngraph.xml --ignore=${{ env.INSTALL_TEST_DIR }}/pyopenvino/tests/test_utils/test_utils.py
|
||||
|
||||
- name: Model Optimizer UT
|
||||
if: fromJSON(needs.smart_ci.outputs.affected_components).MO.test
|
||||
shell: cmd
|
||||
run: |
|
||||
python3 -m pytest -s ${{ env.INSTALL_TEST_DIR }}/mo/unit_tests --ignore=${{ env.INSTALL_TEST_DIR }}/mo/unit_tests/mo/front/mxnet --junitxml=${{ env.INSTALL_TEST_DIR }}/TEST-ModelOptimizer.xml
|
||||
|
||||
- name: Install Python Layer tests dependencies
|
||||
run: |
|
||||
# layer test requirements
|
||||
python3 -m pip install -r ${{ env.LAYER_TESTS_INSTALL_DIR }}/requirements.txt
|
||||
|
||||
# Ticket - 115085
|
||||
- name: PyTorch Layer Tests
|
||||
if: ${{ 'false' }}
|
||||
shell: cmd
|
||||
run: |
|
||||
python3 -m pip install -r ${{ env.LAYER_TESTS_INSTALL_DIR }}/requirements.txt
|
||||
python3 -m pytest ${{ env.LAYER_TESTS_INSTALL_DIR }}/pytorch_tests -m precommit --junitxml=${{ env.INSTALL_TEST_DIR }}/TEST-pytorch.xml
|
||||
python3 -m pytest ${{ env.LAYER_TESTS_INSTALL_DIR }}/pytorch_tests -n logical -m precommit --junitxml=${{ env.INSTALL_TEST_DIR }}/TEST-pytorch.xml
|
||||
env:
|
||||
TEST_DEVICE: CPU
|
||||
|
||||
- name: ONNX Layer Tests
|
||||
if: fromJSON(needs.smart_ci.outputs.affected_components).ONNX_FE.test
|
||||
shell: cmd
|
||||
run: |
|
||||
python3 -m pip install -r ${{ env.LAYER_TESTS_INSTALL_DIR }}/requirements.txt
|
||||
|
||||
:: requires 'unit_tests' from 'tools/mo'
|
||||
set PYTHONPATH=${{ env.OPENVINO_REPO }}\tools\mo;${{ env.LAYER_TESTS_INSTALL_DIR }};%PYTHONPATH%
|
||||
python3 -m pytest ${{ env.LAYER_TESTS_INSTALL_DIR }}/onnx_tests -m "not launch_only_if_manually_specified and precommit" --junitxml=${INSTALL_TEST_DIR}/TEST-onnx.xml
|
||||
set PYTHONPATH=${{ env.INSTALL_TEST_DIR }}\mo;%PYTHONPATH%
|
||||
python3 -m pytest ${{ env.LAYER_TESTS_INSTALL_DIR }}/onnx_tests -n logical -m "not launch_only_if_manually_specified and precommit" --junitxml=${INSTALL_TEST_DIR}/TEST-onnx.xml
|
||||
env:
|
||||
TEST_DEVICE: CPU
|
||||
TEST_PRECISION: FP16
|
||||
|
||||
- name: TensorFlow 1 Layer Tests - TF FE
|
||||
if: fromJSON(needs.smart_ci.outputs.affected_components).TF_FE.test
|
||||
shell: cmd
|
||||
run: |
|
||||
python3 -m pip install -r ${{ env.LAYER_TESTS_INSTALL_DIR }}/requirements.txt
|
||||
|
||||
:: requires 'unit_tests' from 'tools/mo'
|
||||
set PYTHONPATH=${{ env.OPENVINO_REPO }}\tools\mo;${{ env.LAYER_TESTS_INSTALL_DIR }};%PYTHONPATH%
|
||||
set PYTHONPATH=${{ env.INSTALL_TEST_DIR }}\mo;%PYTHONPATH%
|
||||
python3 -m pytest ${{ env.LAYER_TESTS_INSTALL_DIR }}/tensorflow_tests/ --use_new_frontend -m precommit_tf_fe --junitxml=${{ env.INSTALL_TEST_DIR }}/TEST-tf_fe.xml
|
||||
env:
|
||||
TEST_DEVICE: CPU
|
||||
TEST_PRECISION: FP16
|
||||
|
||||
- name: TensorFlow 2 Layer Tests - TF FE
|
||||
if: fromJSON(needs.smart_ci.outputs.affected_components).TF_FE.test
|
||||
shell: cmd
|
||||
run: |
|
||||
python3 -m pip install -r ${{ env.LAYER_TESTS_INSTALL_DIR }}/requirements.txt
|
||||
|
||||
:: requires 'unit_tests' from 'tools/mo'
|
||||
set PYTHONPATH=${{ env.OPENVINO_REPO }}\tools\mo;${{ env.LAYER_TESTS_INSTALL_DIR }};%PYTHONPATH%
|
||||
set PYTHONPATH=${{ env.INSTALL_TEST_DIR }}\mo;%PYTHONPATH%
|
||||
|
||||
python3 -m pytest ${{ env.LAYER_TESTS_INSTALL_DIR }}/tensorflow2_keras_tests/ --use_new_frontend -m precommit_tf_fe --junitxml=${{ env.INSTALL_TEST_DIR }}/TEST-tf2_fe.xml
|
||||
env:
|
||||
TEST_DEVICE: CPU
|
||||
|
||||
- name: TensorFlow 1 Layer Tests - Legacy FE
|
||||
if: fromJSON(needs.smart_ci.outputs.affected_components).TF_FE.test
|
||||
shell: cmd
|
||||
run: |
|
||||
python3 -m pip install -r ${{ env.LAYER_TESTS_INSTALL_DIR }}/requirements.txt
|
||||
python3 -m pytest ${{ env.LAYER_TESTS_INSTALL_DIR }}/tensorflow_tests/test_tf_Roll.py --ir_version=10 --junitxml=${{ env.INSTALL_TEST_DIR }}/TEST-tf_Roll.xml
|
||||
|
||||
- name: TensorFlow 2 Layer Tests - Legacy FE
|
||||
if: fromJSON(needs.smart_ci.outputs.affected_components).TF_FE.test
|
||||
shell: cmd
|
||||
run: |
|
||||
python3 -m pip install -r ${{ env.LAYER_TESTS_INSTALL_DIR }}/requirements.txt
|
||||
python3 -m pytest ${{ env.LAYER_TESTS_INSTALL_DIR }}/tensorflow2_keras_tests/test_tf2_keras_activation.py --ir_version=11 --junitxml=${{ env.INSTALL_TEST_DIR }}/TEST-tf2_Activation.xml -k "sigmoid"
|
||||
env:
|
||||
TEST_DEVICE: CPU
|
||||
TEST_PRECISION: FP16
|
||||
|
||||
- name: TensorFlow Lite Layer Tests - TFL FE
|
||||
if: fromJSON(needs.smart_ci.outputs.affected_components).TFL_FE.test
|
||||
shell: cmd
|
||||
run: |
|
||||
python3 -m pip install -r ${{ env.LAYER_TESTS_INSTALL_DIR }}/requirements.txt
|
||||
python3 -m pytest ${{ env.LAYER_TESTS_INSTALL_DIR }}/tensorflow_lite_tests/ --junitxml=${{ env.INSTALL_TEST_DIR }}/TEST-tfl_fe.xml
|
||||
env:
|
||||
TEST_DEVICE: CPU
|
||||
TEST_PRECISION: FP16
|
||||
|
||||
- name: Python ONNX operators tests
|
||||
if: fromJSON(needs.smart_ci.outputs.affected_components).Python_API.test ||
|
||||
fromJSON(needs.smart_ci.outputs.affected_components).ONNX_FE.test
|
||||
shell: cmd
|
||||
run: |
|
||||
:: Skip test_onnx/test_zoo_models and test_onnx/test_backend due to long execution time - ONNX Model Zoo tests are run separately
|
||||
python3 -m pytest ${{ env.OPENVINO_REPO }}/src/frontends/onnx/tests -k "not cuda" ^
|
||||
python3 -m pytest ${{ env.INSTALL_TEST_DIR }}/onnx -k "not cuda" ^
|
||||
--junitxml=${{ env.INSTALL_TEST_DIR }}/TEST-onnx_frontend.xml ^
|
||||
--ignore=${{ env.OPENVINO_REPO }}/src/frontends/onnx/tests/test_python/test_zoo_models.py
|
||||
--ignore=${{ env.INSTALL_TEST_DIR }}/onnx/test_python/test_zoo_models.py
|
||||
|
||||
- name: MO Python API Tests
|
||||
if: fromJSON(needs.smart_ci.outputs.affected_components).MO.test
|
||||
shell: cmd
|
||||
run: |
|
||||
python3 -m pip install -r ${{ env.LAYER_TESTS_INSTALL_DIR }}/requirements.txt
|
||||
:: Used for 'test_utils' installed in '<test_package>\python\openvino\test_utils'
|
||||
set PYTHONPATH=${{ env.INSTALL_TEST_DIR }}\python\openvino\test_utils;${{ env.INSTALL_TEST_DIR }}\python;%PYTHONPATH%
|
||||
|
||||
:: TODO: remove setupvars.bat from here; currently, it's used for 'test_utils' installed in '<package>/python/openvino'
|
||||
call "${{ env.INSTALL_DIR }}\\setupvars.bat" && python3 -m pytest ${{ env.LAYER_TESTS_INSTALL_DIR }}/mo_python_api_tests --junitxml=${{ env.INSTALL_TEST_DIR }}/TEST-test_mo_convert.xml
|
||||
python3 -m pytest ${{ env.LAYER_TESTS_INSTALL_DIR }}/mo_python_api_tests --junitxml=${{ env.INSTALL_TEST_DIR }}/TEST-test_mo_convert.xml
|
||||
env:
|
||||
TEST_DEVICE: CPU
|
||||
TEST_PRECISION: FP16
|
||||
|
||||
- name: OVC Python API Tests
|
||||
if: fromJSON(needs.smart_ci.outputs.affected_components).MO.test
|
||||
shell: cmd
|
||||
run: |
|
||||
python3 -m pip install -r ${{ env.LAYER_TESTS_INSTALL_DIR }}/requirements.txt
|
||||
:: Used for 'test_utils' installed in '<test_package>\python\openvino\test_utils'
|
||||
set PYTHONPATH=${{ env.INSTALL_TEST_DIR }}\python\openvino\test_utils;${{ env.INSTALL_TEST_DIR }}\python;%PYTHONPATH%
|
||||
|
||||
:: TODO: remove setupvars.sh from here; currently, it's used for 'test_utils' installed in '<package>/python/openvino'
|
||||
call "${{ env.INSTALL_DIR }}\\setupvars.bat" && python3 -m pytest ${{ env.LAYER_TESTS_INSTALL_DIR }}/ovc_python_api_tests --junitxml=${{ env.INSTALL_TEST_DIR }}/TEST-test_ovc_convert.xml
|
||||
:: Skip test ticket: 126319
|
||||
python3 -m pytest ${{ env.LAYER_TESTS_INSTALL_DIR }}/ovc_python_api_tests -k "not test_ovc_tool_non_existng_output_dir" --junitxml=${{ env.INSTALL_TEST_DIR }}/TEST-test_ovc_convert.xml
|
||||
env:
|
||||
TEST_DEVICE: CPU
|
||||
TEST_PRECISION: FP16
|
||||
|
||||
- name: Python Frontend tests
|
||||
if: fromJSON(needs.smart_ci.outputs.affected_components).PyTorch_FE.test ||
|
||||
fromJSON(needs.smart_ci.outputs.affected_components).PDPD_FE.test
|
||||
shell: cmd
|
||||
run: |
|
||||
python3 -m pip install -r ${{ env.LAYER_TESTS_INSTALL_DIR }}/requirements.txt
|
||||
|
||||
call "${{ env.INSTALL_DIR }}\\setupvars.bat" && python3 -m pytest ${{ env.LAYER_TESTS_INSTALL_DIR }}/py_frontend_tests --junitxml=${{ env.INSTALL_TEST_DIR }}/TEST-test_py_fontend.xml
|
||||
|
||||
# TODO: install to 'tests' component via cpack
|
||||
- name: OVC unit tests
|
||||
if: fromJSON(needs.smart_ci.outputs.affected_components).MO.test
|
||||
shell: cmd
|
||||
run: python3 -m pytest -s ${{ env.OPENVINO_REPO }}/tools/ovc/unit_tests --junitxml=${{ env.INSTALL_TEST_DIR }}/TEST-OpenVinoConversion.xml
|
||||
run: python3 -m pytest -s ${{ env.INSTALL_TEST_DIR }}/ovc/unit_tests --junitxml=${{ env.INSTALL_TEST_DIR }}/TEST-OpenVinoConversion.xml
|
||||
|
||||
- name: Upload Test Results
|
||||
uses: actions/upload-artifact@v3
|
||||
@@ -457,25 +511,25 @@ jobs:
|
||||
|
||||
CXX_Unit_Tests:
|
||||
name: C++ unit tests
|
||||
needs: Build
|
||||
timeout-minutes: 15
|
||||
needs: [Build, Smart_CI]
|
||||
timeout-minutes: 25
|
||||
defaults:
|
||||
run:
|
||||
shell: pwsh
|
||||
runs-on: windows-2019
|
||||
runs-on: aks-win-4-cores-8gb
|
||||
env:
|
||||
INSTALL_DIR: "${{ github.workspace }}\\install"
|
||||
INSTALL_TEST_DIR: "${{ github.workspace }}\\install\\tests"
|
||||
|
||||
steps:
|
||||
- name: Download OpenVINO package
|
||||
uses: actions/download-artifact@v3
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: openvino_package
|
||||
path: ${{ env.INSTALL_DIR }}
|
||||
|
||||
- name: Download OpenVINO tests package
|
||||
uses: actions/download-artifact@v3
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: openvino_tests
|
||||
path: ${{ env.INSTALL_TEST_DIR }}
|
||||
@@ -490,72 +544,87 @@ jobs:
|
||||
popd
|
||||
|
||||
- name: OpenVINO Core unit tests
|
||||
if: fromJSON(needs.smart_ci.outputs.affected_components).Core.test
|
||||
shell: cmd
|
||||
run: |
|
||||
call "${{ env.INSTALL_DIR }}\\setupvars.bat" && ${{ env.INSTALL_TEST_DIR }}/ov_core_unit_tests --gtest_print_time=1 --gtest_filter=-*IE_GPU* --gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-NGraphUT.xml
|
||||
|
||||
- name: OpenVINO Inference functional tests
|
||||
if: fromJSON(needs.smart_ci.outputs.affected_components).inference.test
|
||||
shell: cmd
|
||||
run: |
|
||||
call "${{ env.INSTALL_DIR }}\\setupvars.bat" && ${{ env.INSTALL_TEST_DIR }}/ov_inference_functional_tests --gtest_print_time=1 --gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-InferenceFunc.xml
|
||||
|
||||
- name: OpenVINO Inference unit tests
|
||||
if: fromJSON(needs.smart_ci.outputs.affected_components).inference.test
|
||||
shell: cmd
|
||||
run: |
|
||||
call "${{ env.INSTALL_DIR }}\\setupvars.bat" && ${{ env.INSTALL_TEST_DIR }}/ov_inference_unit_tests --gtest_print_time=1 --gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-InferenceUnit.xml
|
||||
|
||||
- name: Low Precision Transformations Tests
|
||||
if: fromJSON(needs.smart_ci.outputs.affected_components).LP_transformations.test
|
||||
shell: cmd
|
||||
run: |
|
||||
call "${{ env.INSTALL_DIR }}\\setupvars.bat" && ${{ env.INSTALL_TEST_DIR }}/ov_lp_transformations_tests --gtest_print_time=1 --gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-LpTransformations.xml
|
||||
|
||||
- name: OpenVINO Conditional compilation tests
|
||||
if: fromJSON(needs.smart_ci.outputs.affected_components).Core.test
|
||||
shell: cmd
|
||||
run: |
|
||||
call "${{ env.INSTALL_DIR }}\\setupvars.bat" && ${{ env.INSTALL_TEST_DIR }}/ov_conditional_compilation_tests --gtest_print_time=1 --gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-ConditionalCompilation.xml
|
||||
|
||||
- name: IR frontend tests
|
||||
if: fromJSON(needs.smart_ci.outputs.affected_components).IR_FE.test
|
||||
shell: cmd
|
||||
run: |
|
||||
call "${{ env.INSTALL_DIR }}\\setupvars.bat" && ${{ env.INSTALL_TEST_DIR }}/ov_ir_frontend_tests --gtest_print_time=1 --gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-IRFrontend.xml
|
||||
|
||||
- name: PaddlePaddle frontend tests # Disabled in Azure: https://github.com/openvinotoolkit/openvino/blob/master/.ci/azure/linux.yml#L403
|
||||
- name: PaddlePaddle frontend tests # Disabled because of CVS-95904
|
||||
if: ${{ 'false' }}
|
||||
shell: cmd
|
||||
run: |
|
||||
call "${{ env.INSTALL_DIR }}\\setupvars.bat" && ${{ env.INSTALL_TEST_DIR }}/paddle_tests --gtest_print_time=1 --gtest_filter=*smoke* --gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-PaddleTests.xml
|
||||
|
||||
- name: ONNX frontend tests
|
||||
if: fromJSON(needs.smart_ci.outputs.affected_components).ONNX_FE.test
|
||||
shell: cmd
|
||||
run: |
|
||||
call "${{ env.INSTALL_DIR }}\\setupvars.bat" && ${{ env.INSTALL_TEST_DIR }}/ov_onnx_frontend_tests --gtest_print_time=1 --gtest_filter=-*IE_GPU* --gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-ONNXFrontend.xml
|
||||
|
||||
- name: TensorFlow Common frontend tests
|
||||
if: fromJSON(needs.smart_ci.outputs.affected_components).TF_FE.test ||
|
||||
fromJSON(needs.smart_ci.outputs.affected_components).TFL_FE.test
|
||||
shell: cmd
|
||||
run: |
|
||||
call "${{ env.INSTALL_DIR }}\\setupvars.bat" && ${{ env.INSTALL_TEST_DIR }}/ov_tensorflow_common_tests --gtest_print_time=1 --gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-TensorFlowCommonFrontend.xml
|
||||
|
||||
- name: TensorFlow frontend tests
|
||||
if: fromJSON(needs.smart_ci.outputs.affected_components).TF_FE.test
|
||||
shell: cmd
|
||||
run: |
|
||||
call "${{ env.INSTALL_DIR }}\\setupvars.bat" && ${{ env.INSTALL_TEST_DIR }}/ov_tensorflow_frontend_tests --gtest_print_time=1 --gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-TensorFlowFrontend.xml
|
||||
|
||||
- name: TensorFlow Lite frontend tests
|
||||
if: fromJSON(needs.smart_ci.outputs.affected_components).TFL_FE.test
|
||||
shell: cmd
|
||||
run: |
|
||||
call "${{ env.INSTALL_DIR }}\\setupvars.bat" && ${{ env.INSTALL_TEST_DIR }}/ov_tensorflow_lite_frontend_tests --gtest_print_time=1 --gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-TensorFlowLiteFrontend.xml
|
||||
:: Skip ticket: 126320
|
||||
call "${{ env.INSTALL_DIR }}\\setupvars.bat" && ${{ env.INSTALL_TEST_DIR }}/ov_tensorflow_lite_frontend_tests --gtest_print_time=1 --gtest_filter=-*test_decode_convert_equal_convert*:*test_convert_partially_equal_convert* --gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-TensorFlowLiteFrontend.xml
|
||||
|
||||
- name: Transformations func tests
|
||||
if: fromJSON(needs.smart_ci.outputs.affected_components).transformations.test
|
||||
shell: cmd
|
||||
run: |
|
||||
call "${{ env.INSTALL_DIR }}\\setupvars.bat" && ${{ env.INSTALL_TEST_DIR }}/ov_transformations_tests --gtest_print_time=1 --gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-Transformations.xml
|
||||
|
||||
- name: Legacy Transformations func tests
|
||||
if: fromJSON(needs.smart_ci.outputs.affected_components).GNA.test
|
||||
shell: cmd
|
||||
run: |
|
||||
call "${{ env.INSTALL_DIR }}\\setupvars.bat" && ${{ env.INSTALL_TEST_DIR }}/ov_legacy_transformations_tests --gtest_print_time=1 --gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-LegacyTransformations.xml
|
||||
|
||||
- name: Inference Engine 1.0 unit tests
|
||||
if: fromJSON(needs.smart_ci.outputs.affected_components).GNA.test
|
||||
shell: cmd
|
||||
run: |
|
||||
call "${{ env.INSTALL_DIR }}\\setupvars.bat" && ${{ env.INSTALL_TEST_DIR }}/InferenceEngineUnitTests --gtest_print_time=1 --gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-InferenceEngineUnitTests.xml
|
||||
@@ -566,47 +635,53 @@ jobs:
|
||||
call "${{ env.INSTALL_DIR }}\\setupvars.bat" && ${{ env.INSTALL_TEST_DIR }}/ov_util_tests --gtest_print_time=1 --gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-commonUtilsTests.xml
|
||||
|
||||
- name: Snippets func tests
|
||||
if: fromJSON(needs.smart_ci.outputs.affected_components).CPU.test
|
||||
shell: cmd
|
||||
run: |
|
||||
call "${{ env.INSTALL_DIR }}\\setupvars.bat" && ${{ env.INSTALL_TEST_DIR }}/ov_snippets_func_tests --gtest_print_time=1 --gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-SnippetsFuncTests.xml
|
||||
|
||||
- name: CPU plugin unit tests
|
||||
if: fromJSON(needs.smart_ci.outputs.affected_components).CPU.test
|
||||
shell: cmd
|
||||
run: |
|
||||
call "${{ env.INSTALL_DIR }}\\setupvars.bat" && ${{ env.INSTALL_TEST_DIR }}/ov_cpu_unit_tests --gtest_print_time=1 --gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-CPUUnitTests.xml
|
||||
|
||||
- name: SubgraphsDumper tests
|
||||
- name: ov_subgraphs_dumper_tests tests
|
||||
shell: cmd
|
||||
run: |
|
||||
call "${{ env.INSTALL_DIR }}\\setupvars.bat" && ${{ env.INSTALL_TEST_DIR }}/subgraphsDumperTests --gtest_print_time=1 --gtest_print_time=1 --device=TEMPLATE --gtest_filter="*OpImpl*" --gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-SubgraphsDumperTests.xml
|
||||
call "${{ env.INSTALL_DIR }}\\setupvars.bat" && ${{ env.INSTALL_TEST_DIR }}/ov_subgraphs_dumper_tests --gtest_print_time=1 --device=TEMPLATE --gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-SubgraphsDumperTests.xml
|
||||
|
||||
- name: Template OpImpl tests
|
||||
if: ${{ 'false' }} # Ticket: 123572
|
||||
shell: cmd
|
||||
run: |
|
||||
call "${{ env.INSTALL_DIR }}\\setupvars.bat" && ${{ env.INSTALL_TEST_DIR }}/conformanceTests --gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-TemplateOpImplTests.xml
|
||||
call "${{ env.INSTALL_DIR }}\\setupvars.bat" && ${{ env.INSTALL_TEST_DIR }}/ov_op_conformance_tests --gtest_print_time=1 --gtest_filter="*OpImpl*" --gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-TemplateOpImplTests.xml
|
||||
|
||||
- name: GNA plugin unit tests
|
||||
if: fromJSON(needs.smart_ci.outputs.affected_components).GNA.test
|
||||
shell: cmd
|
||||
run: |
|
||||
call "${{ env.INSTALL_DIR }}\\setupvars.bat" && ${{ env.INSTALL_TEST_DIR }}/ov_gna_unit_tests --gtest_print_time=1 --gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-GNAUnitTests.xml
|
||||
|
||||
- name: AUTO unit tests
|
||||
if: fromJSON(needs.smart_ci.outputs.affected_components).AUTO.test
|
||||
shell: cmd
|
||||
run: |
|
||||
call "${{ env.INSTALL_DIR }}\\setupvars.bat" && ${{ env.INSTALL_TEST_DIR }}/ov_auto_unit_tests --gtest_print_time=1 --gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-ov_auto_unit_tests.xml
|
||||
|
||||
- name: AUTO func Tests
|
||||
if: fromJSON(needs.smart_ci.outputs.affected_components).AUTO.test
|
||||
shell: cmd
|
||||
run: |
|
||||
call "${{ env.INSTALL_DIR }}\\setupvars.bat" && ${{ env.INSTALL_TEST_DIR }}/ov_auto_func_tests --gtest_print_time=1 --gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-ov_auto_func_tests.xml
|
||||
|
||||
- name: Template plugin func tests
|
||||
if: fromJSON(needs.smart_ci.outputs.affected_components).TEMPLATE.test
|
||||
shell: cmd
|
||||
run: |
|
||||
call "${{ env.INSTALL_DIR }}\\setupvars.bat" && ${{ env.INSTALL_TEST_DIR }}/ov_template_func_tests --gtest_print_time=1 --gtest_filter=*smoke* --gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-TemplateFuncTests.xml
|
||||
|
||||
- name: Inference Engine C API tests
|
||||
if: fromJSON(needs.smart_ci.outputs.affected_components).C_API.test
|
||||
shell: cmd
|
||||
run: |
|
||||
call "${{ env.INSTALL_DIR }}\\setupvars.bat" && ${{ env.INSTALL_TEST_DIR }}/InferenceEngineCAPITests --gtest_print_time=1 --gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-InferenceEngineCAPITests.xml
|
||||
@@ -618,26 +693,31 @@ jobs:
|
||||
call "${{ env.INSTALL_DIR }}\\setupvars.bat" && ${{ env.INSTALL_TEST_DIR }}/ov_capi_test --gtest_print_time=1 --gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-OpenVINOCAPITests.xml
|
||||
|
||||
- name: AutoBatch unit tests
|
||||
if: fromJSON(needs.smart_ci.outputs.affected_components).AUTO_BATCH.test
|
||||
shell: cmd
|
||||
run: |
|
||||
call "${{ env.INSTALL_DIR }}\\setupvars.bat" && ${{ env.INSTALL_TEST_DIR }}/ov_auto_batch_unit_tests --gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-ov_auto_batch_unit_tests.xml
|
||||
|
||||
- name: AutoBatch func tests
|
||||
if: fromJSON(needs.smart_ci.outputs.affected_components).AUTO_BATCH.test
|
||||
shell: cmd
|
||||
run: |
|
||||
call "${{ env.INSTALL_DIR }}\\setupvars.bat" && ${{ env.INSTALL_TEST_DIR }}/ov_auto_batch_func_tests --gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-ov_auto_batch_func_tests.xml
|
||||
|
||||
- name: Proxy Plugin func tests
|
||||
if: fromJSON(needs.smart_ci.outputs.affected_components).PROXY.test
|
||||
shell: cmd
|
||||
run: |
|
||||
call "${{ env.INSTALL_DIR }}\\setupvars.bat" && ${{ env.INSTALL_TEST_DIR }}/ov_proxy_plugin_tests --gtest_print_time=1 --gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-OVProxyTests.xml
|
||||
|
||||
- name: Hetero Unit Tests
|
||||
if: fromJSON(needs.smart_ci.outputs.affected_components).HETERO.test
|
||||
shell: cmd
|
||||
run: |
|
||||
call "${{ env.INSTALL_DIR }}\\setupvars.bat" && ${{ env.INSTALL_TEST_DIR }}/ov_hetero_unit_tests --gtest_print_time=1 --gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-OVHeteroUnitTests.xml
|
||||
|
||||
- name: Hetero Func Tests
|
||||
if: fromJSON(needs.smart_ci.outputs.affected_components).HETERO.test
|
||||
shell: cmd
|
||||
run: |
|
||||
call "${{ env.INSTALL_DIR }}\\setupvars.bat" && ${{ env.INSTALL_TEST_DIR }}/ov_hetero_func_tests --gtest_print_time=1 --gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-OVHeteroFuncTests.xml
|
||||
@@ -652,27 +732,28 @@ jobs:
|
||||
|
||||
CPU_Functional_Tests:
|
||||
name: CPU functional tests
|
||||
needs: Build
|
||||
timeout-minutes: 30
|
||||
needs: [Build, Smart_CI]
|
||||
timeout-minutes: 70
|
||||
defaults:
|
||||
run:
|
||||
shell: pwsh
|
||||
runs-on: windows-2019-8-core
|
||||
runs-on: aks-win-8-cores-16gb
|
||||
env:
|
||||
OPENVINO_REPO: "${{ github.workspace }}\\openvino"
|
||||
INSTALL_DIR: "${{ github.workspace }}\\install"
|
||||
INSTALL_TEST_DIR: "${{ github.workspace }}\\install\\tests"
|
||||
PARALLEL_TEST_SCRIPT: "${{ github.workspace }}\\install\\tests\\functional_test_utils\\layer_tests_summary\\run_parallel.py"
|
||||
PARALLEL_TEST_CACHE: "${{ github.workspace }}\\install\\tests\\test_cache.lst"
|
||||
|
||||
if: fromJSON(needs.smart_ci.outputs.affected_components).CPU.test
|
||||
steps:
|
||||
- name: Download OpenVINO package
|
||||
uses: actions/download-artifact@v3
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: openvino_package
|
||||
path: ${{ env.INSTALL_DIR }}
|
||||
|
||||
- name: Download OpenVINO tests package
|
||||
uses: actions/download-artifact@v3
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: openvino_tests
|
||||
path: ${{ env.INSTALL_TEST_DIR }}
|
||||
@@ -686,9 +767,20 @@ jobs:
|
||||
Expand-Archive openvino_tests.zip -DestinationPath "${{ env.INSTALL_DIR }}"
|
||||
popd
|
||||
|
||||
- uses: actions/setup-python@v4
|
||||
- name: Fetch setup_python action
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
python-version: ${{ env.PYTHON_VERSION }}
|
||||
sparse-checkout: |
|
||||
.github/actions/setup_python/action.yml
|
||||
sparse-checkout-cone-mode: false
|
||||
path: 'openvino'
|
||||
|
||||
- name: Setup Python ${{ env.PYTHON_VERSION }}
|
||||
uses: ./openvino/.github/actions/setup_python
|
||||
with:
|
||||
version: ${{ env.PYTHON_VERSION }}
|
||||
should-setup-pip-paths: 'false'
|
||||
self-hosted-runner: 'true'
|
||||
|
||||
- name: Install python dependencies
|
||||
shell: cmd
|
||||
@@ -706,7 +798,7 @@ jobs:
|
||||
shell: cmd
|
||||
run: |
|
||||
call "${{ env.INSTALL_DIR }}\\setupvars.bat" && python3 ${{ env.PARALLEL_TEST_SCRIPT }} -e ${{ env.INSTALL_TEST_DIR }}\ov_cpu_func_tests.exe -c ${{ env.PARALLEL_TEST_CACHE }} -w ${{ env.INSTALL_TEST_DIR }} -s suite -- --gtest_filter=*smoke*"
|
||||
timeout-minutes: 25
|
||||
timeout-minutes: 60
|
||||
|
||||
- name: Save tests execution time
|
||||
uses: actions/cache/save@v3
|
||||
@@ -730,3 +822,17 @@ jobs:
|
||||
${{ env.INSTALL_TEST_DIR }}/logs/hash_table.csv
|
||||
${{ env.PARALLEL_TEST_CACHE }}
|
||||
if-no-files-found: 'error'
|
||||
|
||||
Overall_Status:
|
||||
name: ci/gha_overall_status_windows
|
||||
needs: [Smart_CI, Build, Samples, CXX_Unit_Tests, Python_Unit_Tests, CPU_Functional_Tests]
|
||||
if: ${{ always() }}
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Check status of all jobs
|
||||
if: >-
|
||||
${{
|
||||
contains(needs.*.result, 'failure') ||
|
||||
contains(needs.*.result, 'cancelled')
|
||||
}}
|
||||
run: exit 1
|
||||
|
||||
@@ -4,24 +4,25 @@ on:
|
||||
schedule:
|
||||
# run daily at 00:00
|
||||
- cron: '0 0 * * *'
|
||||
# pull_request:
|
||||
# paths-ignore:
|
||||
# - '**/docs/**'
|
||||
# - 'docs/**'
|
||||
# - '**/**.md'
|
||||
# - '**.md'
|
||||
# - '**/layer_tests_summary/**'
|
||||
# - '**/conformance/**'
|
||||
# push:
|
||||
# paths-ignore:
|
||||
# - '**/docs/**'
|
||||
# - 'docs/**'
|
||||
# - '**/**.md'
|
||||
# - '**.md'
|
||||
# - '**/layer_tests_summary/**'
|
||||
# - '**/conformance/**'
|
||||
# branches:
|
||||
# - master
|
||||
# pull_request:
|
||||
# paths-ignore:
|
||||
# - '**/docs/**'
|
||||
# - 'docs/**'
|
||||
# - '**/**.md'
|
||||
# - '**.md'
|
||||
# - '**/layer_tests_summary/**'
|
||||
# - '**/conformance/**'
|
||||
push:
|
||||
paths-ignore:
|
||||
- '**/docs/**'
|
||||
- 'docs/**'
|
||||
- '**/**.md'
|
||||
- '**.md'
|
||||
- '**/layer_tests_summary/**'
|
||||
- '**/conformance/**'
|
||||
branches:
|
||||
- master
|
||||
- 'releases/**'
|
||||
|
||||
concurrency:
|
||||
# github.ref is not unique in post-commit
|
||||
@@ -37,7 +38,7 @@ jobs:
|
||||
defaults:
|
||||
run:
|
||||
shell: pwsh
|
||||
runs-on: windows-latest-8-cores
|
||||
runs-on: aks-win-16-cores-32gb
|
||||
env:
|
||||
CMAKE_BUILD_TYPE: 'Release'
|
||||
CMAKE_GENERATOR: 'Ninja Multi-Config'
|
||||
@@ -49,6 +50,8 @@ jobs:
|
||||
BUILD_DIR: "${{ github.workspace }}\\openvino_build"
|
||||
MODELS_PATH: "${{ github.workspace }}\\testdata"
|
||||
SELECTIVE_BUILD_STAT_DIR: "${{ github.workspace }}\\selective_build_stat"
|
||||
# TODO: specify version of compiler here
|
||||
SCCACHE_AZURE_KEY_PREFIX: windows2022_x86_64_itt_Release
|
||||
steps:
|
||||
- name: Clone OpenVINO
|
||||
uses: actions/checkout@v4
|
||||
@@ -62,7 +65,7 @@ jobs:
|
||||
repository: 'openvinotoolkit/testdata'
|
||||
path: 'testdata'
|
||||
lfs: 'true'
|
||||
ref: 'releases/2023/2'
|
||||
ref: 'master'
|
||||
|
||||
#
|
||||
# Print system info
|
||||
@@ -75,13 +78,39 @@ jobs:
|
||||
# Dependencies
|
||||
#
|
||||
|
||||
- uses: actions/setup-python@v4
|
||||
- name: Setup Python ${{ env.PYTHON_VERSION }}
|
||||
uses: ./openvino/.github/actions/setup_python
|
||||
with:
|
||||
python-version: ${{ env.PYTHON_VERSION }}
|
||||
version: ${{ env.PYTHON_VERSION }}
|
||||
should-setup-pip-paths: 'false'
|
||||
self-hosted-runner: 'false'
|
||||
|
||||
- name: Install sccache
|
||||
uses: mozilla-actions/sccache-action@v0.0.3
|
||||
with:
|
||||
version: "v0.5.4"
|
||||
|
||||
- name: Install build dependencies
|
||||
run: choco install --no-progress ninja
|
||||
|
||||
- name: Install python dependencies
|
||||
run: |
|
||||
# For running ONNX frontend unit tests
|
||||
python3 -m pip install --force-reinstall -r ${{ env.OPENVINO_REPO }}/src/frontends/onnx/tests/requirements.txt
|
||||
|
||||
# For running TensorFlow frontend unit tests
|
||||
python3 -m pip install -r ${{ env.OPENVINO_REPO }}/src/frontends/tensorflow/tests/requirements.txt
|
||||
|
||||
# For running TensorFlow Lite frontend unit tests
|
||||
python3 -m pip install -r ${{ env.OPENVINO_REPO }}/src/frontends/tensorflow_lite/tests/requirements.txt
|
||||
|
||||
# For getting rid of SSL issues during model downloading for unit tests
|
||||
python3 -m pip install certifi
|
||||
|
||||
# Disabled because of CVS-95904
|
||||
# For running Paddle frontend unit tests
|
||||
# python3 -m pip install -r ${{ env.OPENVINO_REPO }}/src/frontends/paddle/tests/requirements.txt
|
||||
|
||||
#
|
||||
# Build
|
||||
#
|
||||
@@ -89,17 +118,8 @@ jobs:
|
||||
- name: Configure Developer Command Prompt for Microsoft Visual C++
|
||||
uses: ilammy/msvc-dev-cmd@v1
|
||||
|
||||
- name: Setup sccache
|
||||
uses: hendrikmuhs/ccache-action@v1.2
|
||||
with:
|
||||
variant: sccache
|
||||
max-size: "2000M"
|
||||
# Should save cache only if run in the master branch of the base repo
|
||||
# github.ref_name is 'ref/PR_#' in case of the PR, and 'branch_name' when executed on push
|
||||
save: ${{ github.ref_name == 'master' && 'true' || 'false' }}
|
||||
key: ${{ github.job }}-${{ runner.os }}-itt
|
||||
restore-keys: |
|
||||
${{ github.job }}-${{ runner.os }}-itt
|
||||
- name: Set SSL_CERT_FILE for model downloading for unit tests
|
||||
run: echo SSL_CERT_FILE=$(python3 -m certifi) >> $env:GITHUB_ENV
|
||||
|
||||
- name: CMake configure - CC COLLECT
|
||||
run: |
|
||||
@@ -116,10 +136,29 @@ jobs:
|
||||
-S ${{ env.OPENVINO_REPO }} `
|
||||
-B ${{ env.BUILD_DIR }}
|
||||
|
||||
- name: Clean sccache stats
|
||||
run: '& "$Env:SCCACHE_PATH" --zero-stats'
|
||||
|
||||
# to get more information on the issue
|
||||
# described in the next step
|
||||
- name: Show which network ports are used
|
||||
run: netstat -ban
|
||||
|
||||
# the case is the following:
|
||||
# sccache: error: An attempt was made to access a socket in a way forbidden by its access permissions. (os error 10013)
|
||||
# This looks like the attempt to use
|
||||
# a port below 1024 or a port
|
||||
# which is occupied by another app
|
||||
- name: Stop sccache server just in case
|
||||
run: '& "$Env:SCCACHE_PATH" --stop-server'
|
||||
|
||||
- name: Cmake build - CC COLLECT
|
||||
run: |
|
||||
cmake --build ${{ env.BUILD_DIR }} --parallel --config ${{ env.CMAKE_BUILD_TYPE }}
|
||||
cmake --build ${{ env.BUILD_DIR }} --parallel --config ${{ env.CMAKE_BUILD_TYPE }} --target sea_itt_lib
|
||||
cmake --build ${{ env.BUILD_DIR }} --parallel 8 --config ${{ env.CMAKE_BUILD_TYPE }} && `
|
||||
cmake --build ${{ env.BUILD_DIR }} --parallel 8 --config ${{ env.CMAKE_BUILD_TYPE }} --target sea_itt_lib
|
||||
|
||||
- name: Show sccache stats
|
||||
run: '& "$Env:SCCACHE_PATH" --show-stats'
|
||||
|
||||
- name: Cmake install - OpenVINO
|
||||
run: cmake -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} -P ${{ env.BUILD_DIR }}/cmake_install.cmake
|
||||
@@ -143,7 +182,7 @@ jobs:
|
||||
shell: cmd
|
||||
run: |
|
||||
set path=%path%;${{ env.OPENVINO_REPO }}\temp\tbb\bin
|
||||
|
||||
|
||||
python3 ${{ env.OPENVINO_REPO }}\thirdparty\itt_collector\runtool\sea_runtool.py ^
|
||||
--bindir ${{ env.OPENVINO_REPO }}\bin\intel64\${{ env.CMAKE_BUILD_TYPE }} ^
|
||||
-o ${{ env.SELECTIVE_BUILD_STAT_DIR }}\itt_stat ! ${{ env.OPENVINO_REPO }}\bin\intel64\${{ env.CMAKE_BUILD_TYPE }}\benchmark_app.exe ^
|
||||
@@ -199,7 +238,7 @@ jobs:
|
||||
defaults:
|
||||
run:
|
||||
shell: pwsh
|
||||
runs-on: windows-latest-8-cores
|
||||
runs-on: aks-win-16-cores-32gb
|
||||
env:
|
||||
CMAKE_BUILD_TYPE: 'Release'
|
||||
CMAKE_CXX_COMPILER_LAUNCHER: sccache
|
||||
@@ -208,6 +247,7 @@ jobs:
|
||||
BUILD_DIR: "${{ github.workspace }}\\openvino_build"
|
||||
MODELS_PATH: "${{ github.workspace }}\\testdata"
|
||||
SELECTIVE_BUILD_STAT_DIR: "${{ github.workspace }}\\selective_build_stat"
|
||||
SCCACHE_AZURE_KEY_PREFIX: windows2022_x86_64_cc_Release
|
||||
steps:
|
||||
- name: Clone OpenVINO
|
||||
uses: actions/checkout@v4
|
||||
@@ -221,10 +261,10 @@ jobs:
|
||||
repository: 'openvinotoolkit/testdata'
|
||||
path: 'testdata'
|
||||
lfs: 'true'
|
||||
ref: 'releases/2023/2'
|
||||
ref: 'master'
|
||||
|
||||
- name: Download selective build statistics package
|
||||
uses: actions/download-artifact@v3
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: openvino_selective_build_stat
|
||||
path: ${{ env.SELECTIVE_BUILD_STAT_DIR }}
|
||||
@@ -232,6 +272,18 @@ jobs:
|
||||
- name: Extract selective build statistics package
|
||||
run: Expand-Archive ${{ env.SELECTIVE_BUILD_STAT_DIR }}/openvino_selective_build_stat.zip -DestinationPath "${{ env.SELECTIVE_BUILD_STAT_DIR }}"
|
||||
|
||||
- name: Setup Python ${{ env.PYTHON_VERSION }}
|
||||
uses: ./openvino/.github/actions/setup_python
|
||||
with:
|
||||
version: ${{ env.PYTHON_VERSION }}
|
||||
should-setup-pip-paths: 'false'
|
||||
self-hosted-runner: 'false'
|
||||
|
||||
- name: Install sccache
|
||||
uses: mozilla-actions/sccache-action@v0.0.3
|
||||
with:
|
||||
version: "v0.5.4"
|
||||
|
||||
- name: CMake configure - CC ON
|
||||
run: |
|
||||
cmake `
|
||||
@@ -250,9 +302,15 @@ jobs:
|
||||
-S ${{ env.OPENVINO_REPO }} `
|
||||
-B ${{ env.BUILD_DIR }}
|
||||
|
||||
- name: Clean sccache stats
|
||||
run: '& "$Env:SCCACHE_PATH" --zero-stats'
|
||||
|
||||
- name: Cmake build - CC ON
|
||||
run: cmake --build ${{ env.BUILD_DIR }} --parallel --config ${{ env.CMAKE_BUILD_TYPE }} --target benchmark_app
|
||||
|
||||
- name: Show sccache stats
|
||||
run: '& "$Env:SCCACHE_PATH" --show-stats'
|
||||
|
||||
- name: List bin files
|
||||
shell: cmd
|
||||
run: dir ${{ env.OPENVINO_REPO }}\bin\ /s
|
||||
@@ -266,18 +324,20 @@ jobs:
|
||||
CPU_Functional_Tests:
|
||||
name: CPU functional tests
|
||||
needs: Build
|
||||
timeout-minutes: 70
|
||||
defaults:
|
||||
run:
|
||||
shell: pwsh
|
||||
runs-on: windows-latest-8-cores
|
||||
runs-on: aks-win-8-cores-16gb
|
||||
env:
|
||||
OPENVINO_REPO: "${{ github.workspace }}\\openvino"
|
||||
INSTALL_TEST_DIR: "${{ github.workspace }}\\tests_install"
|
||||
PARALLEL_TEST_SCRIPT: "${{ github.workspace }}\\tests_install\\layer_tests_summary\\run_parallel.py"
|
||||
PARALLEL_TEST_CACHE: "${{ github.workspace }}\\tests_install\\test_cache.lst"
|
||||
|
||||
steps:
|
||||
- name: Download OpenVINO tests package
|
||||
uses: actions/download-artifact@v3
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: openvino_tests
|
||||
path: ${{ env.INSTALL_TEST_DIR }}
|
||||
@@ -285,9 +345,20 @@ jobs:
|
||||
- name: Extract OpenVINO tests package
|
||||
run: Expand-Archive ${{ env.INSTALL_TEST_DIR }}/openvino_tests.zip -DestinationPath "${{ env.INSTALL_TEST_DIR }}"
|
||||
|
||||
- uses: actions/setup-python@v4
|
||||
- name: Fetch setup_python action
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
python-version: ${{ env.PYTHON_VERSION }}
|
||||
sparse-checkout: |
|
||||
.github/actions/setup_python/action.yml
|
||||
sparse-checkout-cone-mode: false
|
||||
path: 'openvino'
|
||||
|
||||
- name: Setup Python ${{ env.PYTHON_VERSION }}
|
||||
uses: ./openvino/.github/actions/setup_python
|
||||
with:
|
||||
version: ${{ env.PYTHON_VERSION }}
|
||||
should-setup-pip-paths: 'false'
|
||||
self-hosted-runner: 'false'
|
||||
|
||||
- name: Install python dependencies for run_parallel.py
|
||||
run: python3 -m pip install -r ${{ env.INSTALL_TEST_DIR }}/layer_tests_summary/requirements.txt
|
||||
|
||||
3
.gitignore
vendored
3
.gitignore
vendored
@@ -7,7 +7,7 @@ cmake-build*
|
||||
!__init__.py
|
||||
!__main__.py
|
||||
# and sphinx documentation folders
|
||||
!docs/_*
|
||||
!docs/sphinx_setup/_*
|
||||
|
||||
# developer tools
|
||||
*.idea
|
||||
@@ -61,3 +61,4 @@ __pycache__
|
||||
/tools/mo/*.svg
|
||||
/src/plugins/intel_cpu/tools/commit_slider/*.json
|
||||
/src/plugins/intel_cpu/tools/commit_slider/slider_cache/*
|
||||
.github/GITHUB_OUTPUT
|
||||
|
||||
@@ -4,8 +4,14 @@
|
||||
|
||||
OpenVINO™ is always looking for opportunities to improve and your contributions
|
||||
play a big role in this process. There are several ways you can make the
|
||||
product better:
|
||||
product better.
|
||||
|
||||
# Table of Contents
|
||||
1. [Forms of contribution](#Forms-of-contribution)
|
||||
2. [Technical guide](#Technical-guide)
|
||||
|
||||
|
||||
## Forms of contribution
|
||||
|
||||
### Provide Feedback
|
||||
|
||||
@@ -32,7 +38,7 @@ product better:
|
||||
If you want to help improving OpenVINO, choose one of the issues reported in
|
||||
[GitHub Issue Tracker](https://github.com/openvinotoolkit/openvino/issues) and
|
||||
[create a Pull Request](./CONTRIBUTING_PR.md) addressing it. Consider one of the
|
||||
tasks listed as [first-time contributions](https://github.com/openvinotoolkit/openvino/issues/17502).
|
||||
tasks listed as [first-time contributions](https://github.com/orgs/openvinotoolkit/projects/3).
|
||||
If the feature you want to develop is more complex or not well defined by the reporter,
|
||||
it is always a good idea to [discuss it](https://github.com/openvinotoolkit/openvino/discussions)
|
||||
with OpenVINO developers first. Before creating a new PR, check if nobody is already
|
||||
@@ -81,6 +87,66 @@ product better:
|
||||
share your expertise with the community. Check GitHub Discussions and
|
||||
Issues to see if you can help someone.
|
||||
|
||||
## Technical guide
|
||||
|
||||
This section lists all the necessary steps required to set up your environment, build OpenVINO locally, and run tests for specific components. It's a perfect place to start when you have just picked a Good First Issue and are wondering how to start working on it.
|
||||
|
||||
Keep in mind that we are here to help - **do not hesitate to ask the development team if something is not clear**. Such questions allow us to keep improving our documentation.
|
||||
|
||||
### 1. Prerequisites
|
||||
|
||||
You can start with the following links:
|
||||
- [What is OpenVINO?](https://github.com/openvinotoolkit/openvino#what-is-openvino-toolkit)
|
||||
- [OpenVINO architecture](https://github.com/openvinotoolkit/openvino/blob/master/src/docs/architecture.md)
|
||||
- [User documentation](https://docs.openvino.ai/)
|
||||
- [Blog post on contributing to OpenVINO](https://medium.com/openvino-toolkit/how-to-contribute-to-an-ai-open-source-project-c741f48e009e)
|
||||
- [Pick up a Good First Issue](https://github.com/orgs/openvinotoolkit/projects/3)
|
||||
|
||||
### 2. Building the project
|
||||
|
||||
In order to build the project, follow the [build instructions for your specific OS](https://github.com/openvinotoolkit/openvino/blob/master/docs/dev/build.md).
|
||||
|
||||
### 3. Familiarize yourself with the component you'll be working with
|
||||
|
||||
Choose the component your Good First Issue is related to. You can run tests to make sure it works correctly.
|
||||
|
||||
##### APIs
|
||||
- [C API](https://github.com/openvinotoolkit/openvino/tree/master/src/bindings/c)
|
||||
- [Core](https://github.com/openvinotoolkit/openvino/tree/master/src/core)
|
||||
- [Python API](https://github.com/openvinotoolkit/openvino/tree/master/src/bindings/python)
|
||||
|
||||
##### Frontends
|
||||
- [IR Frontend](https://github.com/openvinotoolkit/openvino/tree/master/src/frontends/ir)
|
||||
- [ONNX Frontend](https://github.com/openvinotoolkit/openvino/tree/master/src/frontends/onnx)
|
||||
- [PaddlePaddle Frontend](https://github.com/openvinotoolkit/openvino/tree/master/src/frontends/paddle)
|
||||
- [PyTorch Frontend](https://github.com/openvinotoolkit/openvino/tree/master/src/frontends/pytorch)
|
||||
- [TensorFlow Frontend](https://github.com/openvinotoolkit/openvino/tree/master/src/frontends/tensorflow)
|
||||
|
||||
##### Plugins
|
||||
- [Auto plugin](https://github.com/openvinotoolkit/openvino/blob/master/src/plugins/auto)
|
||||
- [CPU plugin](https://github.com/openvinotoolkit/openvino/blob/master/src/plugins/intel_cpu)
|
||||
- [GPU plugin](https://github.com/openvinotoolkit/openvino/blob/master/src/plugins/intel_gpu)
|
||||
- [Hetero plugin](https://github.com/openvinotoolkit/openvino/blob/master/src/plugins/hetero)
|
||||
- [Template plugin](https://github.com/openvinotoolkit/openvino/tree/master/src/plugins/template)
|
||||
|
||||
##### Tools
|
||||
- [Benchmark Tool](https://github.com/openvinotoolkit/openvino/tree/master/tools/benchmark_tool)
|
||||
- [Model Optimizer](https://github.com/openvinotoolkit/openvino/tree/master/tools/mo)
|
||||
|
||||
##### Others
|
||||
- [Documentation](https://github.com/openvinotoolkit/openvino/blob/master/CONTRIBUTING_DOCS.md)
|
||||
|
||||
### 3. Start working on your Good First Issue
|
||||
|
||||
Use the issue description and locally built OpenVINO to complete the task. Remember that you can always ask users tagged in the "Contact points" section for help!
|
||||
|
||||
### 4. Submit a PR with your changes
|
||||
|
||||
Follow our [Good Pull Request guidelines](https://github.com/openvinotoolkit/openvino/blob/master/CONTRIBUTING_PR.md).
|
||||
|
||||
### 5. Wait for a review
|
||||
|
||||
We'll make sure to review your Pull Request as soon as possible and provide you with our feedback. You can expect a merge once your changes are validated with automatic tests and approved by maintainers.
|
||||
|
||||
## License
|
||||
|
||||
|
||||
@@ -87,11 +87,6 @@ function(ov_set_temp_directory temp_variable source_tree_dir)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
macro(set_temp_directory)
|
||||
message(WARNING "'set_temp_directory' is deprecated. Please, use 'ov_set_temp_directory'")
|
||||
ov_set_temp_directory(${ARGV})
|
||||
endmacro()
|
||||
|
||||
#
|
||||
# For cross-compilation
|
||||
#
|
||||
@@ -294,11 +289,6 @@ function(ov_mark_target_as_cc TARGET_NAME)
|
||||
add_dependencies(${TARGET_NAME} conditional_compilation_gen)
|
||||
endfunction()
|
||||
|
||||
function(ie_mark_target_as_cc TARGET_NAME)
|
||||
message(WARNING "This function is deprecated. Please use ov_mark_target_as_cc(TARGET_NAME) instead.")
|
||||
ov_mark_target_as_cc(${TARGET_NAME})
|
||||
endfunction()
|
||||
|
||||
include(python_requirements)
|
||||
|
||||
# Code style utils
|
||||
|
||||
@@ -181,15 +181,3 @@ function(ov_add_test_target)
|
||||
COMPONENT ${ARG_COMPONENT}
|
||||
EXCLUDE_FROM_ALL)
|
||||
endfunction()
|
||||
|
||||
# deprecated
|
||||
|
||||
function(addIeTarget)
|
||||
message(WARNING "'addIeTarget' is deprecated, please, use 'ov_add_target' instead")
|
||||
ov_add_target(${ARGV})
|
||||
endfunction()
|
||||
|
||||
function(addIeTargetTest)
|
||||
message(WARNING "'addIeTargetTest' is deprecated, please, use 'ov_add_test_target' instead")
|
||||
ov_add_test_target(${ARGV})
|
||||
endfunction()
|
||||
|
||||
@@ -196,10 +196,3 @@ endfunction()
|
||||
function(ov_add_api_validator_post_build_step)
|
||||
_ov_add_api_validator_post_build_step(${ARGN})
|
||||
endfunction()
|
||||
|
||||
# deprecated
|
||||
|
||||
function(ie_add_api_validator_post_build_step)
|
||||
message(WARNING "'ie_add_api_validator_post_build_step' is deprecated, use 'ov_add_api_validator_post_build_step' instead")
|
||||
_ov_add_api_validator_post_build_step(${ARGN})
|
||||
endfunction()
|
||||
|
||||
@@ -130,8 +130,3 @@ function(ov_add_clang_format_target TARGET_NAME)
|
||||
add_dependencies(clang_format_check_all ${TARGET_NAME})
|
||||
add_dependencies(clang_format_fix_all ${TARGET_NAME}_fix)
|
||||
endfunction()
|
||||
|
||||
function(add_clang_format_target)
|
||||
message(WARNING "add_clang_format_target is deprecated, use ov_add_clang_format_target instead")
|
||||
ov_add_clang_format_target(${ARGV})
|
||||
endfunction()
|
||||
|
||||
@@ -32,11 +32,6 @@ macro(ov_disable_deprecated_warnings)
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${ov_c_cxx_deprecated}")
|
||||
endmacro()
|
||||
|
||||
macro(disable_deprecated_warnings)
|
||||
message(WARNING "'disable_deprecated_warnings' is deprecated, use 'ov_disable_deprecated_warnings' instead")
|
||||
ov_disable_deprecated_warnings()
|
||||
endmacro()
|
||||
|
||||
#
|
||||
# ov_deprecated_no_errors()
|
||||
#
|
||||
@@ -125,7 +120,7 @@ macro(ov_avx2_optimization_flags flags)
|
||||
set(${flags} -xCORE-AVX2)
|
||||
endif()
|
||||
elseif(OV_COMPILER_IS_CLANG OR CMAKE_COMPILER_IS_GNUCXX)
|
||||
set(${flags} -mavx2 -mfma)
|
||||
set(${flags} -mavx2 -mfma -mf16c)
|
||||
else()
|
||||
message(WARNING "Unsupported CXX compiler ${CMAKE_CXX_COMPILER_ID}")
|
||||
endif()
|
||||
@@ -147,7 +142,7 @@ macro(ov_avx512_optimization_flags flags)
|
||||
set(${flags} -xCOMMON-AVX512)
|
||||
endif()
|
||||
elseif(OV_COMPILER_IS_CLANG OR CMAKE_COMPILER_IS_GNUCXX)
|
||||
set(${flags} -mavx512f -mfma)
|
||||
set(${flags} -mavx512f -mfma -mf16c)
|
||||
else()
|
||||
message(WARNING "Unsupported CXX compiler ${CMAKE_CXX_COMPILER_ID}")
|
||||
endif()
|
||||
@@ -213,16 +208,6 @@ function(ov_disable_all_warnings)
|
||||
endforeach()
|
||||
endfunction()
|
||||
|
||||
#
|
||||
# ie_enable_lto()
|
||||
#
|
||||
# Enables Link Time Optimization compilation
|
||||
#
|
||||
macro(ie_enable_lto)
|
||||
message(WARNING "'ie_enable_lto' is deprecated, set 'INTERPROCEDURAL_OPTIMIZATION_RELEASE' target property instead")
|
||||
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELEASE ON)
|
||||
endmacro()
|
||||
|
||||
#
|
||||
# ov_add_compiler_flags(<flag1 [flag2 flag3 ...>])
|
||||
#
|
||||
@@ -235,11 +220,6 @@ macro(ov_add_compiler_flags)
|
||||
endforeach()
|
||||
endmacro()
|
||||
|
||||
macro(ie_add_compiler_flags)
|
||||
message(WARNING "'ie_add_compiler_flags' is deprecated, use 'ov_add_compiler_flags' instead")
|
||||
ov_add_compiler_flags(${ARGN})
|
||||
endmacro()
|
||||
|
||||
#
|
||||
# ov_force_include(<target> <PUBLIC | PRIVATE | INTERFACE> <header file>)
|
||||
#
|
||||
|
||||
@@ -19,10 +19,3 @@ function(ov_build_target_faster TARGET_NAME)
|
||||
target_precompile_headers(${TARGET_NAME} ${FASTER_BUILD_PCH})
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
# deprecated
|
||||
|
||||
function(ie_faster_build)
|
||||
message(WARNING "ie_faster_build is deprecated, use ov_build_target_faster instead")
|
||||
ov_build_target_faster(${ARGV})
|
||||
endfunction()
|
||||
|
||||
@@ -57,10 +57,10 @@ function(ov_generate_frontends_hpp)
|
||||
# for some reason dependency on source files does not work
|
||||
# so, we have to use explicit target and make it dependency for frontend_common
|
||||
add_custom_target(_ov_frontends_hpp DEPENDS ${ov_frontends_hpp})
|
||||
add_dependencies(frontend_common_obj _ov_frontends_hpp)
|
||||
add_dependencies(openvino_frontend_common_obj _ov_frontends_hpp)
|
||||
|
||||
# add dependency for object files
|
||||
get_target_property(sources frontend_common_obj SOURCES)
|
||||
get_target_property(sources openvino_frontend_common_obj SOURCES)
|
||||
foreach(source IN LISTS sources)
|
||||
if("${source}" MATCHES "\\$\\<TARGET_OBJECTS\\:([A-Za-z0-9_]*)\\>")
|
||||
# object library
|
||||
@@ -80,6 +80,25 @@ endfunction()
|
||||
unset(protobuf_lite_installed CACHE)
|
||||
unset(protobuf_installed CACHE)
|
||||
|
||||
#
|
||||
# ov_frontend_group_files(<ROOT_DIR> # Root path for scanning
|
||||
# <REL_PATH> # Relative path (in ROOT_DIR) is used for scanning
|
||||
# <FILE_EXT>) # File extension for grouping
|
||||
#
|
||||
macro(ov_frontend_group_files root_dir rel_path file_mask)
|
||||
file(GLOB items RELATIVE ${root_dir}/${rel_path} ${root_dir}/${rel_path}/*)
|
||||
foreach(item ${items})
|
||||
if(IS_DIRECTORY ${root_dir}/${rel_path}/${item})
|
||||
ov_frontend_group_files(${root_dir} ${rel_path}/${item} ${file_mask})
|
||||
else()
|
||||
if(${item} MATCHES ".*\.${file_mask}$")
|
||||
string(REPLACE "/" "\\" groupname ${rel_path})
|
||||
source_group(${groupname} FILES ${root_dir}/${rel_path}/${item})
|
||||
endif()
|
||||
endif()
|
||||
endforeach()
|
||||
endmacro()
|
||||
|
||||
#
|
||||
# ov_add_frontend(NAME <IR|ONNX|...>
|
||||
# FILEDESCRIPTION <description> # used on Windows to describe DLL file
|
||||
@@ -121,7 +140,8 @@ macro(ov_add_frontend)
|
||||
# Create named folders for the sources within the .vcproj
|
||||
# Empty name lists them directly under the .vcproj
|
||||
|
||||
source_group("src" FILES ${LIBRARY_SRC})
|
||||
ov_frontend_group_files(${frontend_root_dir}/ "src" "cpp")
|
||||
ov_frontend_group_files(${frontend_root_dir}/ "src" "proto")
|
||||
source_group("include" FILES ${LIBRARY_HEADERS})
|
||||
source_group("public include" FILES ${LIBRARY_PUBLIC_HEADERS})
|
||||
|
||||
@@ -200,6 +220,7 @@ macro(ov_add_frontend)
|
||||
PUBLIC
|
||||
$<BUILD_INTERFACE:${${TARGET_NAME}_INCLUDE_DIR}>
|
||||
PRIVATE
|
||||
$<TARGET_PROPERTY:openvino::frontend::common,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
${frontend_root_dir}/src
|
||||
${CMAKE_CURRENT_BINARY_DIR})
|
||||
|
||||
@@ -322,6 +343,7 @@ macro(ov_add_frontend)
|
||||
install(DIRECTORY ${${TARGET_NAME}_INCLUDE_DIR}/openvino
|
||||
DESTINATION ${FRONTEND_INSTALL_INCLUDE}
|
||||
COMPONENT ${dev_component}
|
||||
${OV_CPACK_COMP_CORE_DEV_EXCLUDE_ALL}
|
||||
FILES_MATCHING PATTERN "*.hpp")
|
||||
|
||||
# public target name
|
||||
|
||||
@@ -32,6 +32,8 @@ if(ENABLE_NCC_STYLE)
|
||||
set(clang_version 14)
|
||||
elseif(Python3_VERSION_MINOR EQUAL 11)
|
||||
set(clang_version 14)
|
||||
elseif(Python3_VERSION_MINOR EQUAL 12)
|
||||
set(clang_version 15)
|
||||
else()
|
||||
message(WARNING "Cannot suggest clang package for python ${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR}")
|
||||
endif()
|
||||
|
||||
@@ -18,7 +18,7 @@ VariableReference: '^\w+$'
|
||||
|
||||
EnumName: '^[A-Z][\w]+$'
|
||||
# excepts element_type
|
||||
EnumConstantName: '^([A-Z\d_]+|undefined|dynamic|boolean|bf16|f16|f32|f64|i4|i8|i16|i32|i64|u1|u4|u8|u16|u32|u64|nf4|asymmetric|align_corners|round_prefer_floor|round_prefer_ceil|floor|ceil|simple|nearest|linear|linear_onnx|cubic|area|scales|sizes|half_pixel|tf_half_pixel_for_nn|pytorch_half_pixel|asymetric)$'
|
||||
EnumConstantName: '^([A-Z\d_]+|undefined|dynamic|boolean|bf16|f16|f32|f64|i4|i8|i16|i32|i64|u1|u4|u8|u16|u32|u64|nf4|string|asymmetric|align_corners|round_prefer_floor|round_prefer_ceil|floor|ceil|simple|nearest|linear|linear_onnx|cubic|area|scales|sizes|half_pixel|tf_half_pixel_for_nn|pytorch_half_pixel|asymetric)$'
|
||||
# TODO: align
|
||||
UsingDeclaration: '^.*$'
|
||||
TypedefName: '^.*$'
|
||||
|
||||
@@ -2,4 +2,5 @@ clang==12.0.1; python_version == '3.8'
|
||||
clang==12.0.1; python_version == '3.9'
|
||||
clang==14.0; python_version == '3.10'
|
||||
clang==14.0; python_version == '3.11'
|
||||
clang==15.0.7; python_version == '3.12'
|
||||
pyyaml
|
||||
@@ -55,20 +55,3 @@ function (ov_print_enabled_features)
|
||||
endforeach()
|
||||
message(STATUS "")
|
||||
endfunction()
|
||||
|
||||
# deprecated
|
||||
|
||||
macro (ie_option variable description value)
|
||||
message(WARNING "'ie_option' is deprecated, please, use 'ov_option' instead")
|
||||
ov_option(${variable} "${description}" ${value})
|
||||
endmacro()
|
||||
|
||||
macro(ie_dependent_option variable description def_value condition fallback_value)
|
||||
message(WARNING "'ie_dependent_option' is deprecated, please, use 'ov_dependent_option' instead")
|
||||
ov_dependent_option(${variable} "${description}" ${def_value} "${condition}" ${fallback_value})
|
||||
endmacro()
|
||||
|
||||
function(print_enabled_features)
|
||||
message(WARNING "'print_enabled_features' is deprecated, please, use 'ov_print_enabled_features' instead")
|
||||
ov_print_enabled_features()
|
||||
endfunction()
|
||||
|
||||
@@ -241,10 +241,3 @@ macro(ov_cpack)
|
||||
|
||||
include(CPack)
|
||||
endmacro()
|
||||
|
||||
# deprecated
|
||||
|
||||
macro(ie_cpack)
|
||||
message(WARNING "'ie_cpack' is deprecated. Please, use 'ov_cpack'")
|
||||
ov_cpack(${ARGV})
|
||||
endmacro()
|
||||
|
||||
@@ -135,9 +135,6 @@ function(ov_add_plugin)
|
||||
install(TARGETS ${OV_PLUGIN_NAME}
|
||||
LIBRARY DESTINATION ${OV_CPACK_PLUGINSDIR}
|
||||
COMPONENT ${install_component})
|
||||
install(TARGETS ${OV_PLUGIN_NAME}
|
||||
LIBRARY DESTINATION ${OV_CPACK_PLUGINSDIR}
|
||||
COMPONENT ${install_component})
|
||||
else()
|
||||
ov_install_static_lib(${OV_PLUGIN_NAME} ${OV_CPACK_COMP_CORE})
|
||||
endif()
|
||||
@@ -167,11 +164,6 @@ function(ov_add_plugin)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
function(ie_add_plugin)
|
||||
message(WARNING "'ie_add_plugin' is deprecated. Please, use 'ov_add_plugin'")
|
||||
ov_add_plugin(${ARGN})
|
||||
endfunction()
|
||||
|
||||
#
|
||||
# ov_register_in_plugins_xml(MAIN_TARGET <main target name>)
|
||||
#
|
||||
@@ -263,14 +255,6 @@ macro(ov_register_plugins)
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
#
|
||||
# ie_register_plugins()
|
||||
#
|
||||
macro(ie_register_plugins)
|
||||
message(WARNING "'ie_register_plugins' is deprecated. Please, use 'ov_register_plugins'")
|
||||
ov_register_plugins(${ARGN})
|
||||
endmacro()
|
||||
|
||||
#
|
||||
# ov_target_link_plugins(<TARGET_NAME>)
|
||||
#
|
||||
|
||||
@@ -10,8 +10,11 @@ function(ov_branch_name VAR REPO_ROOT)
|
||||
COMMAND ${GIT_EXECUTABLE} rev-parse --abbrev-ref HEAD
|
||||
WORKING_DIRECTORY ${REPO_ROOT}
|
||||
OUTPUT_VARIABLE GIT_BRANCH
|
||||
RESULT_VARIABLE EXIT_CODE
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
set (${VAR} ${GIT_BRANCH} PARENT_SCOPE)
|
||||
if(EXIT_CODE EQUAL 0)
|
||||
set(${VAR} ${GIT_BRANCH} PARENT_SCOPE)
|
||||
endif()
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
@@ -21,22 +24,31 @@ function(ov_commit_hash VAR REPO_ROOT)
|
||||
COMMAND ${GIT_EXECUTABLE} rev-parse --short=11 HEAD
|
||||
WORKING_DIRECTORY ${REPO_ROOT}
|
||||
OUTPUT_VARIABLE GIT_COMMIT_HASH
|
||||
RESULT_VARIABLE EXIT_CODE
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
set (${VAR} ${GIT_COMMIT_HASH} PARENT_SCOPE)
|
||||
if(EXIT_CODE EQUAL 0)
|
||||
set(${VAR} ${GIT_COMMIT_HASH} PARENT_SCOPE)
|
||||
endif()
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
function(ov_commit_number VAR REPO_ROOT)
|
||||
set(GIT_COMMIT_NUMBER_FOUND OFF)
|
||||
if(GIT_FOUND)
|
||||
execute_process(
|
||||
COMMAND ${GIT_EXECUTABLE} rev-list --count --first-parent HEAD
|
||||
WORKING_DIRECTORY ${REPO_ROOT}
|
||||
OUTPUT_VARIABLE GIT_COMMIT_NUMBER
|
||||
RESULT_VARIABLE EXIT_CODE
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
set (${VAR} ${GIT_COMMIT_NUMBER} PARENT_SCOPE)
|
||||
else()
|
||||
if(EXIT_CODE EQUAL 0)
|
||||
set(GIT_COMMIT_NUMBER_FOUND ON)
|
||||
set(${VAR} ${GIT_COMMIT_NUMBER} PARENT_SCOPE)
|
||||
endif()
|
||||
endif()
|
||||
if(NOT GIT_COMMIT_NUMBER_FOUND)
|
||||
# set zeros since git is not available
|
||||
set (${VAR} "000" PARENT_SCOPE)
|
||||
set(${VAR} "000" PARENT_SCOPE)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
@@ -140,7 +152,7 @@ macro(ov_parse_ci_build_number repo_root)
|
||||
ov_branch_name(GIT_BRANCH "${repo_root}")
|
||||
ov_commit_hash(GIT_COMMIT_HASH "${repo_root}")
|
||||
|
||||
if(NOT GIT_BRANCH STREQUAL "master")
|
||||
if(NOT GIT_BRANCH MATCHES "^(master|HEAD)$")
|
||||
set(GIT_BRANCH_POSTFIX "-${GIT_BRANCH}")
|
||||
endif()
|
||||
|
||||
@@ -154,28 +166,6 @@ macro(ov_parse_ci_build_number repo_root)
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
macro (addVersionDefines FILE)
|
||||
message(WARNING "'addVersionDefines' is deprecated. Please, use 'ov_add_version_defines'")
|
||||
|
||||
set(__version_file ${FILE})
|
||||
if(NOT IS_ABSOLUTE ${__version_file})
|
||||
set(__version_file "${CMAKE_CURRENT_SOURCE_DIR}/${__version_file}")
|
||||
endif()
|
||||
if(NOT EXISTS ${__version_file})
|
||||
message(FATAL_ERROR "${FILE} does not exists in current source directory")
|
||||
endif()
|
||||
foreach (VAR ${ARGN})
|
||||
if (DEFINED ${VAR} AND NOT "${${VAR}}" STREQUAL "")
|
||||
set_property(
|
||||
SOURCE ${__version_file}
|
||||
APPEND
|
||||
PROPERTY COMPILE_DEFINITIONS
|
||||
${VAR}="${${VAR}}")
|
||||
endif()
|
||||
endforeach()
|
||||
unset(__version_file)
|
||||
endmacro()
|
||||
|
||||
macro (ov_add_version_defines FILE TARGET)
|
||||
set(__version_file ${FILE})
|
||||
if(NOT IS_ABSOLUTE ${__version_file})
|
||||
|
||||
@@ -51,10 +51,3 @@ function(ov_target_link_whole_archive targetName)
|
||||
target_link_libraries(${targetName} PRIVATE ${libs})
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
# deprecated
|
||||
|
||||
function(ieTargetLinkWholeArchive)
|
||||
message(WARNING "'ieTargetLinkWholeArchive' is deprecated, use 'ov_target_link_whole_archive' instead")
|
||||
ov_target_link_whole_archive(${ARGN})
|
||||
endfunction()
|
||||
|
||||
@@ -2,38 +2,6 @@
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#
|
||||
|
||||
function(ie_generate_dev_package_config)
|
||||
# dummy check that OpenCV is here
|
||||
find_package(OpenCV QUIET)
|
||||
if(OpenCV_VERSION VERSION_LESS 3.0)
|
||||
set(OpenCV_FOUND OFF)
|
||||
endif()
|
||||
|
||||
# export all targets with prefix and use them during extra modules build
|
||||
export(TARGETS ${_OPENVINO_DEVELOPER_PACKAGE_TARGETS} NAMESPACE IE::
|
||||
APPEND FILE "${CMAKE_BINARY_DIR}/inference_engine_developer_package_targets.cmake")
|
||||
add_custom_target(ie_dev_targets DEPENDS ${_OPENVINO_DEVELOPER_PACKAGE_TARGETS})
|
||||
|
||||
set(PATH_VARS "OpenVINO_SOURCE_DIR")
|
||||
if(ENABLE_SAMPLES OR ENABLE_TESTS)
|
||||
list(APPEND PATH_VARS "gflags_BINARY_DIR")
|
||||
# if we've found system gflags
|
||||
if(gflags_DIR)
|
||||
set(gflags_BINARY_DIR "${gflags_DIR}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
configure_package_config_file("${OpenVINO_SOURCE_DIR}/cmake/templates/InferenceEngineDeveloperPackageConfig.cmake.in"
|
||||
"${CMAKE_BINARY_DIR}/InferenceEngineDeveloperPackageConfig.cmake"
|
||||
INSTALL_DESTINATION share # not used
|
||||
PATH_VARS ${PATH_VARS}
|
||||
NO_CHECK_REQUIRED_COMPONENTS_MACRO)
|
||||
|
||||
configure_file("${OpenVINO_SOURCE_DIR}/cmake/templates/InferenceEngineConfig-version.cmake.in"
|
||||
"${CMAKE_BINARY_DIR}/InferenceEngineDeveloperPackageConfig-version.cmake"
|
||||
@ONLY)
|
||||
endfunction()
|
||||
|
||||
function(ov_generate_dev_package_config)
|
||||
# dummy check that OpenCV is here
|
||||
find_package(OpenCV QUIET)
|
||||
@@ -207,7 +175,6 @@ endfunction()
|
||||
|
||||
# this OpenVINODeveloperPackageConfig.cmake is not used during extra modules build
|
||||
# since it's generated after modules are configured
|
||||
ie_generate_dev_package_config()
|
||||
ov_generate_dev_package_config()
|
||||
|
||||
# extra modules must be registered after inference_engine library
|
||||
|
||||
@@ -92,6 +92,7 @@ macro(ov_cpack_settings)
|
||||
2022.3.0 2022.3.1 2022.3.2 2022.3.3 2022.3.4 2022.3.5
|
||||
2023.0.0 2023.0.1 2023.0.2 2023.0.3
|
||||
2023.1.0
|
||||
2023.2.0
|
||||
)
|
||||
|
||||
#
|
||||
@@ -316,7 +317,7 @@ macro(ov_cpack_settings)
|
||||
list(APPEND CPACK_COMPONENT_PYOPENVINO_PACKAGE_${pyversion}_DEPENDS ${installed_plugins})
|
||||
list(APPEND CPACK_COMPONENT_PYOPENVINO_PACKAGE_${pyversion}_DEPENDS ${frontends})
|
||||
|
||||
set(CPACK_DEBIAN_PYOPENVINO_PACKAGE_${pyversion}_PACKAGE_NAME "python3-openvino")
|
||||
set(CPACK_DEBIAN_PYOPENVINO_PACKAGE_${pyversion}_PACKAGE_NAME "python3-openvino-${cpack_name_ver}")
|
||||
set(python_package "${CPACK_DEBIAN_PYOPENVINO_PACKAGE_${pyversion}_PACKAGE_NAME} (= ${cpack_full_ver})")
|
||||
set(CPACK_DEBIAN_PYOPENVINO_PACKAGE_${pyversion}_PACKAGE_DEPENDS "python3, python3-numpy")
|
||||
|
||||
@@ -367,6 +368,7 @@ macro(ov_cpack_settings)
|
||||
set(python_samples_package "${CPACK_DEBIAN_PYTHON_SAMPLES_PACKAGE_NAME} (= ${cpack_full_ver})")
|
||||
set(CPACK_DEBIAN_PYTHON_SAMPLES_PACKAGE_DEPENDS "python3, ${python_package}")
|
||||
set(CPACK_DEBIAN_PYTHON_SAMPLES_PACKAGE_ARCHITECTURE "all")
|
||||
ov_debian_generate_conflicts(${OV_CPACK_COMP_PYTHON_SAMPLES} ${conflicting_versions})
|
||||
set(python_samples_copyright "generic")
|
||||
endif()
|
||||
|
||||
|
||||
@@ -78,6 +78,7 @@ macro(ov_cpack_settings)
|
||||
2022.3.0 2022.3.1 2022.3.2 2022.3.3 2022.3.4 2022.3.5
|
||||
2023.0.0 2023.0.1 2023.0.2 2023.0.3
|
||||
2023.1.0
|
||||
2023.2.0
|
||||
)
|
||||
|
||||
find_host_program(rpmlint_PROGRAM NAMES rpmlint DOC "Path to rpmlint")
|
||||
@@ -278,7 +279,7 @@ macro(ov_cpack_settings)
|
||||
set(CPACK_COMPONENT_PYOPENVINO_PACKAGE_${pyversion_upper}_DESCRIPTION "OpenVINO Python API")
|
||||
set(CPACK_RPM_PYOPENVINO_PACKAGE_${pyversion_upper}_PACKAGE_REQUIRES
|
||||
"${core_package}, ${frontend_packages}, ${plugin_packages}, python3, python3-numpy")
|
||||
set(CPACK_RPM_PYOPENVINO_PACKAGE_${pyversion_upper}_PACKAGE_NAME "python3-openvino")
|
||||
set(CPACK_RPM_PYOPENVINO_PACKAGE_${pyversion_upper}_PACKAGE_NAME "python3-openvino-${cpack_full_ver}")
|
||||
set(python_package "${CPACK_RPM_PYOPENVINO_PACKAGE_${pyversion_upper}_PACKAGE_NAME} = ${cpack_full_ver}")
|
||||
set(${python_component}_copyright "generic")
|
||||
|
||||
@@ -328,6 +329,7 @@ macro(ov_cpack_settings)
|
||||
set(CPACK_RPM_PYTHON_SAMPLES_PACKAGE_NAME "openvino-samples-python-${cpack_name_ver}")
|
||||
set(python_samples_package "${CPACK_RPM_PYTHON_SAMPLES_PACKAGE_NAME} = ${cpack_full_ver}")
|
||||
set(CPACK_RPM_PYTHON_SAMPLES_PACKAGE_ARCHITECTURE "noarch")
|
||||
ov_rpm_generate_conflicts(${OV_CPACK_COMP_PYTHON_SAMPLES} ${conflicting_versions})
|
||||
set(python_samples_copyright "generic")
|
||||
|
||||
ov_rpm_add_rpmlint_suppression(${OV_CPACK_COMP_PYTHON_SAMPLES}
|
||||
|
||||
@@ -1,188 +0,0 @@
|
||||
# Copyright (C) 2018-2023 Intel Corporation
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#
|
||||
|
||||
@PACKAGE_INIT@
|
||||
|
||||
include(CMakeFindDependencyMacro)
|
||||
|
||||
message(WARNING "find_package(InferenceEngineDeveloperPackage) is deprecated and will be removed in 2024.0 release. Please, use find_package(OpenVINODeveloperPackage)")
|
||||
|
||||
# TODO: remove after changing [private plugins]
|
||||
set_and_check(OpenVINO_SOURCE_DIR "@OpenVINO_SOURCE_DIR@") # NPU
|
||||
set_and_check(OpenVINO_MAIN_SOURCE_DIR "@OpenVINO_SOURCE_DIR@") # NPU
|
||||
|
||||
# Variables to export in plugin's projects
|
||||
|
||||
set(ov_options "@OV_OPTIONS@")
|
||||
list(APPEND ov_options CMAKE_CXX_COMPILER_LAUNCHER CMAKE_C_COMPILER_LAUNCHER
|
||||
CMAKE_CXX_LINKER_LAUNCHER CMAKE_C_LINKER_LAUNCHER
|
||||
CMAKE_INSTALL_PREFIX CPACK_GENERATOR)
|
||||
|
||||
if(APPLE)
|
||||
list(APPEND ov_options CMAKE_OSX_ARCHITECTURES CMAKE_OSX_DEPLOYMENT_TARGET)
|
||||
endif()
|
||||
|
||||
get_property(_OV_GENERATOR_MULTI_CONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
|
||||
if(_OV_GENERATOR_MULTI_CONFIG)
|
||||
list(APPEND ov_options CMAKE_CONFIGURATION_TYPES)
|
||||
if(CMAKE_GENERATOR MATCHES "^Ninja Multi-Config$")
|
||||
list(APPEND ov_options CMAKE_DEFAULT_BUILD_TYPE)
|
||||
endif()
|
||||
else()
|
||||
list(APPEND ov_options CMAKE_BUILD_TYPE)
|
||||
endif()
|
||||
unset(_OV_GENERATOR_MULTI_CONFIG)
|
||||
|
||||
file(TO_CMAKE_PATH "${CMAKE_CURRENT_LIST_DIR}" cache_path)
|
||||
|
||||
message(STATUS "The following CMake options are exported from Inference Engine Developer package")
|
||||
message(" ")
|
||||
foreach(option IN LISTS ov_options)
|
||||
if(NOT DEFINED "${option}")
|
||||
load_cache("${cache_path}" READ_WITH_PREFIX "" ${option})
|
||||
endif()
|
||||
message(" ${option}: ${${option}}")
|
||||
endforeach()
|
||||
message(" ")
|
||||
|
||||
# for samples in 3rd party projects
|
||||
if(ENABLE_SAMPLES)
|
||||
set_and_check(gflags_DIR "@gflags_BINARY_DIR@")
|
||||
endif()
|
||||
|
||||
# Disable warning as error for private components
|
||||
set(CMAKE_COMPILE_WARNING_AS_ERROR OFF)
|
||||
|
||||
#
|
||||
# Content
|
||||
#
|
||||
|
||||
find_dependency(OpenVINODeveloperScripts
|
||||
PATHS "${OpenVINO_SOURCE_DIR}/cmake/developer_package"
|
||||
NO_CMAKE_FIND_ROOT_PATH
|
||||
NO_DEFAULT_PATH)
|
||||
|
||||
find_dependency(InferenceEngine
|
||||
PATHS "${CMAKE_CURRENT_LIST_DIR}"
|
||||
NO_CMAKE_FIND_ROOT_PATH
|
||||
NO_DEFAULT_PATH)
|
||||
|
||||
find_dependency(ngraph
|
||||
PATHS "${CMAKE_CURRENT_LIST_DIR}"
|
||||
NO_CMAKE_FIND_ROOT_PATH
|
||||
NO_DEFAULT_PATH)
|
||||
|
||||
if(TARGET openvino::runtime AND NOT TARGET IE::runtime)
|
||||
add_library(IE::runtime INTERFACE IMPORTED)
|
||||
set_target_properties(IE::runtime PROPERTIES
|
||||
INTERFACE_LINK_LIBRARIES openvino::runtime)
|
||||
endif()
|
||||
|
||||
# WA for cmake: it exports ngraph as IE::ngraph in the IE export list
|
||||
# while we already have ngraph export in its own export list as ngraph::ngraph
|
||||
if(TARGET ngraph::ngraph AND NOT TARGET IE::ngraph)
|
||||
add_library(IE::ngraph INTERFACE IMPORTED)
|
||||
set_target_properties(IE::ngraph PROPERTIES INTERFACE_LINK_LIBRARIES ngraph::ngraph)
|
||||
endif()
|
||||
|
||||
_ov_find_tbb()
|
||||
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/inference_engine_developer_package_targets.cmake")
|
||||
|
||||
if(TARGET IE::ov_core_dev AND NOT TARGET openvino::core::dev)
|
||||
add_library(openvino::core::dev INTERFACE IMPORTED)
|
||||
set_target_properties(openvino::core::dev PROPERTIES
|
||||
INTERFACE_LINK_LIBRARIES IE::ov_core_dev)
|
||||
endif()
|
||||
|
||||
if(TARGET IE::runtime::dev AND NOT TARGET openvino::runtime::dev)
|
||||
add_library(openvino::runtime::dev INTERFACE IMPORTED)
|
||||
set_target_properties(openvino::runtime::dev PROPERTIES
|
||||
INTERFACE_LINK_LIBRARIES IE::runtime::dev)
|
||||
endif()
|
||||
|
||||
if(TARGET IE::reference AND NOT TARGET IE::ngraph_reference)
|
||||
add_library(IE::ngraph_reference INTERFACE IMPORTED)
|
||||
set_target_properties(IE::ngraph_reference PROPERTIES
|
||||
INTERFACE_LINK_LIBRARIES IE::reference)
|
||||
endif()
|
||||
|
||||
if(ENABLE_SYSTEM_PUGIXML)
|
||||
set(_ov_pugixml_pkgconfig_interface "@pugixml_FOUND@")
|
||||
set(_ov_pugixml_cmake_interface "@PugiXML_FOUND@")
|
||||
if(_ov_pugixml_pkgconfig_interface)
|
||||
find_dependency(PkgConfig)
|
||||
elseif(_ov_pugixml_cmake_interface)
|
||||
find_dependency(PugiXML)
|
||||
endif()
|
||||
if(PugiXML_FOUND)
|
||||
set_property(TARGET pugixml PROPERTY IMPORTED_GLOBAL TRUE)
|
||||
add_library(IE::pugixml ALIAS pugixml)
|
||||
elseif(PkgConfig_FOUND)
|
||||
if(${CMAKE_FIND_PACKAGE_NAME}_FIND_QUIETLY)
|
||||
set(pkg_config_quiet_arg QUIET)
|
||||
endif()
|
||||
if(${CMAKE_FIND_PACKAGE_NAME}_FIND_REQUIRED)
|
||||
set(pkg_config_required_arg REQUIRED)
|
||||
endif()
|
||||
|
||||
pkg_search_module(pugixml
|
||||
${pkg_config_quiet_arg}
|
||||
${pkg_config_required_arg}
|
||||
IMPORTED_TARGET GLOBAL
|
||||
pugixml)
|
||||
|
||||
unset(pkg_config_quiet_arg)
|
||||
unset(pkg_config_required_arg)
|
||||
|
||||
if(pugixml_FOUND)
|
||||
add_library(IE::pugixml ALIAS PkgConfig::pugixml)
|
||||
|
||||
# PATCH: on Ubuntu 18.04 pugixml.pc contains incorrect include directories
|
||||
get_target_property(interface_include_dir PkgConfig::pugixml INTERFACE_INCLUDE_DIRECTORIES)
|
||||
if(interface_include_dir AND NOT EXISTS "${interface_include_dir}")
|
||||
set_target_properties(PkgConfig::pugixml PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES "")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# debian 9 case: no cmake, no pkg-config files
|
||||
if(NOT TARGET IE::pugixml)
|
||||
find_library(PUGIXML_LIBRARY NAMES pugixml DOC "Path to pugixml library")
|
||||
if(PUGIXML_LIBRARY)
|
||||
add_library(IE::pugixml INTERFACE IMPORTED GLOBAL)
|
||||
set_target_properties(IE::pugixml PROPERTIES INTERFACE_LINK_LIBRARIES "${PUGIXML_LIBRARY}")
|
||||
else()
|
||||
message(FATAL_ERROR "Failed to find system pugixml in OpenVINO Developer Package")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
set(_ov_nlohmann_json_FOUND "@nlohmann_json_FOUND@")
|
||||
if(_ov_nlohmann_json_FOUND)
|
||||
find_dependency(nlohmann_json)
|
||||
set_target_properties(nlohmann_json::nlohmann_json PROPERTIES IMPORTED_GLOBAL ON)
|
||||
add_library(IE::nlohmann_json ALIAS nlohmann_json::nlohmann_json)
|
||||
endif()
|
||||
unset(_ov_nlohmann_json_FOUND)
|
||||
|
||||
# inherit OpenCV from main IE project if enabled
|
||||
if("@OpenCV_FOUND@")
|
||||
# Use OpenCV_DIR from cache only if user doesn't define OpenCV_DIR
|
||||
if(NOT OpenCV_DIR)
|
||||
load_cache("${cache_path}" READ_WITH_PREFIX "" OpenCV_DIR)
|
||||
endif()
|
||||
find_dependency(OpenCV)
|
||||
endif()
|
||||
|
||||
#
|
||||
# Extra Compile Flags
|
||||
#
|
||||
|
||||
# don't fail on strict compilation options in 3rd party modules
|
||||
ov_dev_package_no_errors()
|
||||
|
||||
# Don't threat deprecated API warnings as errors in 3rd party apps
|
||||
ov_deprecated_no_errors()
|
||||
@@ -1,7 +1,6 @@
|
||||
{
|
||||
"version": "0.5",
|
||||
"requires": [
|
||||
"zlib/1.2.13#97d5730b529b4224045fe7090592d4c1%1692672717.049",
|
||||
"xbyak/6.73#250bc3bc73379f90f255876c1c00a4cd%1691853024.351",
|
||||
"snappy/1.1.10#916523630083f6d855cb2977de8eefb6%1689780661.062",
|
||||
"rapidjson/cci.20220822#8ca51918340f3a21127822258e95ec0f%1663194355.698",
|
||||
@@ -16,7 +15,7 @@
|
||||
"ittapi/3.24.0#9246125f13e7686dee2b0c992b71db94%1682969872.743",
|
||||
"hwloc/2.9.2#1c63e2eccac57048ae226e6c946ebf0e%1688677682.002",
|
||||
"flatbuffers/23.5.26#b153646f6546daab4c7326970b6cd89c%1685838458.449",
|
||||
"ade/0.1.2c#8c03c130df6dc35186b38ba73a40a71d%1694253992.577"
|
||||
"ade/0.1.2d#f225d0a218a7c9fbb81746806c7de53d%1697752528.048"
|
||||
],
|
||||
"build_requires": [
|
||||
"zlib/1.2.13#97d5730b529b4224045fe7090592d4c1%1692672717.049",
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
[requires]
|
||||
ade/0.1.2c
|
||||
ade/0.1.2d
|
||||
onetbb/[>=2021.2.1]
|
||||
pugixml/[>=1.10]
|
||||
protobuf/3.21.12
|
||||
|
||||
@@ -4,187 +4,122 @@
|
||||
|
||||
add_subdirectory(snippets)
|
||||
|
||||
set(LINKCHECKER_PY "" CACHE FILEPATH "Path to linkchecker.py for documentation check dir.")
|
||||
set(ENABLE_OPENVINO_NOTEBOOKS OFF CACHE BOOL "Build with openvino notebooks")
|
||||
set(OMZ_DOCS_DIR "" CACHE PATH "Path to open_model_zoo documentation dir.")
|
||||
set(OTE_DOCS_DIR "" CACHE PATH "Path to training_extensions documentation dir.")
|
||||
set(WORKBENCH_DOCS_DIR "" CACHE PATH "Path to workbench documentation dir.")
|
||||
set(ENABLE_CPP_API OFF CACHE BOOL "Build with C/C++ API.")
|
||||
set(ENABLE_PYTHON_API OFF CACHE BOOL "Build with Python API.")
|
||||
set(ENABLE_NOTEBOOKS OFF CACHE BOOL "Build with openvino notebooks.")
|
||||
set(ENABLE_OMZ OFF CACHE BOOL "Build with open_model_zoo.")
|
||||
set(ENABLE_OVMS OFF CACHE BOOL "Build with ovms.")
|
||||
set(OVMS_DOCS_DIR "" CACHE PATH "Path to model server documentation dir.")
|
||||
set(GRAPH_CSV_DIR "" CACHE PATH "Path to the folder containing csv data for rendering graphs.")
|
||||
|
||||
if(${ENABLE_OVMS} AND (OVMS_DOCS_DIR STREQUAL ""))
|
||||
message( FATAL_ERROR "You want to build OVMS, but OVMS_DOCS_DIR variable is empty." )
|
||||
endif()
|
||||
|
||||
|
||||
function(build_docs)
|
||||
find_package(Doxygen REQUIRED dot)
|
||||
find_package(LATEX REQUIRED)
|
||||
|
||||
find_program(DOXYREST_EXECUTABLE NAMES doxyrest)
|
||||
if (NOT DOXYREST_EXECUTABLE)
|
||||
message(FATAL_ERROR "No doxyrest found. Documentation output is not available")
|
||||
endif()
|
||||
|
||||
set(DOCS_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}")
|
||||
set(DOCS_SOURCE_DIR "${OpenVINO_SOURCE_DIR}/docs")
|
||||
set(SCRIPTS_DIR "${DOCS_SOURCE_DIR}/scripts")
|
||||
|
||||
# markdown docs
|
||||
set(MARKDOWN_INPUT "${DOCS_BUILD_DIR}")
|
||||
|
||||
# Preprocessing scripts
|
||||
set(DOXY_MD_FILTER "${SCRIPTS_DIR}/doxy_md_filter.py")
|
||||
set(PREPARE_XML_SCRIPT "${SCRIPTS_DIR}/prepare_xml.py")
|
||||
set(REMOVE_XML_SCRIPT "${SCRIPTS_DIR}/remove_xml.py")
|
||||
set(FILE_HELPER_SCRIPT "${SCRIPTS_DIR}/filehelper.py")
|
||||
set(COPY_IMAGES_SCRIPT "${SCRIPTS_DIR}/copy_images.py")
|
||||
set(DOC_TEST_DIR "${SCRIPTS_DIR}/tests")
|
||||
set(DOXYGEN_MAPPING_SCRIPT "${SCRIPTS_DIR}/create_mapping.py")
|
||||
set(BREATHE_APIDOC_SCRIPT "${SCRIPTS_DIR}/apidoc.py")
|
||||
|
||||
# out dirs
|
||||
set(XML_OUTPUT "${DOCS_BUILD_DIR}/xml")
|
||||
set(RST_OUTPUT "${DOCS_BUILD_DIR}/rst")
|
||||
# Doxygen/Sphinx setup
|
||||
set(DOXYGEN_XML_OUTPUT "${DOCS_BUILD_DIR}/xml")
|
||||
set(SPHINX_SETUP_DIR "${DOCS_SOURCE_DIR}/sphinx_setup")
|
||||
set(SPHINX_SOURCE_DIR "${DOCS_BUILD_DIR}/sphinx_source")
|
||||
set(SPHINX_OUTPUT "${DOCS_BUILD_DIR}/_build")
|
||||
|
||||
# Sphinx folders, doxyrest templates and config
|
||||
set(SPHINX_CONF_IN "${DOCS_SOURCE_DIR}/conf.py")
|
||||
set(SPHINX_TEMPLATES_IN "${DOCS_SOURCE_DIR}/_templates")
|
||||
set(SPHINX_TEMPLATES_OUT "${RST_OUTPUT}/_templates")
|
||||
set(SPHINX_CONF_OUT "${RST_OUTPUT}/conf.py")
|
||||
set(SPHINX_STATIC_IN "${DOCS_SOURCE_DIR}/_static")
|
||||
set(SPHINX_STATIC_OUT "${RST_OUTPUT}/_static")
|
||||
set(SPHINX_INDEX_IN "${DOCS_SOURCE_DIR}/index.rst")
|
||||
set(SPHINX_INDEX_OUT "${RST_OUTPUT}/index.rst")
|
||||
set(API_DOCS_IN "${DOCS_SOURCE_DIR}/api")
|
||||
set(API_DOCS_OUT "${RST_OUTPUT}/api")
|
||||
set(DOXYREST_IN "${DOCS_SOURCE_DIR}/doxyrest")
|
||||
set(DOXYREST_OUT "${DOCS_BUILD_DIR}/doxyrest")
|
||||
set(DOXYREST_SPHINX_IN "${DOCS_SOURCE_DIR}/doxyrest-sphinx")
|
||||
set(DOXYREST_SPHINX_OUT "${RST_OUTPUT}/doxyrest-sphinx")
|
||||
set(DOXYREST_CONFIG_IN "${DOCS_SOURCE_DIR}/doxyrest-config.lua")
|
||||
set(DOXYREST_CONFIG_OUT "${DOCS_BUILD_DIR}/doxyrest-config.lua")
|
||||
configure_file(${DOXYREST_CONFIG_IN} ${DOXYREST_CONFIG_OUT} @ONLY)
|
||||
configure_file(${SPHINX_CONF_IN} ${SPHINX_CONF_OUT} @ONLY)
|
||||
|
||||
# Doxygen config
|
||||
set(DOXYFILE_SOURCE "${DOCS_SOURCE_DIR}/Doxyfile.config")
|
||||
set(DOXYFILE_BUILD "${DOCS_BUILD_DIR}/Doxyfile.config")
|
||||
configure_file(${DOXYFILE_SOURCE} ${DOXYFILE_BUILD} @ONLY)
|
||||
|
||||
list(APPEND commands COMMAND ${Python3_EXECUTABLE} ${DOXY_MD_FILTER}
|
||||
list(APPEND commands COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --green "STARTED preprocessing OpenVINO articles")
|
||||
list(APPEND commands COMMAND ${Python3_EXECUTABLE} ${FILE_HELPER_SCRIPT}
|
||||
--filetype=rst
|
||||
--input_dir=${OpenVINO_SOURCE_DIR}
|
||||
--output_dir=${DOCS_BUILD_DIR}/openvino
|
||||
--exclude_dir=${DOCS_BUILD_DIR})
|
||||
--output_dir=${SPHINX_SOURCE_DIR}
|
||||
--exclude_dir=${SPHINX_SOURCE_DIR})
|
||||
list(APPEND commands COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --green "FINISHED preprocessing OpenVINO articles")
|
||||
|
||||
# include additional repositories
|
||||
if(${ENABLE_CPP_API})
|
||||
# Doxygen config
|
||||
set(DOXYFILE_SOURCE "${DOCS_SOURCE_DIR}/Doxyfile.config")
|
||||
set(DOXYFILE_BUILD "${DOCS_BUILD_DIR}/Doxyfile.config")
|
||||
configure_file(${DOXYFILE_SOURCE} ${DOXYFILE_BUILD} @ONLY)
|
||||
list(APPEND commands COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --green "STARTED preprocessing OpenVINO C/C++ API reference")
|
||||
list(APPEND commands COMMAND ${Python3_EXECUTABLE} ${REMOVE_XML_SCRIPT} ${DOXYGEN_XML_OUTPUT})
|
||||
list(APPEND commands COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYFILE_BUILD})
|
||||
list(APPEND post_commands COMMAND ${Python3_EXECUTABLE} ${BREATHE_APIDOC_SCRIPT} ${DOXYGEN_XML_OUTPUT} -o "${SPHINX_SOURCE_DIR}/api/c_cpp_api" -m -T -p openvino -g class,group,struct,union,enum)
|
||||
list(APPEND commands COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --green "FINISHED preprocessing OpenVINO C/C++ API reference")
|
||||
endif()
|
||||
|
||||
# build with openvino notebooks
|
||||
if(ENABLE_OPENVINO_NOTEBOOKS)
|
||||
if(${ENABLE_PYTHON_API})
|
||||
list(APPEND commands COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --green "STARTED preprocessing OpenVINO Python API")
|
||||
list(APPEND commands COMMAND ${Python3_EXECUTABLE} -m pip install openvino)
|
||||
list(APPEND commands COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --green "FINISHED preprocessing OpenVINO Python API")
|
||||
endif()
|
||||
|
||||
if(${ENABLE_NOTEBOOKS})
|
||||
set(NBDOC_SCRIPT "${DOCS_SOURCE_DIR}/nbdoc/nbdoc.py")
|
||||
list(PREPEND commands
|
||||
COMMAND ${Python3_EXECUTABLE} "${NBDOC_SCRIPT}" "${DOCS_SOURCE_DIR}/notebooks" "${RST_OUTPUT}/notebooks"
|
||||
list(APPEND commands COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --green "STARTED preprocessing OpenVINO notebooks")
|
||||
list(APPEND commands
|
||||
COMMAND ${Python3_EXECUTABLE} "${NBDOC_SCRIPT}" "${DOCS_SOURCE_DIR}/notebooks" "${SPHINX_SOURCE_DIR}/notebooks"
|
||||
)
|
||||
list(APPEND commands COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --green "FINISHED preprocessing OpenVINO notebooks")
|
||||
endif()
|
||||
|
||||
if(GRAPH_CSV_DIR)
|
||||
set(GRAPH_CSV_DIR_OUT "${RST_OUTPUT}/csv")
|
||||
list(APPEND commands
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory "${GRAPH_CSV_DIR}" "${GRAPH_CSV_DIR_OUT}"
|
||||
)
|
||||
if(${ENABLE_OVMS})
|
||||
list(APPEND commands COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --green "STARTED preprocessing OVMS")
|
||||
list(APPEND commands COMMAND ${Python3_EXECUTABLE} ${FILE_HELPER_SCRIPT}
|
||||
--filetype=md
|
||||
--input_dir=${OVMS_DOCS_DIR}
|
||||
--output_dir=${SPHINX_SOURCE_DIR}
|
||||
--exclude_dir=${SPHINX_SOURCE_DIR})
|
||||
list(APPEND commands COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --green "FINISHED preprocessing OVMS")
|
||||
endif()
|
||||
|
||||
list(APPEND commands
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${API_DOCS_IN}/api_reference.rst ${API_DOCS_OUT}/api_reference.rst
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory ${API_DOCS_IN}/ie_python_api ${API_DOCS_OUT}/ie_python_api
|
||||
)
|
||||
|
||||
# omz doc files
|
||||
if(EXISTS "${OMZ_DOCS_DIR}")
|
||||
get_filename_component(OMZ_DOCS_DIR "${OMZ_DOCS_DIR}" ABSOLUTE)
|
||||
if(${ENABLE_OMZ})
|
||||
list(APPEND commands COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --green "STARTED preprocessing OMZ")
|
||||
list(APPEND commands
|
||||
COMMAND ${Python3_EXECUTABLE} ${OMZ_DOCS_DIR}/ci/prepare-documentation.py ${CMAKE_BINARY_DIR}/open_model_zoo)
|
||||
list(APPEND commands COMMAND ${Python3_EXECUTABLE} ${DOXY_MD_FILTER}
|
||||
COMMAND ${Python3_EXECUTABLE} ${OpenVINO_SOURCE_DIR}/thirdparty/open_model_zoo/ci/prepare-documentation.py ${CMAKE_BINARY_DIR}/open_model_zoo)
|
||||
list(APPEND commands COMMAND ${Python3_EXECUTABLE} ${FILE_HELPER_SCRIPT}
|
||||
--filetype=md
|
||||
--input_dir=${CMAKE_BINARY_DIR}/open_model_zoo
|
||||
--output_dir=${DOCS_BUILD_DIR}/open_model_zoo)
|
||||
--output_dir=${SPHINX_SOURCE_DIR}
|
||||
--exclude_dir=${SPHINX_SOURCE_DIR})
|
||||
list(APPEND commands COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --green "FINISHED preprocessing OMZ")
|
||||
endif()
|
||||
|
||||
# workbench doc files
|
||||
if(EXISTS "${WORKBENCH_DOCS_DIR}")
|
||||
get_filename_component(WORKBENCH_DOCS_DIR "${WORKBENCH_DOCS_DIR}" ABSOLUTE)
|
||||
|
||||
list(APPEND commands COMMAND ${Python3_EXECUTABLE} ${DOXY_MD_FILTER}
|
||||
--input_dir=${WORKBENCH_DOCS_DIR}
|
||||
--output_dir=${DOCS_BUILD_DIR}/workbench)
|
||||
endif()
|
||||
|
||||
# ote doc files
|
||||
if(EXISTS "${OTE_DOCS_DIR}")
|
||||
get_filename_component(WORKBENCH_DOCS_DIR "${OTE_DOCS_DIR}" ABSOLUTE)
|
||||
|
||||
list(APPEND commands COMMAND ${Python3_EXECUTABLE} ${DOXY_MD_FILTER}
|
||||
--input_dir=${OTE_DOCS_DIR}
|
||||
--output_dir=${DOCS_BUILD_DIR}/ote)
|
||||
endif()
|
||||
|
||||
# ovms doc files
|
||||
if(EXISTS "${OVMS_DOCS_DIR}")
|
||||
get_filename_component(OVMS_DOCS_DIR "${OVMS_DOCS_DIR}" ABSOLUTE)
|
||||
|
||||
list(APPEND commands COMMAND ${Python3_EXECUTABLE} ${DOXY_MD_FILTER}
|
||||
--input_dir=${OVMS_DOCS_DIR}
|
||||
--output_dir=${DOCS_BUILD_DIR}/ovms)
|
||||
endif()
|
||||
|
||||
add_custom_target(preprocess_docs
|
||||
COMMENT "Preprocess documentation"
|
||||
VERBATIM)
|
||||
|
||||
# Preprocess docs
|
||||
add_custom_target(preprocess_docs
|
||||
COMMAND ${CMAKE_COMMAND} -E remove_directory ${SPHINX_SOURCE_DIR}
|
||||
${commands}
|
||||
WORKING_DIRECTORY ${DOCS_BUILD_DIR}
|
||||
VERBATIM)
|
||||
|
||||
add_custom_command(TARGET preprocess_docs
|
||||
POST_BUILD
|
||||
${commands}
|
||||
WORKING_DIRECTORY ${DOCS_BUILD_DIR}
|
||||
COMMENT "Preprocess documentation"
|
||||
VERBATIM)
|
||||
|
||||
add_custom_target(doxygen_xml
|
||||
DEPENDS preprocess_docs
|
||||
COMMAND ${Python3_EXECUTABLE} ${REMOVE_XML_SCRIPT} ${XML_OUTPUT}
|
||||
COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYFILE_BUILD}
|
||||
WORKING_DIRECTORY ${DOCS_BUILD_DIR}
|
||||
COMMENT "Generate doxygen XML output"
|
||||
VERBATIM)
|
||||
|
||||
# Post-process docs
|
||||
add_custom_command(TARGET doxygen_xml
|
||||
POST_BUILD
|
||||
COMMAND ${Python3_EXECUTABLE} ${PREPARE_XML_SCRIPT} ${XML_OUTPUT}
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory ${DOXYREST_IN} ${DOXYREST_OUT}
|
||||
COMMAND ${DOXYREST_EXECUTABLE} -c ${DOXYREST_CONFIG_OUT}
|
||||
COMMAND ${Python3_EXECUTABLE} ${COPY_IMAGES_SCRIPT} ${XML_OUTPUT} ${RST_OUTPUT}
|
||||
COMMAND ${Python3_EXECUTABLE} ${DOXYGEN_MAPPING_SCRIPT} ${XML_OUTPUT} ${DOCS_BUILD_DIR} ${OpenVINO_SOURCE_DIR}/../
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${SPHINX_INDEX_IN} ${SPHINX_INDEX_OUT}
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory ${SPHINX_TEMPLATES_IN} ${SPHINX_TEMPLATES_OUT}
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory ${DOXYREST_IN} ${DOXYREST_OUT}
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory ${DOXYREST_SPHINX_IN} ${DOXYREST_SPHINX_OUT}
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory ${SPHINX_STATIC_IN} ${SPHINX_STATIC_OUT}
|
||||
COMMENT "Prepare xml"
|
||||
COMMAND ${Python3_EXECUTABLE} ${COPY_IMAGES_SCRIPT} ${DOXYGEN_XML_OUTPUT} ${SPHINX_SOURCE_DIR}
|
||||
COMMAND ${Python3_EXECUTABLE} ${DOXYGEN_MAPPING_SCRIPT} ${DOXYGEN_XML_OUTPUT} ${DOCS_BUILD_DIR} ${OpenVINO_SOURCE_DIR}/../
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory ${SPHINX_SETUP_DIR} ${SPHINX_SOURCE_DIR}
|
||||
${post_commands}
|
||||
VERBATIM)
|
||||
|
||||
# Build docs
|
||||
add_custom_target(sphinx_docs
|
||||
DEPENDS doxygen_xml
|
||||
COMMAND sphinx-build -q -j auto -w ${DOCS_BUILD_DIR}/sphinx.log -b html ${RST_OUTPUT} ${SPHINX_OUTPUT}
|
||||
WORKING_DIRECTORY ${RST_OUTPUT}
|
||||
DEPENDS preprocess_docs
|
||||
COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --green "STARTED sphinx documentation build"
|
||||
COMMAND sphinx-build -j auto -w ${DOCS_BUILD_DIR}/sphinx.log -b html ${SPHINX_SOURCE_DIR} ${SPHINX_OUTPUT}
|
||||
COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --green "FINISHED sphinx documentation build"
|
||||
WORKING_DIRECTORY ${SPHINX_SOURCE_DIR}
|
||||
VERBATIM)
|
||||
|
||||
set_target_properties(doxygen_xml sphinx_docs
|
||||
PROPERTIES FOLDER docs)
|
||||
set_target_properties(preprocess_docs sphinx_docs PROPERTIES FOLDER docs)
|
||||
|
||||
|
||||
find_program(browser NAMES xdg-open)
|
||||
if(browser)
|
||||
add_custom_target(ie_docs_open
|
||||
COMMAND ${browser} "${SPHINX_OUTPUT}/index.html"
|
||||
DEPENDS sphinx_docs
|
||||
COMMENT "Open OpenVINO documentation"
|
||||
VERBATIM)
|
||||
set_target_properties(ie_docs_open PROPERTIES FOLDER docs)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
if(ENABLE_DOCS)
|
||||
|
||||
@@ -829,8 +829,7 @@ WARN_LOGFILE = "@DOCS_BUILD_DIR@/doxygen.log"
|
||||
# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING
|
||||
# Note: If this tag is empty the current directory is searched.
|
||||
|
||||
INPUT = "@MARKDOWN_INPUT@" \
|
||||
"@OpenVINO_SOURCE_DIR@/src/frontends/common/include/" \
|
||||
INPUT = "@OpenVINO_SOURCE_DIR@/src/frontends/common/include/" \
|
||||
"@OpenVINO_SOURCE_DIR@/src/common/conditional_compilation/include/" \
|
||||
"@OpenVINO_SOURCE_DIR@/src/common/itt/include/" \
|
||||
"@OpenVINO_SOURCE_DIR@/src/common/low_precision_transformations/include/" \
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
# Representation of low-precision models {#openvino_docs_ie_plugin_dg_lp_representation}
|
||||
The goal of this document is to describe how optimized models are represented in OpenVINO Intermediate Representation (IR) and provide guidance on interpretation rules for such models at runtime.
|
||||
Currently, there are two groups of optimization methods that can influence on the IR after applying them to the full-precision model:
|
||||
- **Sparsity**. It is represented by zeros inside the weights and this is up to the hardware plugin how to interpret these zeros (use weights as is or apply special compression algorithms and sparse arithmetic). No additional mask is provided with the model.
|
||||
- **Quantization**. The rest of this document is dedicated to the representation of quantized models.
|
||||
|
||||
## Representation of quantized models
|
||||
The OpenVINO Toolkit represents all the quantized models using the so-called FakeQuantize operation (see the description in [this document](@ref openvino_docs_ops_quantization_FakeQuantize_1)). This operation is very expressive and allows mapping values from arbitrary input and output ranges. The whole idea behind that is quite simple: we project (discretize) the input values to the low-precision data type using affine transformation (with clamp and rounding) and then reproject discrete values back to the original range and data type. It can be considered as an emulation of the quantization process which happens at runtime.
|
||||
In order to be able to execute a particular DL operation in low-precision all its inputs should be quantized i.e. should have FakeQuantize between operation and data blobs. The figure below shows an example of quantized Convolution which contains two FakeQuantize nodes: one for weights and one for activations (bias is quantized using the same parameters).
|
||||
![quantized_convolution]
|
||||
<div align="center">Figure 1. Example of quantized Convolution operation.</div>
|
||||
|
||||
Starting from OpenVINO 2020.2 release all the quantized models are represented in the compressed form. It means that the weights of low-precision operations are converted into the target precision (e.g. INT8). It helps to substantially reduce the model size. The rest of the parameters can be represented in FLOAT32 or FLOAT16 precision depending on the input full-precision model used in the quantization process. Fig. 2 below shows an example of the part of the compressed IR.
|
||||
![quantized_model_example]
|
||||
<div align="center">Figure 2. Example of compressed quantized model.</div>
|
||||
|
||||
[quantized_convolution]: images/quantized_convolution.png
|
||||
[quantized_model_example]: images/quantized_model_example.png
|
||||
@@ -1,112 +0,0 @@
|
||||
# [LEGACY] Extending Model Optimizer with Caffe Python Layers {#openvino_docs_MO_DG_prepare_model_customize_model_optimizer_Extending_Model_Optimizer_With_Caffe_Python_Layers}
|
||||
|
||||
@sphinxdirective
|
||||
|
||||
.. meta::
|
||||
:description: Learn how to extract operator attributes in Model Optimizer to
|
||||
support a custom Caffe operation written only in Python.
|
||||
|
||||
.. danger::
|
||||
|
||||
The code described here has been **deprecated!** Do not use it to avoid working with a legacy solution. It will be kept for some time to ensure backwards compatibility, but **you should not use** it in contemporary applications.
|
||||
|
||||
This guide describes a deprecated TensorFlow conversion method. The guide on the new and recommended method, using a new frontend, can be found in the :doc:`Frontend Extensions <openvino_docs_Extensibility_UG_Frontend_Extensions>` article.
|
||||
|
||||
This article provides instructions on how to support a custom Caffe operation written only in Python. For example, the
|
||||
`Faster-R-CNN model <https://dl.dropboxusercontent.com/s/o6ii098bu51d139/faster_rcnn_models.tgz?dl=0>`__ implemented in
|
||||
Caffe contains a custom proposal layer written in Python. The layer is described in the
|
||||
`Faster-R-CNN prototxt <https://raw.githubusercontent.com/rbgirshick/py-faster-rcnn/master/models/pascal_voc/VGG16/faster_rcnn_end2end/test.prototxt>`__ in the following way:
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
layer {
|
||||
name: 'proposal'
|
||||
type: 'Python'
|
||||
bottom: 'rpn_cls_prob_reshape'
|
||||
bottom: 'rpn_bbox_pred'
|
||||
bottom: 'im_info'
|
||||
top: 'rois'
|
||||
python_param {
|
||||
module: 'rpn.proposal_layer'
|
||||
layer: 'ProposalLayer'
|
||||
param_str: "'feat_stride': 16"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
This article describes only a procedure on how to extract operator attributes in Model Optimizer. The rest of the
|
||||
operation enabling pipeline and information on how to support other Caffe operations (written in C++) is described in
|
||||
the :doc:`Customize Model Optimizer <openvino_docs_MO_DG_prepare_model_customize_model_optimizer_Customize_Model_Optimizer>` guide.
|
||||
|
||||
========================================
|
||||
Writing Extractor for Caffe Python Layer
|
||||
========================================
|
||||
|
||||
Custom Caffe Python layers have an attribute ``type`` (defining the type of the operation) equal to ``Python`` and two
|
||||
mandatory attributes ``module`` and ``layer`` in the ``python_param`` dictionary. The ``module`` defines the Python module name
|
||||
with the layer implementation, while ``layer`` value is an operation type defined by a user. In order to extract
|
||||
attributes for such an operation it is necessary to implement extractor class inherited from the
|
||||
``CaffePythonFrontExtractorOp`` class instead of ``FrontExtractorOp`` class, used for standard framework layers. The ``op``
|
||||
class attribute value should be set to the ``module + "." + layer`` value so the extractor is triggered for this kind of
|
||||
operation.
|
||||
|
||||
Below is a simplified example of the extractor for the custom operation Proposal from the mentioned Faster-R-CNN model.
|
||||
The full code with additional checks can be found `here <https://github.com/openvinotoolkit/openvino/blob/releases/2022/1/tools/mo/openvino/tools/mo/front/caffe/proposal_python_ext.py>`__.
|
||||
|
||||
The sample code uses operation ``ProposalOp`` which corresponds to ``Proposal`` operation described in the :doc:`Available Operations Sets <openvino_docs_ops_opset>`
|
||||
page. For a detailed explanation of the extractor, refer to the source code below.
|
||||
|
||||
.. code-block:: py
|
||||
:force:
|
||||
|
||||
from openvino.tools.mo.ops.proposal import ProposalOp
|
||||
from openvino.tools.mo.front.extractor import CaffePythonFrontExtractorOp
|
||||
|
||||
|
||||
class ProposalPythonFrontExtractor(CaffePythonFrontExtractorOp):
|
||||
op = 'rpn.proposal_layer.ProposalLayer' # module + "." + layer
|
||||
enabled = True # extractor is enabled
|
||||
|
||||
@staticmethod
|
||||
def extract_proposal_params(node, defaults):
|
||||
param = node.pb.python_param # get the protobuf message representation of the layer attributes
|
||||
# parse attributes from the layer protobuf message to a Python dictionary
|
||||
attrs = CaffePythonFrontExtractorOp.parse_param_str(param.param_str)
|
||||
update_attrs = defaults
|
||||
|
||||
# the operation expects ratio and scale values to be called "ratio" and "scale" while Caffe uses different names
|
||||
if 'ratios' in attrs:
|
||||
attrs['ratio'] = attrs['ratios']
|
||||
del attrs['ratios']
|
||||
if 'scales' in attrs:
|
||||
attrs['scale'] = attrs['scales']
|
||||
del attrs['scales']
|
||||
|
||||
update_attrs.update(attrs)
|
||||
ProposalOp.update_node_stat(node, update_attrs) # update the node attributes
|
||||
|
||||
@classmethod
|
||||
def extract(cls, node):
|
||||
# define default values for the Proposal layer attributes
|
||||
defaults = {
|
||||
'feat_stride': 16,
|
||||
'base_size': 16,
|
||||
'min_size': 16,
|
||||
'ratio': [0.5, 1, 2],
|
||||
'scale': [8, 16, 32],
|
||||
'pre_nms_topn': 6000,
|
||||
'post_nms_topn': 300,
|
||||
'nms_thresh': 0.7
|
||||
}
|
||||
cls.extract_proposal_params(node, defaults)
|
||||
return cls.enabled
|
||||
|
||||
====================
|
||||
Additional Resources
|
||||
====================
|
||||
|
||||
* :doc:`Model Optimizer Extensibility <openvino_docs_MO_DG_prepare_model_customize_model_optimizer_Customize_Model_Optimizer>`
|
||||
* :doc:`Graph Traversal and Modification Using Ports and Connections <openvino_docs_MO_DG_prepare_model_customize_model_optimizer_Customize_Model_Optimizer_Model_Optimizer_Ports_Connections>`
|
||||
* :doc:`Model Optimizer Extensions <openvino_docs_MO_DG_prepare_model_customize_model_optimizer_Model_Optimizer_Extensions>`
|
||||
|
||||
@endsphinxdirective
|
||||
@@ -1,62 +0,0 @@
|
||||
# [LEGACY] Model Optimizer Extensions {#openvino_docs_MO_DG_prepare_model_customize_model_optimizer_Model_Optimizer_Extensions}
|
||||
|
||||
@sphinxdirective
|
||||
|
||||
.. meta::
|
||||
:description: Learn about deprecated extensions, which enable injecting logic
|
||||
to the model conversion pipeline without changing the Model
|
||||
Optimizer core code.
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
:hidden:
|
||||
|
||||
openvino_docs_MO_DG_prepare_model_customize_model_optimizer_Model_Optimizer_Extensions_Model_Optimizer_Operation
|
||||
openvino_docs_MO_DG_prepare_model_customize_model_optimizer_Model_Optimizer_Extensions_Model_Optimizer_Extractor
|
||||
openvino_docs_MO_DG_prepare_model_customize_model_optimizer_Model_Optimizer_Extensions_Model_Optimizer_Transformation_Extensions
|
||||
|
||||
.. danger::
|
||||
|
||||
The code described here has been **deprecated!** Do not use it to avoid working with a legacy solution. It will be kept for some time to ensure backwards compatibility, but **you should not use** it in contemporary applications.
|
||||
|
||||
This guide describes a deprecated TensorFlow conversion method. The guide on the new and recommended method, using a new frontend, can be found in the :doc:`Frontend Extensions <openvino_docs_Extensibility_UG_Frontend_Extensions>` article.
|
||||
|
||||
Model Optimizer extensions enable you to inject some logic to the model conversion pipeline without changing the Model
|
||||
Optimizer core code. There are three types of the Model Optimizer extensions:
|
||||
|
||||
1. :doc:`Model Optimizer operation <openvino_docs_MO_DG_prepare_model_customize_model_optimizer_Model_Optimizer_Extensions_Model_Optimizer_Operation>`.
|
||||
2. A :doc:`framework operation extractor <openvino_docs_MO_DG_prepare_model_customize_model_optimizer_Model_Optimizer_Extensions_Model_Optimizer_Extractor>`.
|
||||
3. A :doc:`model transformation <openvino_docs_MO_DG_prepare_model_customize_model_optimizer_Model_Optimizer_Extensions_Model_Optimizer_Transformation_Extensions>`, which can be executed during front, middle or back phase of the model conversion.
|
||||
|
||||
An extension is just a plain text file with a Python code. The file should contain a class (or classes) inherited from
|
||||
one of extension base classes. Extension files should be saved to a directory with the following structure:
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
./<MY_EXT>/
|
||||
ops/ - custom operations
|
||||
front/ - framework independent front transformations
|
||||
<FRAMEWORK_1>/ - front transformations for <FRAMEWORK_1> models only and extractors for <FRAMEWORK_1> operations
|
||||
<FRAMEWORK_2>/ - front transformations for <FRAMEWORK_2> models only and extractors for <FRAMEWORK_2> operations
|
||||
...
|
||||
middle/ - middle transformations
|
||||
back/ - back transformations
|
||||
|
||||
Model Optimizer uses the same layout internally to keep built-in extensions. The only exception is that the
|
||||
``mo/ops/`` directory is also used as a source of the Model Optimizer operations due to historical reasons.
|
||||
|
||||
.. note::
|
||||
The name of a root directory with extensions should not be equal to "extensions" because it will result in a name conflict with the built-in Model Optimizer extensions.
|
||||
|
||||
.. note::
|
||||
Model Optimizer itself is built by using these extensions, so there is a huge number of examples of their usage in the Model Optimizer code.
|
||||
|
||||
====================
|
||||
Additional Resources
|
||||
====================
|
||||
|
||||
* :doc:`Model Optimizer Extensibility <openvino_docs_MO_DG_prepare_model_customize_model_optimizer_Customize_Model_Optimizer>`
|
||||
* :doc:`Graph Traversal and Modification Using Ports and Connections <openvino_docs_MO_DG_prepare_model_customize_model_optimizer_Customize_Model_Optimizer_Model_Optimizer_Ports_Connections>`
|
||||
* :doc:`Extending Model Optimizer with Caffe Python Layers <openvino_docs_MO_DG_prepare_model_customize_model_optimizer_Extending_Model_Optimizer_With_Caffe_Python_Layers>`
|
||||
|
||||
@endsphinxdirective
|
||||
@@ -1,115 +0,0 @@
|
||||
# [LEGACY] Operation Extractor {#openvino_docs_MO_DG_prepare_model_customize_model_optimizer_Model_Optimizer_Extensions_Model_Optimizer_Extractor}
|
||||
|
||||
@sphinxdirective
|
||||
|
||||
.. meta::
|
||||
:description: Learn about a deprecated generic extension in Model Optimizer,
|
||||
which provides the operation extractor usable for all model
|
||||
frameworks.
|
||||
|
||||
|
||||
.. danger::
|
||||
|
||||
The code described here has been **deprecated!** Do not use it to avoid working with a legacy solution. It will be kept for some time to ensure backwards compatibility, but **you should not use** it in contemporary applications.
|
||||
|
||||
This guide describes a deprecated TensorFlow conversion method. The guide on the new and recommended method, using a new frontend, can be found in the :doc:`Frontend Extensions <openvino_docs_Extensibility_UG_Frontend_Extensions>` article.
|
||||
|
||||
Model Optimizer runs specific extractor for each operation in the model during the model loading.
|
||||
|
||||
There are several types of Model Optimizer extractor extensions:
|
||||
|
||||
1. The generic one, which is described in this article.
|
||||
2. The special extractor for Caffe models with Python layers. This kind of extractor is described in the :doc:`Extending Model Optimizer with Caffe Python Layers <openvino_docs_MO_DG_prepare_model_customize_model_optimizer_Extending_Model_Optimizer_With_Caffe_Python_Layers>` guide.
|
||||
|
||||
Generic extension provides a generic mechanism for the operation extractor applicable for all frameworks. Model Optimizer provides the ``mo.front.extractor.FrontExtractorOp`` class as a base class to implement the extractor. It has the ``extract`` class method, which gets the only parameter ``Node``, which corresponds to the graph node to extract data from. The operation description in the original framework format is stored in the attribute ``pb`` of the node. The extractor goal is to parse this attribute and save necessary attributes to the corresponding node of the graph. Consider the extractor for the ``Const`` TensorFlow operation (refer to the ``extensions/front/tf/const_ext.py`` file):
|
||||
|
||||
.. code-block:: py
|
||||
:force:
|
||||
|
||||
from openvino.tools.mo.front.extractor import FrontExtractorOp
|
||||
from openvino.tools.mo.front.tf.extractors.utils import tf_dtype_extractor, tf_tensor_shape, tf_tensor_content
|
||||
from openvino.tools.mo.ops.const import Const
|
||||
|
||||
|
||||
class ConstExtractor(FrontExtractorOp):
|
||||
# The "op" class attribute defines a type of the operation in the framework (in this case it is a TensorFlow),
|
||||
# for which the extractor should be triggered.
|
||||
op = 'Const'
|
||||
enabled = True # The flag that indicates that this extractor is enabled.
|
||||
|
||||
@classmethod
|
||||
def extract(cls, node): # The entry point of the extractor.
|
||||
# The `node.pb` attribute stores the TensorFlow representation of the operation, which is a Protobuf message of the
|
||||
# specific format. In particular, the message contains the attribute called "value" containing the description of
|
||||
# the constant. The string "pb.attr["value"].tensor" is just a Python binding for Protobuf message parsing.
|
||||
pb_tensor = node.pb.attr["value"].tensor
|
||||
# Get the shape of the tensor from the protobuf message, using the helper function "tf_tensor_shape".
|
||||
shape = tf_tensor_shape(pb_tensor.tensor_shape)
|
||||
# Create a dictionary with necessary attributes.
|
||||
attrs = {
|
||||
'shape': shape,
|
||||
# Get the tensor value, using "tf_tensor_content" helper function.
|
||||
'value': tf_tensor_content(pb_tensor.dtype, shape, pb_tensor),
|
||||
# Get the tensor data type, using "tf_dtype_extractor" helper function.
|
||||
'data_type': tf_dtype_extractor(pb_tensor.dtype),
|
||||
}
|
||||
# Update the node attributes, using default attributes from the "Const" operation and attributes saved to the
|
||||
# "attrs" dictionary.
|
||||
Const.update_node_stat(node, attrs)
|
||||
return cls.enabled
|
||||
|
||||
Consider another example with an extractor of the ``Constant`` ONNX operation (refer to the ``extensions/front/onnx/const_ext.py`` file):
|
||||
|
||||
.. code-block:: py
|
||||
:force:
|
||||
|
||||
from onnx import numpy_helper
|
||||
from onnx.numpy_helper import to_array
|
||||
|
||||
from openvino.tools.mo.front.extractor import FrontExtractorOp
|
||||
from openvino.tools.mo.front.onnx.extractors.utils import onnx_attr
|
||||
from openvino.tools.mo.ops.const import Const
|
||||
|
||||
|
||||
class ConstantExtractor(FrontExtractorOp):
|
||||
op = 'Constant'
|
||||
enabled = True
|
||||
|
||||
@classmethod
|
||||
def extract(cls, node):
|
||||
# Use "onnx_attr" helper method, which parses the Protobuf representation of the operation saved in the "node".
|
||||
# Gets the value of the attribute with name "value" as "TensorProto" type (specified with a keyword "t").
|
||||
pb_value = onnx_attr(node, 'value', 't')
|
||||
# Use "numpy_helper.to_array()" ONNX helper method to convert "TensorProto" object to a numpy array.
|
||||
value = numpy_helper.to_array(pb_value)
|
||||
|
||||
attrs = {
|
||||
'data_type': value.dtype,
|
||||
'value': value,
|
||||
}
|
||||
# Update the node attributes, using default attributes from the "Const" operation and attributes saved to the
|
||||
# "attrs" dictionary.
|
||||
Const.update_node_stat(node, attrs)
|
||||
return cls.enabled
|
||||
|
||||
The extractors for operations from different frameworks work similarly. The only difference is in the helper methods used to parse operation attributes encoded with a framework-specific representation.
|
||||
|
||||
A common practice is to use ``update_node_stat()`` method of the dedicated ``Op`` class to update the node attributes. This method does the following:
|
||||
|
||||
1. Sets values for common attributes like ``op``, ``type``, ``infer``, ``in_ports_count``, ``out_ports_count``, ``version`` to values specific to the dedicated operation (``Const`` operation in this case).
|
||||
2. Uses ``supported_attrs()`` and ``backend_attrs()`` methods, defined in the ``Op`` class to update specific node attribute ``IE``. The IR emitter uses the value stored in the ``IE`` attribute to pre-process attribute values and save them to IR.
|
||||
3. Optionally sets additional attributes provided to the ``update_node_stat()`` function as a second parameter. Usually these attributes are parsed from the particular instance of the operation.
|
||||
|
||||
.. note::
|
||||
Model Optimizer uses numpy arrays to store values and numpy arrays of ``np.int64`` type to store shapes in the graph.
|
||||
|
||||
====================
|
||||
Additional Resources
|
||||
====================
|
||||
|
||||
* :doc:`Model Optimizer Extensibility <openvino_docs_MO_DG_prepare_model_customize_model_optimizer_Customize_Model_Optimizer>`
|
||||
* :doc:`Graph Traversal and Modification Using Ports and Connections <openvino_docs_MO_DG_prepare_model_customize_model_optimizer_Customize_Model_Optimizer_Model_Optimizer_Ports_Connections>`
|
||||
* :doc:`Model Optimizer Extensions <openvino_docs_MO_DG_prepare_model_customize_model_optimizer_Model_Optimizer_Extensions>`
|
||||
* :doc:`Extending Model Optimizer with Caffe Python Layers <openvino_docs_MO_DG_prepare_model_customize_model_optimizer_Extending_Model_Optimizer_With_Caffe_Python_Layers>`
|
||||
|
||||
@endsphinxdirective
|
||||
@@ -1,188 +0,0 @@
|
||||
# [LEGACY] Graph Traversal and Modification {#openvino_docs_MO_DG_prepare_model_customize_model_optimizer_Customize_Model_Optimizer_Model_Optimizer_Ports_Connections}
|
||||
|
||||
@sphinxdirective
|
||||
|
||||
.. meta::
|
||||
:description: Learn about deprecated APIs and the Port and Connection classes
|
||||
in Model Optimizer used for graph traversal and transformation.
|
||||
|
||||
.. danger::
|
||||
|
||||
The code described here has been **deprecated!** Do not use it to avoid working with a legacy solution. It will be kept for some time to ensure backwards compatibility, but **you should not use** it in contemporary applications.
|
||||
|
||||
This guide describes a deprecated TensorFlow conversion method. The guide on the new and recommended method, using a new frontend, can be found in the :doc:`Frontend Extensions <openvino_docs_Extensibility_UG_Frontend_Extensions>` article.
|
||||
|
||||
There are three APIs for a graph traversal and transformation used in the Model Optimizer:
|
||||
|
||||
1. The API provided with the ``networkx`` Python library for the ``networkx.MultiDiGraph`` class, which is the base class for
|
||||
the ``mo.graph.graph.Graph`` object. For example, the following methods belong to this API level:
|
||||
|
||||
* ``graph.add_edges_from([list])``,
|
||||
* ``graph.add_node(x, attrs)``,
|
||||
* ``graph.out_edges(node_id)``
|
||||
* other methods where ``graph`` is a an instance of the ``networkx.MultiDiGraph`` class.
|
||||
|
||||
**This is the lowest-level API. Avoid using it in the Model Optimizer transformations**. For more details, refer to the :ref:`Model Representation in Memory <mo_model_representation_in_memory>` section.
|
||||
|
||||
2. The API built around the ``mo.graph.graph.Node`` class. The ``Node`` class is the primary class to work with graph nodes
|
||||
and their attributes. Examples of such methods and functions are:
|
||||
|
||||
* ``node.in_node(y)``,
|
||||
* ``node.out_node(x)``,
|
||||
* ``node.get_outputs()``,
|
||||
* ``node.insert_node_after(n1, y)``,
|
||||
* ``create_edge(n1, n2)``
|
||||
|
||||
**There are some "Node" class methods not recommended for use and some functions defined in the mo.graph.graph have been deprecated**. For more details, refer to the ``mo/graph/graph.py`` file.
|
||||
|
||||
3. The high-level API called Model Optimizer Graph API, which uses ``mo.graph.graph.Graph``, ``mo.graph.port.Port`` and
|
||||
``mo.graph.connection.Connection`` classes. For example, the following methods belong to this API level:
|
||||
|
||||
* ``node.in_port(x)``,
|
||||
* ``node.out_port(y)``,
|
||||
* ``port.get_connection()``,
|
||||
* ``connection.get_source()``,
|
||||
* ``connection.set_destination(dest_port)``
|
||||
|
||||
**This is the recommended API for the Model Optimizer transformations and operations implementation**.
|
||||
|
||||
The main benefit of using the Model Optimizer Graph API is that it hides some internal implementation details (the fact that
|
||||
the graph contains data nodes), provides API to perform safe and predictable graph manipulations, and adds operation
|
||||
semantic to the graph. This is achieved with introduction of concepts of ports and connections.
|
||||
|
||||
.. note::
|
||||
This article is dedicated to the Model Optimizer Graph API only and does not cover other two non-recommended APIs.
|
||||
|
||||
.. _mo_intro_ports:
|
||||
|
||||
=====
|
||||
Ports
|
||||
=====
|
||||
|
||||
An operation semantic describes how many inputs and outputs the operation has. For example,
|
||||
:doc:`Parameter <openvino_docs_ops_infrastructure_Parameter_1>` and :doc:`Const <openvino_docs_ops_infrastructure_Constant_1>` operations have no
|
||||
inputs and have one output, :doc:`ReLU <openvino_docs_ops_activation_ReLU_1>` operation has one input and one output,
|
||||
:doc:`Split <openvino_docs_ops_movement_Split_1>` operation has 2 inputs and a variable number of outputs depending on the value of the
|
||||
attribute ``num_splits``.
|
||||
|
||||
Each operation node in the graph (an instance of the ``Node`` class) has 0 or more input and output ports (instances of
|
||||
the ``mo.graph.port.Port`` class). The ``Port`` object has several attributes:
|
||||
|
||||
* ``node`` - the instance of the ``Node`` object the port belongs to.
|
||||
* ``idx`` - the port number. Input and output ports are numbered independently, starting from ``0``. Thus,
|
||||
:doc:`ReLU <openvino_docs_ops_activation_ReLU_1>` operation has one input port (with index ``0``) and one output port (with index ``0``).
|
||||
* ``type`` - the type of the port. Could be equal to either ``"in"`` or ``"out"``.
|
||||
* ``data`` - the object that should be used to get attributes of the corresponding data node. This object has methods ``get_shape()`` / ``set_shape()`` and ``get_value()`` / ``set_value()`` to get/set shape/value of the corresponding data node. For example, ``in_port.data.get_shape()`` returns an input shape of a tensor connected to input port ``in_port`` (``in_port.type == 'in'``), ``out_port.data.get_value()`` returns a value of a tensor produced from output port ``out_port`` (``out_port.type == 'out'``).
|
||||
|
||||
.. note::
|
||||
Functions ``get_shape()`` and ``get_value()`` return ``None`` until the partial inference phase. For more information about model conversion phases, refer to the :ref:`Model Conversion Pipeline <mo_model_conversion_pipeline>`. For information about partial inference phase, see the :ref:`Partial Inference <mo_partial_inference>`.
|
||||
|
||||
There are several methods of the ``Node`` class to get the instance of a corresponding port:
|
||||
|
||||
* ``in_port(x)`` and ``out_port(x)`` to get the input/output port with number ``x``.
|
||||
* ``in_ports()`` and ``out_ports()`` to get a dictionary, where key is a port number and the value is the corresponding input/output port.
|
||||
|
||||
Attributes ``in_ports_count`` and ``out_ports_count`` of the ``Op`` class instance define default number of input and output
|
||||
ports to be created for the ``Node``. However, additional input/output ports can be added using methods
|
||||
``add_input_port()`` and ``add_output_port()``. Port also can be removed, using the ``delete_input_port()`` and
|
||||
``delete_output_port()`` methods.
|
||||
|
||||
The ``Port`` class is just an abstraction that works with edges incoming/outgoing to/from a specific ``Node`` instance. For
|
||||
example, output port with ``idx = 1`` corresponds to the outgoing edge of a node with an attribute ``out = 1``, the input
|
||||
port with ``idx = 2`` corresponds to the incoming edge of a node with an attribute ``in = 2``.
|
||||
|
||||
Consider the example of a graph part with 4 operation nodes "Op1", "Op2", "Op3", and "Op4" and a number of data nodes
|
||||
depicted with light green boxes.
|
||||
|
||||
.. image:: _static/images/MO_ports_example_1.svg
|
||||
:scale: 80 %
|
||||
:align: center
|
||||
|
||||
Operation nodes have input ports (yellow squares) and output ports (light purple squares). Input port may not be
|
||||
connected. For example, the input **port 2** of node **Op1** does not have incoming edge, while output port always has an
|
||||
associated data node (after the partial inference when the data nodes are added to the graph), which may have no
|
||||
consumers.
|
||||
|
||||
Ports can be used to traverse a graph. The method ``get_source()`` of an input port returns an output port producing the
|
||||
tensor consumed by the input port. It is important that the method works the same during front, middle and back phases of a
|
||||
model conversion even though the graph structure changes (there are no data nodes in the graph during the front phase).
|
||||
|
||||
Let's assume that there are 4 instances of ``Node`` object ``op1, op2, op3``, and ``op4`` corresponding to nodes **Op1**, **Op2**,
|
||||
**Op3**, and **Op4**, respectively. The result of ``op2.in_port(0).get_source()`` and ``op4.in_port(1).get_source()`` is the
|
||||
same object ``op1.out_port(1)`` of type ``Port``.
|
||||
|
||||
The method ``get_destination()`` of an output port returns the input port of the node consuming this tensor. If there are
|
||||
multiple consumers of this tensor, the error is raised. The method ``get_destinations()`` of an output port returns a
|
||||
list of input ports consuming the tensor.
|
||||
|
||||
The method ``disconnect()`` removes a node incoming edge corresponding to the specific input port. The method removes
|
||||
several edges if it is applied during the front phase for a node output port connected with multiple nodes.
|
||||
|
||||
The method ``port.connect(another_port)`` connects output port ``port`` and input port ``another_port``. The method handles
|
||||
situations when the graph contains data nodes (middle and back phases) and does not create an edge between two nodes
|
||||
but also automatically creates data node or reuses existing data node. If the method is used during the front phase and
|
||||
data nodes do not exist, the method creates edge and properly sets ``in`` and ``out`` edge attributes.
|
||||
|
||||
For example, applying the following two methods to the graph above will result in the graph depicted below:
|
||||
|
||||
.. code-block:: py
|
||||
:force:
|
||||
|
||||
op4.in_port(1).disconnect()
|
||||
op3.out_port(0).connect(op4.in_port(1))
|
||||
|
||||
.. image:: _static/images/MO_ports_example_2.svg
|
||||
:scale: 80 %
|
||||
:align: center
|
||||
|
||||
.. note::
|
||||
For a full list of available methods, refer to the ``Node`` class implementation in the ``mo/graph/graph.py`` and ``Port`` class implementation in the ``mo/graph/port.py`` files.
|
||||
|
||||
===========
|
||||
Connections
|
||||
===========
|
||||
|
||||
Connection is a concept introduced to easily and reliably perform graph modifications. Connection corresponds to a
|
||||
link between a source output port with one or more destination input ports or a link between a destination input port
|
||||
and source output port producing data. So each port is connected with one or more ports with help of a connection.
|
||||
Model Optimizer uses the ``mo.graph.connection.Connection`` class to represent a connection.
|
||||
|
||||
There is only one ``get_connection()`` method of the ``Port`` class to get the instance of the corresponding ``Connection``
|
||||
object. If the port is not connected, the returned value is ``None``.
|
||||
|
||||
For example, the ``op3.out_port(0).get_connection()`` method returns a ``Connection`` object encapsulating edges from node
|
||||
**Op3** to data node **data_3_0** and two edges from data node **data_3_0** to two ports of the node **Op4**.
|
||||
|
||||
The ``Connection`` class provides methods to get source and destination(s) ports the connection corresponds to:
|
||||
|
||||
* ``connection.get_source()`` - returns an output ``Port`` object producing the tensor.
|
||||
* ``connection.get_destinations()`` - returns a list of input ``Port`` consuming the data.
|
||||
* ``connection.get_destination()`` - returns a single input ``Port`` consuming the data. If there are multiple consumers, the exception is raised.
|
||||
|
||||
The ``Connection`` class provides methods to modify a graph by changing a source or destination(s) of a connection. For
|
||||
example, the function call ``op3.out_port(0).get_connection().set_source(op1.out_port(0))`` changes source port of edges
|
||||
consuming data from port ``op3.out_port(0)`` to ``op1.out_port(0)``. The transformed graph from the sample above is depicted
|
||||
below:
|
||||
|
||||
.. image:: _static/images/MO_connection_example_1.svg
|
||||
:scale: 80 %
|
||||
:align: center
|
||||
|
||||
Another example is the ``connection.set_destination(dest_port)`` method. It disconnects ``dest_port`` and all input ports to which
|
||||
the connection is currently connected and connects the connection source port to ``dest_port``.
|
||||
|
||||
Note that connection works seamlessly during front, middle, and back phases and hides the fact that the graph structure is
|
||||
different.
|
||||
|
||||
.. note::
|
||||
For a full list of available methods, refer to the ``Connection`` class implementation in the ``mo/graph/connection.py`` file.
|
||||
|
||||
====================
|
||||
Additional Resources
|
||||
====================
|
||||
|
||||
* :doc:`Model Optimizer Extensibility <openvino_docs_MO_DG_prepare_model_customize_model_optimizer_Customize_Model_Optimizer>`
|
||||
* :doc:`Model Optimizer Extensions <openvino_docs_MO_DG_prepare_model_customize_model_optimizer_Model_Optimizer_Extensions>`
|
||||
* :doc:`Extending Model Optimizer with Caffe Python Layers <openvino_docs_MO_DG_prepare_model_customize_model_optimizer_Extending_Model_Optimizer_With_Caffe_Python_Layers>`
|
||||
|
||||
@endsphinxdirective
|
||||
@@ -1,59 +0,0 @@
|
||||
# Low-Precision 8-bit Integer Inference
|
||||
|
||||
## Disclaimer
|
||||
|
||||
Low-precision 8-bit inference is optimized for:
|
||||
- Intel® architecture processors with the following instruction set architecture extensions:
|
||||
- Intel® Advanced Vector Extensions 512 Vector Neural Network Instructions (Intel® AVX-512 VNNI)
|
||||
- Intel® Advanced Vector Extensions 512 (Intel® AVX-512)
|
||||
- Intel® Advanced Vector Extensions 2.0 (Intel® AVX2)
|
||||
- Intel® Streaming SIMD Extensions 4.2 (Intel® SSE4.2)
|
||||
- Intel® processor graphics:
|
||||
- Intel® Iris® Xe Graphics
|
||||
- Intel® Iris® Xe MAX Graphics
|
||||
|
||||
## Introduction
|
||||
|
||||
For 8-bit integer computation, a model must be quantized. You can use a quantized model from [OpenVINO™ Toolkit Intel's Pre-Trained Models](@ref omz_models_group_intel) or quantize a model yourself. For more details on how to get quantized model please refer to [Model Optimization](@ref openvino_docs_model_optimization_guide) document.
|
||||
|
||||
The quantization process adds [FakeQuantize](../ops/quantization/FakeQuantize_1.md) layers on activations and weights for most layers. Read more about mathematical computations in the [Uniform Quantization with Fine-Tuning](https://github.com/openvinotoolkit/nncf/blob/develop/docs/compression_algorithms/Quantization.md).
|
||||
|
||||
When you pass the quantized IR to the OpenVINO™ plugin, the plugin automatically recognizes it as a quantized model and performs 8-bit inference. Note that if you pass a quantized model to another plugin that does not support 8-bit inference but supports all operations from the model, the model is inferred in precision that this plugin supports.
|
||||
|
||||
At runtime, the quantized model is loaded to the plugin. The plugin uses the `Low Precision Transformation` component to update the model to infer it in low precision:
|
||||
- Update `FakeQuantize` layers to have quantized output tensors in low-precision range and add dequantization layers to compensate for the update. Dequantization layers are pushed through as many layers as possible to have more layers in low precision. After that, most layers have quantized input tensors in low-precision range and can be inferred in low precision. Ideally, dequantization layers should be fused in the next `FakeQuantize` layer.
|
||||
- Weights are quantized and stored in `Constant` layers.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
Let's explore quantized [TensorFlow* implementation of the ResNet-50](https://github.com/openvinotoolkit/open_model_zoo/tree/master/models/public/resnet-50-tf) model. Use [Model Downloader](@ref omz_tools_downloader) to download the `FP16` model from [OpenVINO™ Toolkit - Open Model Zoo repository](https://github.com/openvinotoolkit/open_model_zoo):
|
||||
|
||||
```sh
|
||||
omz_downloader --name resnet-50-tf --precisions FP16-INT8
|
||||
```
|
||||
After that you should quantize the model with the [Model Quantizer](@ref omz_tools_downloader) tool.
|
||||
```sh
|
||||
omz_quantizer --model_dir public/resnet-50-tf --dataset_dir <DATASET_DIR> --precisions=FP16-INT8
|
||||
```
|
||||
|
||||
The simplest way to infer the model and collect performance counters is the [Benchmark Application](../../samples/cpp/benchmark_app/README.md):
|
||||
```sh
|
||||
./benchmark_app -m resnet-50-tf.xml -d CPU -niter 1 -api sync -report_type average_counters -report_folder pc_report_dir
|
||||
```
|
||||
If you infer the model with the OpenVINO™ CPU plugin and collect performance counters, all operations (except the last non-quantized SoftMax) are executed in INT8 precision.
|
||||
|
||||
## Low-Precision 8-bit Integer Inference Workflow
|
||||
|
||||
For 8-bit integer computations, a model must be quantized. Quantized models can be downloaded from [Overview of OpenVINO™ Toolkit Intel's Pre-Trained Models](@ref omz_models_group_intel). If the model is not quantized, you can use the [Post-Training Optimization Tool](@ref pot_introduction) to quantize the model. The quantization process adds [FakeQuantize](../ops/quantization/FakeQuantize_1.md) layers on activations and weights for most layers. Read more about mathematical computations in the [Uniform Quantization with Fine-Tuning](https://github.com/openvinotoolkit/nncf/blob/develop/docs/compression_algorithms/Quantization.md).
|
||||
|
||||
8-bit inference pipeline includes two stages (also refer to the figure below):
|
||||
1. *Offline stage*, or *model quantization*. During this stage, [FakeQuantize](../ops/quantization/FakeQuantize_1.md) layers are added before most layers to have quantized tensors before layers in a way that low-precision accuracy drop for 8-bit integer inference satisfies the specified threshold. The output of this stage is a quantized model. Quantized model precision is not changed, quantized tensors are in the original precision range (`fp32`). `FakeQuantize` layer has `levels` attribute which defines quants count. Quants count defines precision which is used during inference. For `int8` range `levels` attribute value has to be 255 or 256. To quantize the model, you can use the [Post-Training Optimization Tool](@ref pot_introduction) delivered with the Intel® Distribution of OpenVINO™ toolkit release package.
|
||||
|
||||
When you pass the quantized IR to the OpenVINO™ plugin, the plugin automatically recognizes it as a quantized model and performs 8-bit inference. Note, if you pass a quantized model to another plugin that does not support 8-bit inference but supports all operations from the model, the model is inferred in precision that this plugin supports.
|
||||
|
||||
2. *Runtime stage*. This stage is an internal procedure of the OpenVINO™ plugin. During this stage, the quantized model is loaded to the plugin. The plugin uses `Low Precision Transformation` component to update the model to infer it in low precision:
|
||||
- Update `FakeQuantize` layers to have quantized output tensors in low precision range and add dequantization layers to compensate the update. Dequantization layers are pushed through as many layers as possible to have more layers in low precision. After that, most layers have quantized input tensors in low precision range and can be inferred in low precision. Ideally, dequantization layers should be fused in the next `FakeQuantize` layer.
|
||||
- Weights are quantized and stored in `Constant` layers.
|
||||
|
||||
![int8_flow]
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
# Legal Information {#openvino_docs_Legal_Information}
|
||||
.. {#openvino_docs_Legal_Information}
|
||||
|
||||
Legal Information
|
||||
=================
|
||||
|
||||
@sphinxdirective
|
||||
|
||||
.. meta::
|
||||
:description: Learn about legal information and policies related to the use
|
||||
@@ -29,6 +31,5 @@ The OpenVINO logo must be used in connection with truthful, non-misleading refer
|
||||
Modification of the logo or use of any separate element(s) of the logo alone is not allowed.
|
||||
|
||||
|
||||
@endsphinxdirective
|
||||
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
# About OpenVINO {#about_openvino}
|
||||
.. {#about_openvino}
|
||||
|
||||
About OpenVINO
|
||||
==============
|
||||
|
||||
@sphinxdirective
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
@@ -72,5 +74,4 @@ Case Studies
|
||||
|
||||
OpenVINO has been employed in various case studies across a wide range of industries and applications, including healthcare, retail, safety and security, transportation, and more. Read about how OpenVINO enhances efficiency, accuracy, and safety in different sectors on the `success stories page <https://www.intel.com/content/www/us/en/internet-of-things/ai-in-production/success-stories.html>`__.
|
||||
|
||||
@endsphinxdirective
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
# Additional Resources {#resources}
|
||||
.. {#resources}
|
||||
|
||||
Additional Resources
|
||||
====================
|
||||
|
||||
|
||||
@sphinxdirective
|
||||
|
||||
.. meta::
|
||||
:description: Learn more about OpenVINO from benchmark results, case studies
|
||||
@@ -28,6 +30,5 @@
|
||||
`Case Studies <https://www.intel.com/openvino-success-stories>`__ are articles about real-world examples of OpenVINO™ usage.
|
||||
|
||||
|
||||
@endsphinxdirective
|
||||
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
# OpenVINO™ Telemetry {#openvino_docs_telemetry_information}
|
||||
.. {#openvino_docs_telemetry_information}
|
||||
|
||||
OpenVINO™ Telemetry
|
||||
=====================
|
||||
|
||||
@sphinxdirective
|
||||
|
||||
.. meta::
|
||||
:description: Learn about OpenVINO™ telemetry, that collects anonymous usage data for the purpose of improving OpenVINO™ tools.
|
||||
@@ -56,4 +58,3 @@ Telemetry Data Collection Details
|
||||
Any raw data that has reached the 14-month threshold is deleted from Google Analytics on a monthly basis.
|
||||
|
||||
|
||||
@endsphinxdirective
|
||||
@@ -1,6 +1,8 @@
|
||||
# OpenVINO TensorFlow Frontend Capabilities and Limitations {#openvino_docs_MO_DG_TensorFlow_Frontend}
|
||||
.. {#openvino_docs_MO_DG_TensorFlow_Frontend}
|
||||
|
||||
OpenVINO TensorFlow Frontend Capabilities and Limitations
|
||||
=========================================================
|
||||
|
||||
@sphinxdirective
|
||||
|
||||
.. meta::
|
||||
:description: TensorFlow Frontend in OpenVINO Runtime is a C++ based frontend used
|
||||
@@ -16,4 +18,3 @@ The current limitations:
|
||||
* There is no full parity between the legacy frontend and the new frontend in MO. Known limitations compared to the legacy approach are: TF1 Control flow, Complex types, models requiring config files and old python extensions. The solution detects unsupported functionalities and provides fallback. To force the use of the legacy frontend, ``--use_legacy_frontend`` must be specified.
|
||||
|
||||
|
||||
@endsphinxdirective
|
||||
@@ -1,6 +1,8 @@
|
||||
# Compatibility and Support {#compatibility_and_support}
|
||||
.. {#compatibility_and_support}
|
||||
|
||||
Compatibility and Support
|
||||
=========================
|
||||
|
||||
@sphinxdirective
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
@@ -22,4 +24,3 @@
|
||||
|
||||
|
||||
|
||||
@endsphinxdirective
|
||||
@@ -1,7 +1,9 @@
|
||||
# Supported Devices {#openvino_docs_OV_UG_supported_plugins_Supported_Devices}
|
||||
.. {#openvino_docs_OV_UG_supported_plugins_Supported_Devices}
|
||||
|
||||
Supported Devices
|
||||
=================
|
||||
|
||||
@sphinxdirective
|
||||
|
||||
|
||||
.. meta::
|
||||
:description: Check the list of officially supported models in Intel®
|
||||
@@ -57,6 +59,5 @@ topic (step 3 "Configure input and output").
|
||||
|
||||
|
||||
|
||||
@endsphinxdirective
|
||||
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
# Supported Models {#openvino_supported_models}
|
||||
.. {#openvino_supported_models}
|
||||
|
||||
Supported Models
|
||||
================
|
||||
|
||||
|
||||
@sphinxdirective
|
||||
|
||||
.. meta::
|
||||
:description: Check the list of officially supported models in Intel®
|
||||
@@ -30,6 +32,5 @@ The list is based on release 2023.0, as of June 01, 2023
|
||||
* As OpenVINO™ is open source you can enhance it with your own contribution to the GitHub repository. To learn more, see the articles on :doc:`OpenVINO Extensibility <openvino_docs_Extensibility_UG_Intro>`.
|
||||
|
||||
|
||||
@endsphinxdirective
|
||||
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
# Supported Operations - by Framework Frontend {#openvino_resources_supported_operations_frontend}
|
||||
.. {#openvino_resources_supported_operations_frontend}
|
||||
|
||||
Supported Operations - by Framework Frontend
|
||||
============================================
|
||||
|
||||
@sphinxdirective
|
||||
|
||||
.. meta::
|
||||
:description: Check the list of operations supported by OpenVINO Framework Frontend.
|
||||
@@ -1138,4 +1140,3 @@ This page lists operations supported by OpenVINO Framework Frontend.
|
||||
========================================== ==========================================================================================
|
||||
|
||||
|
||||
@endsphinxdirective
|
||||
@@ -1,6 +1,8 @@
|
||||
# Supported Operations - by Inference Devices {#openvino_resources_supported_operations}
|
||||
.. {#openvino_resources_supported_operations}
|
||||
|
||||
Supported Operations - by Inference Devices
|
||||
===========================================
|
||||
|
||||
@sphinxdirective
|
||||
|
||||
This page lists operations supported by OpenVINO inference devices. The table presents general information,
|
||||
for a more detailed and most recent listing of operations that are implemented and tested:
|
||||
@@ -168,4 +170,3 @@ for a more detailed and most recent listing of operations that are implemented a
|
||||
|
||||
|
||||
|
||||
@endsphinxdirective
|
||||
@@ -1,6 +1,8 @@
|
||||
# Performance Benchmarks {#openvino_docs_performance_benchmarks}
|
||||
.. {#openvino_docs_performance_benchmarks}
|
||||
|
||||
Performance Benchmarks
|
||||
======================
|
||||
|
||||
@sphinxdirective
|
||||
|
||||
.. meta::
|
||||
:description: Use the benchmark results for Intel® Distribution of OpenVINO™
|
||||
@@ -179,4 +181,3 @@ Your costs and results may vary.
|
||||
Intel optimizations, for Intel compilers or other products, may not optimize to the same degree for non-Intel products.
|
||||
|
||||
|
||||
@endsphinxdirective
|
||||
@@ -1,7 +1,9 @@
|
||||
# Getting Performance Numbers {#openvino_docs_MO_DG_Getting_Performance_Numbers}
|
||||
.. {#openvino_docs_MO_DG_Getting_Performance_Numbers}
|
||||
|
||||
Getting Performance Numbers
|
||||
===========================
|
||||
|
||||
|
||||
@sphinxdirective
|
||||
|
||||
This guide explains how to use the benchmark_app to get performance numbers. It also explains how the performance
|
||||
numbers are reflected through internal inference performance counters and execution graphs. It also includes
|
||||
@@ -154,6 +156,5 @@ Therefore, you can also compile OpenVINO from the source code with ITT enabled a
|
||||
insights in the application-level performance on the timeline view.
|
||||
|
||||
|
||||
@endsphinxdirective
|
||||
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
# Performance Information F.A.Q. {#openvino_docs_performance_benchmarks_faq}
|
||||
.. {#openvino_docs_performance_benchmarks_faq}
|
||||
|
||||
Performance Information F.A.Q.
|
||||
==============================
|
||||
|
||||
|
||||
@sphinxdirective
|
||||
|
||||
|
||||
.. meta::
|
||||
@@ -165,4 +167,3 @@
|
||||
inference is required.
|
||||
|
||||
|
||||
@endsphinxdirective
|
||||
@@ -1,7 +1,9 @@
|
||||
# Model Accuracy {#openvino_docs_performance_int8_vs_fp32}
|
||||
.. {#openvino_docs_performance_int8_vs_fp32}
|
||||
|
||||
Model Accuracy
|
||||
==============
|
||||
|
||||
|
||||
@sphinxdirective
|
||||
|
||||
The following two tables present the absolute accuracy drop calculated as the accuracy difference
|
||||
between OV-accuracy and the original frame work accuracy for FP32, and the same for INT8 and FP16
|
||||
@@ -228,4 +230,3 @@ for more information.
|
||||
Notes: For all accuracy metrics except perplexity a "-", (minus sign), indicates an accuracy drop.
|
||||
For perplexity the values do not indicate a deviation from a reference but are the actual measured accuracy for the model.
|
||||
|
||||
@endsphinxdirective
|
||||
@@ -1,6 +1,8 @@
|
||||
# OpenVINO Release Notes {#openvino_release_notes}
|
||||
.. {#openvino_release_notes}
|
||||
|
||||
OpenVINO Release Notes
|
||||
======================
|
||||
|
||||
@sphinxdirective
|
||||
|
||||
The Intel® Distribution of OpenVINO™ toolkit is an open-source solution for optimizing
|
||||
and deploying AI inference in domains such as computer vision,automatic speech
|
||||
@@ -384,4 +386,3 @@ and distribution options.
|
||||
|
||||
|
||||
|
||||
@endsphinxdirective
|
||||
@@ -1,6 +1,8 @@
|
||||
# System Requirements {#system_requirements}
|
||||
.. {#system_requirements}
|
||||
|
||||
System Requirements
|
||||
===================
|
||||
|
||||
@sphinxdirective
|
||||
|
||||
|
||||
Certain hardware requires specific drivers to work properly with OpenVINO.
|
||||
@@ -222,4 +224,3 @@ Performance varies by use, configuration and other factors. Learn more at
|
||||
|
||||
|
||||
|
||||
@endsphinxdirective
|
||||
@@ -1,6 +1,8 @@
|
||||
# Documentation {#documentation}
|
||||
.. {#documentation}
|
||||
|
||||
Documentation
|
||||
=============
|
||||
|
||||
@sphinxdirective
|
||||
|
||||
.. meta::
|
||||
:description: Explore the OpenVINO toolkit workflow that entails preparing,
|
||||
@@ -33,4 +35,3 @@ This section provides reference documents that guide you through the OpenVINO to
|
||||
| :doc:`OpenVINO™ Security <openvino_docs_security_guide_introduction>`
|
||||
| Learn how to use OpenVINO securely and protect your data to meet specific security and privacy requirements.
|
||||
|
||||
@endsphinxdirective
|
||||
@@ -1,6 +1,8 @@
|
||||
# OpenVINO™ Ecosystem Overview {#openvino_ecosystem}
|
||||
.. {#openvino_ecosystem}
|
||||
|
||||
OpenVINO™ Ecosystem Overview
|
||||
==============================
|
||||
|
||||
@sphinxdirective
|
||||
|
||||
.. meta::
|
||||
:description: OpenVINO™ ecosystem offers various resources for developing deep learning solutions.
|
||||
@@ -62,5 +64,4 @@ More resources:
|
||||
|
||||
|
||||
|
||||
@endsphinxdirective
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
# Datumaro {#datumaro_documentation}
|
||||
.. {#datumaro_documentation}
|
||||
|
||||
Datumaro
|
||||
========
|
||||
|
||||
@sphinxdirective
|
||||
|
||||
.. meta::
|
||||
:description: Start working with Datumaro, which offers functionalities for basic data
|
||||
@@ -72,5 +74,4 @@ Python Hands-on Examples
|
||||
* `Deep learning end-to-end use-cases <https://openvinotoolkit.github.io/datumaro/stable/docs/jupyter_notebook_examples/e2e_example.html>`__
|
||||
|
||||
|
||||
@endsphinxdirective
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
# OpenVINO™ Training Extensions {#ote_documentation}
|
||||
.. {#ote_documentation}
|
||||
|
||||
OpenVINO™ Training Extensions
|
||||
===============================
|
||||
|
||||
@sphinxdirective
|
||||
|
||||
.. meta::
|
||||
:description: OpenVINO™ Training Extensions include advanced algorithms used
|
||||
@@ -42,6 +44,5 @@ Tutorials
|
||||
* `Base tutorial <https://openvinotoolkit.github.io/training_extensions/stable/guide/tutorials/base/index.html>`__
|
||||
* `Advanced tutorial <https://openvinotoolkit.github.io/training_extensions/stable/guide/tutorials/advanced/index.html>`__
|
||||
|
||||
@endsphinxdirective
|
||||
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
# OpenVINO™ Security Add-on {#ovsa_get_started}
|
||||
.. {#ovsa_get_started}
|
||||
|
||||
OpenVINO™ Security Add-on
|
||||
===========================
|
||||
|
||||
@sphinxdirective
|
||||
|
||||
.. meta::
|
||||
:description: Learn how to setup hardware and virtual machines to use the OpenVINO™ Security Add-on to access and run access controlled models.
|
||||
@@ -1053,5 +1055,4 @@ Use these links for more information:
|
||||
- `OpenVINO Model Server Quick Start Guide <https://github.com/openvinotoolkit/model_server/blob/main/docs/ovms_quickstart.md>`__
|
||||
- `Model repository <https://github.com/openvinotoolkit/model_server/blob/main/docs/models_repository.md>`__
|
||||
|
||||
@endsphinxdirective
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
# OpenVINO Extensibility Mechanism {#openvino_docs_Extensibility_UG_Intro}
|
||||
.. {#openvino_docs_Extensibility_UG_Intro}
|
||||
|
||||
OpenVINO Extensibility Mechanism
|
||||
================================
|
||||
|
||||
@sphinxdirective
|
||||
|
||||
.. meta::
|
||||
:description: Explore OpenVINO™ Extensibility API, which allows adding
|
||||
@@ -194,4 +196,3 @@ See Also
|
||||
* :doc:`Using OpenVINO Runtime Samples <openvino_docs_OV_UG_Samples_Overview>`
|
||||
* :doc:`Hello Shape Infer SSD sample <openvino_inference_engine_samples_hello_reshape_ssd_README>`
|
||||
|
||||
@endsphinxdirective
|
||||
@@ -1,6 +1,8 @@
|
||||
# How to Implement Custom GPU Operations {#openvino_docs_Extensibility_UG_GPU}
|
||||
.. {#openvino_docs_Extensibility_UG_GPU}
|
||||
|
||||
How to Implement Custom GPU Operations
|
||||
======================================
|
||||
|
||||
@sphinxdirective
|
||||
|
||||
.. meta::
|
||||
:description: Learn the details of custom kernel support for the GPU device to
|
||||
@@ -358,4 +360,3 @@ execution ends.
|
||||
|
||||
For more information, refer to the `printf Function <https://www.khronos.org/registry/OpenCL/sdk/1.2/docs/man/xhtml/printfFunction.html>`__.
|
||||
|
||||
@endsphinxdirective
|
||||
@@ -1,6 +1,8 @@
|
||||
# Custom OpenVINO™ Operations {#openvino_docs_Extensibility_UG_add_openvino_ops}
|
||||
.. {#openvino_docs_Extensibility_UG_add_openvino_ops}
|
||||
|
||||
Custom OpenVINO™ Operations
|
||||
=============================
|
||||
|
||||
@sphinxdirective
|
||||
|
||||
.. meta::
|
||||
:description: Explore OpenVINO™ Extension API which enables registering
|
||||
@@ -83,4 +85,3 @@ OpenVINO™ operation contains two constructors:
|
||||
:language: cpp
|
||||
:fragment: [op:evaluate]
|
||||
|
||||
@endsphinxdirective
|
||||
@@ -1,6 +1,8 @@
|
||||
# Frontend Extensions {#openvino_docs_Extensibility_UG_Frontend_Extensions}
|
||||
.. {#openvino_docs_Extensibility_UG_Frontend_Extensions}
|
||||
|
||||
Frontend Extensions
|
||||
===================
|
||||
|
||||
@sphinxdirective
|
||||
|
||||
.. meta::
|
||||
:description: Learn how to use frontend extension classes to facilitate the mapping
|
||||
@@ -414,6 +416,5 @@ The next example shows such conversion for the ``TopKV2`` operation.
|
||||
:language: cpp
|
||||
:fragment: [frontend_extension_tf_TopK]
|
||||
|
||||
@endsphinxdirective
|
||||
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
# Overview of OpenVINO Plugin Library {#openvino_docs_ie_plugin_dg_overview}
|
||||
.. {#openvino_docs_ie_plugin_dg_overview}
|
||||
|
||||
Overview of OpenVINO Plugin Library
|
||||
===================================
|
||||
|
||||
@sphinxdirective
|
||||
|
||||
.. meta::
|
||||
:description: Develop and implement independent inference solutions for
|
||||
@@ -97,4 +99,3 @@ API References
|
||||
* `OpenVINO Plugin API <https://docs.openvino.ai/2023.2/groupov_dev_api.html>`__
|
||||
* `OpenVINO Transformation API <https://docs.openvino.ai/2023.2/groupie_transformation_api.html>`__
|
||||
|
||||
@endsphinxdirective
|
||||
@@ -1,6 +1,8 @@
|
||||
# Asynchronous Inference Request {#openvino_docs_ov_plugin_dg_async_infer_request}
|
||||
.. {#openvino_docs_ov_plugin_dg_async_infer_request}
|
||||
|
||||
Asynchronous Inference Request
|
||||
==============================
|
||||
|
||||
@sphinxdirective
|
||||
|
||||
.. meta::
|
||||
:description: Use the base ov::IAsyncInferRequest class to implement a custom asynchronous inference request in OpenVINO.
|
||||
@@ -73,5 +75,4 @@ The method allows to cancel the infer request execution:
|
||||
:language: cpp
|
||||
:fragment: [async_infer_request:cancel]
|
||||
|
||||
@endsphinxdirective
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
# Build Plugin Using CMake {#openvino_docs_ov_plugin_dg_plugin_build}
|
||||
.. {#openvino_docs_ov_plugin_dg_plugin_build}
|
||||
|
||||
Build Plugin Using CMake
|
||||
========================
|
||||
|
||||
@sphinxdirective
|
||||
|
||||
.. meta::
|
||||
:description: Learn how to build a plugin using CMake and OpenVINO Developer Package.
|
||||
@@ -101,5 +103,4 @@ To build a plugin and its tests, run the following CMake scripts:
|
||||
|
||||
The ``openvino::funcSharedTests`` static library with common functional OpenVINO Plugin tests is imported via the OpenVINO Developer Package.
|
||||
|
||||
@endsphinxdirective
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
# Compiled Model {#openvino_docs_ov_plugin_dg_compiled_model}
|
||||
.. {#openvino_docs_ov_plugin_dg_compiled_model}
|
||||
|
||||
Compiled Model
|
||||
==============
|
||||
|
||||
@sphinxdirective
|
||||
|
||||
.. meta::
|
||||
:description: Use the ov::CompiledModel class as the base class for a compiled
|
||||
@@ -132,4 +134,3 @@ The methods returns the runtime model with backend specific information.
|
||||
|
||||
The next step in plugin library implementation is the :doc:`Synchronous Inference Request <openvino_docs_ov_plugin_dg_infer_request>` class.
|
||||
|
||||
@endsphinxdirective
|
||||
@@ -1,6 +1,8 @@
|
||||
# Synchronous Inference Request {#openvino_docs_ov_plugin_dg_infer_request}
|
||||
.. {#openvino_docs_ov_plugin_dg_infer_request}
|
||||
|
||||
Synchronous Inference Request
|
||||
=============================
|
||||
|
||||
@sphinxdirective
|
||||
|
||||
.. meta::
|
||||
:description: Use the ov::ISyncInferRequest interface as the base class to implement a synchronous inference request in OpenVINO.
|
||||
@@ -146,4 +148,3 @@ The plugin specific method allows to interrupt the synchronous execution from th
|
||||
|
||||
The next step in the plugin library implementation is the :doc:`Asynchronous Inference Request <openvino_docs_ov_plugin_dg_async_infer_request>` class.
|
||||
|
||||
@endsphinxdirective
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user