Skip to content

Commit d3cd9db

Browse files
authored
Merge branch 'main' into yc/0829-buffer-alignment-ub
2 parents 0e6d6ea + bddc8f3 commit d3cd9db

File tree

10 files changed

+61
-119
lines changed

10 files changed

+61
-119
lines changed

scripts/benchmarks/benches/compute.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ def run(self, env_vars) -> Result:
8282

8383
result = self.run_bench(command, env_vars)
8484
(label, mean) = self.parse_output(result)
85-
return Result(label=label, value=mean, command=command, env=env_vars, stdout=result)
85+
return Result(label=label, value=mean, command=command, env=env_vars, stdout=result, lower_is_better=self.lower_is_better())
8686

8787
def parse_output(self, output):
8888
csv_file = io.StringIO(output)

scripts/benchmarks/benches/velocity.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ def run(self, env_vars) -> Result:
6161

6262
result = self.run_bench(command, env_vars)
6363

64-
return Result(label=self.bench_name, value=self.parse_output(result), command=command, env=env_vars, stdout=result)
64+
return Result(label=self.bench_name, value=self.parse_output(result), command=command, env=env_vars, stdout=result, lower_is_better=self.lower_is_better())
6565

6666
def teardown(self):
6767
return

scripts/benchmarks/main.py

Lines changed: 38 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -52,34 +52,46 @@ def main(directory, additional_env_vars, save_name, compare_names, filter):
5252
benchmarks = [benchmark for benchmark in benchmarks if filter.search(benchmark.name())]
5353

5454
for benchmark in benchmarks:
55-
print(f"setting up {benchmark.name()}... ", end='', flush=True)
56-
benchmark.setup()
57-
print("complete.")
55+
try:
56+
print(f"setting up {benchmark.name()}... ", end='', flush=True)
57+
benchmark.setup()
58+
print("complete.")
59+
except Exception as e:
60+
if options.exit_on_failure:
61+
raise e
62+
else:
63+
print(f"failed: {e}")
5864

5965
results = []
6066
for benchmark in benchmarks:
61-
merged_env_vars = {**additional_env_vars}
62-
iteration_results = []
63-
for iter in range(options.iterations):
64-
print(f"running {benchmark.name()}, iteration {iter}... ", end='', flush=True)
65-
bench_results = benchmark.run(merged_env_vars)
66-
if bench_results is not None:
67-
print(f"complete ({bench_results.value} {benchmark.unit()}).")
68-
iteration_results.append(bench_results)
67+
try:
68+
merged_env_vars = {**additional_env_vars}
69+
iteration_results = []
70+
for iter in range(options.iterations):
71+
print(f"running {benchmark.name()}, iteration {iter}... ", end='', flush=True)
72+
bench_results = benchmark.run(merged_env_vars)
73+
if bench_results is not None:
74+
print(f"complete ({bench_results.value} {benchmark.unit()}).")
75+
iteration_results.append(bench_results)
76+
else:
77+
print(f"did not finish.")
78+
79+
if len(iteration_results) == 0:
80+
continue
81+
82+
iteration_results.sort(key=lambda res: res.value)
83+
median_index = len(iteration_results) // 2
84+
median_result = iteration_results[median_index]
85+
86+
median_result.unit = benchmark.unit()
87+
median_result.name = benchmark.name()
88+
89+
results.append(median_result)
90+
except Exception as e:
91+
if options.exit_on_failure:
92+
raise e
6993
else:
70-
print(f"did not finish.")
71-
72-
if len(iteration_results) == 0:
73-
continue
74-
75-
iteration_results.sort(key=lambda res: res.value)
76-
median_index = len(iteration_results) // 2
77-
median_result = iteration_results[median_index]
78-
79-
median_result.unit = benchmark.unit()
80-
median_result.name = benchmark.name()
81-
82-
results.append(median_result)
94+
print(f"failed: {e}")
8395

8496
for benchmark in benchmarks:
8597
print(f"tearing down {benchmark.name()}... ", end='', flush=True)
@@ -126,6 +138,7 @@ def validate_and_parse_env_args(env_args):
126138
parser.add_argument("--timeout", type=int, help='Timeout for individual benchmarks in seconds.', default=600)
127139
parser.add_argument("--filter", type=str, help='Regex pattern to filter benchmarks by name.', default=None)
128140
parser.add_argument("--verbose", help='Print output of all the commands.', action="store_true")
141+
parser.add_argument("--exit_on_failure", help='Exit on first failure.', action="store_true")
129142

130143
args = parser.parse_args()
131144
additional_env_vars = validate_and_parse_env_args(args.env)
@@ -137,6 +150,7 @@ def validate_and_parse_env_args(env_args):
137150
options.timeout = args.timeout
138151
options.ur_dir = args.ur_dir
139152
options.ur_adapter_name = args.ur_adapter_name
153+
options.exit_on_failure = args.exit_on_failure
140154

141155
benchmark_filter = re.compile(args.filter) if args.filter else None
142156

