Skip to content

Commit 817c4ad

Browse files
authored
[UR][Benchmark scripts] Don't unpack oneApi install package if it is already installed (#18784)
Signed-off-by: Mateusz P. Nowak <mateusz.p.nowak@intel.com>
1 parent 4d4fde2 commit 817c4ad

File tree

1 file changed

+30
-13
lines changed

1 file changed

+30
-13
lines changed

devops/scripts/benchmarks/utils/oneapi.py

Lines changed: 30 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
from options import options
99
import os
1010
import hashlib
11+
import glob
1112

1213

1314
class OneAPI:
@@ -18,6 +19,7 @@ def __init__(self):
1819

1920
self.install_package(
2021
"base",
22+
"2025.1.0+627",
2123
"https://registrationcenter-download.intel.com/akdlm/IRC_NAS/cca951e1-31e7-485e-b300-fe7627cb8c08/intel-oneapi-base-toolkit-2025.1.0.651_offline.sh",
2224
"98cad2489f2c90a2b328568a59371cf35855a3338643f61a9fc2d16a265d29f22feb2d673916dd7be18fa12a5e6d2475",
2325
)
@@ -27,26 +29,41 @@ def generate_unique_oneapi_id(self, path):
2729
hash_object = hashlib.md5(path.encode())
2830
return hash_object.hexdigest()
2931

30-
def install_package(self, name, url, checksum):
31-
package_path = os.path.join(self.oneapi_dir, name)
32+
def check_install(self, version):
33+
logs_dir = os.path.join(self.oneapi_dir, "logs")
34+
pattern = f"{logs_dir}/installer.install.intel.oneapi.lin.basekit.product,v={version}*.log"
35+
log_files = glob.glob(pattern)
36+
success_line = f"Operation 'intel.oneapi.lin.basekit.product,v={version}' execution is finished with status Success."
37+
for log_file in log_files:
38+
try:
39+
with open(log_file, "r") as f:
40+
for line in f:
41+
if success_line in line:
42+
return True
43+
except Exception:
44+
continue
45+
return False
46+
47+
def install_package(self, name, version, url, checksum):
48+
if self.check_install(version):
49+
print(f"{name} version {version} already installed, skipping.")
50+
return
51+
package_name = f"package_{name}_{version}.sh"
52+
package_path = os.path.join(self.oneapi_dir, f"{package_name}")
3253
if Path(package_path).exists():
33-
print(
34-
f"{package_path} exists, skipping installing oneAPI package {name}..."
54+
print(f"{package_path} exists, skipping download of oneAPI package...")
55+
else:
56+
package = download(
57+
self.oneapi_dir, url, f"{package_name}", checksum=checksum
3558
)
36-
return
37-
38-
package = download(
39-
self.oneapi_dir, url, f"package_{name}.sh", checksum=checksum
40-
)
4159
try:
42-
print(f"installing {name}")
4360
run(
44-
f"sh {package} -a -s --eula accept --install-dir {self.oneapi_dir} --instance {self.oneapi_instance_id}"
61+
f"sh {package_path} -a -s --eula accept --install-dir {self.oneapi_dir} --instance {self.oneapi_instance_id}"
4562
)
4663
except:
47-
print("oneAPI installation likely exists already")
64+
print(f"OneAPI {name} version {version} installation likely exists already")
4865
return
49-
print(f"{name} installation complete")
66+
print(f"OneAPI {name} version {version} installation complete")
5067

5168
def package_dir(self, package, dir):
5269
return os.path.join(self.oneapi_dir, package, "latest", dir)

0 commit comments

Comments
 (0)