scripts/benchmarks/output.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ def generate_summary_table(chart_data: dict[str, list[Result]]):
116116
if key in results:
117117
value = results[key].value
118118
if key == best_key:
119-
row += f" `**{value}**` |" # Highlight the best value
119+
row += f" <ins>{value}</ins> |" # Highlight the best value
120120
else:
121121
row += f" {value} |"
122122
else:
@@ -132,6 +132,7 @@ def generate_markdown(chart_data: dict[str, list[Result]]):
132132

133133
return f"""
134134
# Summary
135+
<ins>result</ins> is better\n
135136
{summary_table}
136137
# Charts
137138
{mermaid_script}

source/adapters/level_zero/v2/common.hpp

Lines changed: 0 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -85,70 +85,6 @@ struct ze_handle_wrapper {
8585
bool ownZeHandle;
8686
};
8787

88-
template <typename URHandle, ur_result_t (*retain)(URHandle),
89-
ur_result_t (*release)(URHandle)>
90-
struct ur_shared_handle {
91-
using handle_t = URHandle;
92-
93-
ur_shared_handle() : handle(nullptr) {}
94-
explicit ur_shared_handle(handle_t handle) : handle(handle) {}
95-
~ur_shared_handle() {
96-
try {
97-
reset();
98-
} catch (...) {
99-
}
100-
}
101-
102-
ur_shared_handle(const ur_shared_handle &other) : handle(other.handle) {
103-
retain(handle);
104-
}
105-
ur_shared_handle(ur_shared_handle &&other) : handle(other.handle) {
106-
other.handle = nullptr;
107-
}
108-
ur_shared_handle(std::nullptr_t) : handle(nullptr) {}
109-
110-
void reset() {
111-
if (!handle) {
112-
return;
113-
}
114-
115-
UR_CALL_THROWS(release(handle));
116-
handle = nullptr;
117-
}
118-
119-
ur_shared_handle &operator=(const ur_shared_handle &other) {
120-
if (handle) {
121-
release(handle);
122-
}
123-
handle = other.handle;
124-
retain(handle);
125-
return *this;
126-
}
127-
ur_shared_handle &operator=(ur_shared_handle &&other) {
128-
if (handle) {
129-
release(handle);
130-
}
131-
handle = other.handle;
132-
other.handle = nullptr;
133-
return *this;
134-
}
135-
ur_shared_handle &operator=(std::nullptr_t) {
136-
if (handle) {
137-
release(handle);
138-
}
139-
new (this) ur_shared_handle(nullptr);
140-
return *this;
141-
}
142-
143-
handle_t *ptr() { return &handle; }
144-
handle_t get() const { return handle; }
145-
handle_t operator->() { return handle; }
146-
operator handle_t() { return handle; }
147-
148-
private:
149-
handle_t handle;
150-
};
151-
15288
using ze_kernel_handle_t =
15389
ze_handle_wrapper<::ze_kernel_handle_t, zeKernelDestroy>;
15490

@@ -158,11 +94,5 @@ using ze_event_handle_t =
15894
using ze_event_pool_handle_t =
15995
ze_handle_wrapper<::ze_event_pool_handle_t, zeEventPoolDestroy>;
16096

161-
using ur_queue_shared_handle_t =
162-
ur_shared_handle<ur_queue_handle_t, urQueueRetain, urQueueRelease>;
163-
164-
using ur_kernel_shared_handle_t =
165-
ur_shared_handle<ur_kernel_handle_t, urKernelRetain, urKernelRelease>;
166-
16797
} // namespace raii
16898
} // namespace v2

source/adapters/level_zero/v2/kernel.cpp

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,12 @@ ur_result_t ur_single_device_kernel_t::release() {
3232
return UR_RESULT_SUCCESS;
3333
}
3434

35-
ur_kernel_handle_t_::ur_kernel_handle_t_(ur_program_shared_handle_t hProgram,
35+
ur_kernel_handle_t_::ur_kernel_handle_t_(ur_program_handle_t hProgram,
3636
const char *kernelName)
3737
: hProgram(hProgram),
3838
deviceKernels(hProgram->Context->getPlatform()->getNumDevices()) {
39+
urProgramRetain(hProgram);
40+
3941
for (auto [zeDevice, zeModule] : hProgram->ZeModuleMap) {
4042
ZeStruct<ze_kernel_desc_t> zeKernelDesc;
4143
zeKernelDesc.pKernelName = kernelName;
@@ -78,7 +80,8 @@ ur_result_t ur_kernel_handle_t_::release() {
7880
singleDeviceKernelOpt.value().hKernel.reset();
7981
}
8082
}
81-
hProgram.reset();
83+
84+
UR_CALL_THROWS(urProgramRelease(hProgram));
8285

8386
return UR_RESULT_SUCCESS;
8487
}
@@ -190,14 +193,13 @@ ur_result_t ur_kernel_handle_t_::setArgPointer(
190193
}
191194

192195
ur_program_handle_t ur_kernel_handle_t_::getProgramHandle() const {
193-
return hProgram.get();
196+
return hProgram;
194197
}
195198

196199
UR_APIEXPORT ur_result_t UR_APICALL
197200
urKernelCreate(ur_program_handle_t hProgram, const char *pKernelName,
198201
ur_kernel_handle_t *phKernel) {
199-
*phKernel = new ur_kernel_handle_t_(
200-
ur_kernel_handle_t_::ur_program_shared_handle_t(hProgram), pKernelName);
202+
*phKernel = new ur_kernel_handle_t_(hProgram, pKernelName);
201203
return UR_RESULT_SUCCESS;
202204
}
203205

source/adapters/level_zero/v2/kernel.hpp

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -26,21 +26,8 @@ struct ur_single_device_kernel_t {
2626

2727
struct ur_kernel_handle_t_ : _ur_object {
2828
private:
29-
static inline ur_result_t
30-
internalProgramRelease(ur_program_handle_t hProgram) {
31-
// do a release on the program this kernel was part of without delete of the
32-
// program handle.
33-
hProgram->ur_release_program_resources(false);
34-
return UR_RESULT_SUCCESS;
35-
}
36-
3729
public:
38-
using ur_program_shared_handle_t =
39-
v2::raii::ur_shared_handle<ur_program_handle_t, urProgramRetain,
40-
internalProgramRelease>;
41-
42-
ur_kernel_handle_t_(ur_program_shared_handle_t hProgram,
43-
const char *kernelName);
30+
ur_kernel_handle_t_(ur_program_handle_t hProgram, const char *kernelName);
4431

4532
// From native handle
4633
ur_kernel_handle_t_(ur_native_handle_t hNativeKernel,
@@ -75,7 +62,7 @@ struct ur_kernel_handle_t_ : _ur_object {
7562

7663
private:
7764
// Keep the program of the kernel.
78-
ur_program_shared_handle_t hProgram;
65+
ur_program_handle_t hProgram;
7966

8067
// Vector of ur_single_device_kernel_t indexed by device->Id
8168
std::vector<std::optional<ur_single_device_kernel_t>> deviceKernels;

test/conformance/kernel/kernel_adapter_native_cpu.match

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ urKernelGetSubGroupInfoTest.InvalidEnumeration/SYCL_NATIVE_CPU___SYCL_Native_CPU
104104
urKernelGetSubGroupInfoTest.InvalidEnumeration/SYCL_NATIVE_CPU___SYCL_Native_CPU__{{.*}}__UR_KERNEL_SUB_GROUP_INFO_SUB_GROUP_SIZE_INTEL
105105
urKernelGetSubGroupInfoSingleTest.CompileNumSubgroupsIsZero/SYCL_NATIVE_CPU___SYCL_Native_CPU__{{.*}}
106106
urKernelReleaseTest.Success/SYCL_NATIVE_CPU___SYCL_Native_CPU__{{.*}}
107+
urKernelReleaseTest.KernelReleaseAfterProgramRelease/SYCL_NATIVE_CPU___SYCL_Native_CPU__{{.*}}
107108
urKernelReleaseTest.InvalidNullHandleKernel/SYCL_NATIVE_CPU___SYCL_Native_CPU__{{.*}}
108109
urKernelRetainTest.Success/SYCL_NATIVE_CPU___SYCL_Native_CPU__{{.*}}
109110
urKernelRetainTest.InvalidNullHandleKernel/SYCL_NATIVE_CPU___SYCL_Native_CPU__{{.*}}

test/conformance/kernel/urKernelRelease.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,13 @@ TEST_P(urKernelReleaseTest, Success) {
1313
ASSERT_SUCCESS(urKernelRelease(kernel));
1414
}
1515

16+
TEST_P(urKernelReleaseTest, KernelReleaseAfterProgramRelease) {
17+
ASSERT_SUCCESS(urKernelRetain(kernel));
18+
ASSERT_SUCCESS(urProgramRelease(program));
19+
program = nullptr;
20+
ASSERT_SUCCESS(urKernelRelease(kernel));
21+
}
22+
1623
TEST_P(urKernelReleaseTest, InvalidNullHandleKernel) {
1724
ASSERT_EQ_RESULT(UR_RESULT_ERROR_INVALID_NULL_HANDLE,
1825
urKernelRelease(nullptr));

third_party/deps.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ dependencies:
2525
- libssh2=1.11.0
2626
- libstdcxx-ng=13.1.0
2727
- libuv=1.44.2
28-
- libzlib=1.2.13
28+
- libzlib=1.3.1
2929
- llvm-spirv=14.0.0
3030
- llvm-tools=14.0.6
3131
- llvmdev=14.0.6
@@ -35,5 +35,5 @@ dependencies:
3535
- rhash=1.4.3
3636
# don't upgrade xz utils due to CVE-2024-3094
3737
- xz=5.2.6
38-
- zlib=1.2.13
38+
- zlib=1.3.1
3939
- zstd=1.5.2

0 commit comments

Comments
 (0)