Skip to content

Commit 5f5bb28

Browse files
Lucky-Lodhi2004vgvassilev
authored andcommitted
enhanced enzyme comparison
1 parent c544717 commit 5f5bb28

1 file changed

Lines changed: 32 additions & 3 deletions

File tree

benchmark/EnzymeCladComparison.cpp

Lines changed: 32 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,13 @@ BM_ReverseModeAddArrayAndMultiplyWithScalarsExecute(benchmark::State& state) {
1616
double darr[5] = {0};
1717
for (auto _ : state) {
1818
grad.execute(arr, x, y, 5, darr, &dx, &dy, &dn);
19+
benchmark::DoNotOptimize(dx);
20+
benchmark::DoNotOptimize(dy);
21+
benchmark::DoNotOptimize(dn);
1922
dx = 0;
2023
dy = 0;
2124
for (int i = 0; i < n; i++) {
25+
benchmark::DoNotOptimize(darr[i]);
2226
darr[i] = 0;
2327
}
2428
}
@@ -39,10 +43,15 @@ static void BM_VectorForwardModeAddArrayAndMultiplyWithScalarsExecute(
3943
clad::array_ref<double> d_arr_ref(darr, 5);
4044
for (auto _ : state) {
4145
grad.execute(arr, x, y, 5, d_arr_ref, &dx, &dy, &dn);
46+
benchmark::DoNotOptimize(dx);
47+
benchmark::DoNotOptimize(dy);
48+
benchmark::DoNotOptimize(dn);
4249
dx = 0;
4350
dy = 0;
44-
for (int i = 0; i < n; i++)
51+
for (int i = 0; i < n; i++) {
52+
benchmark::DoNotOptimize(darr[i]);
4553
darr[i] = 0;
54+
}
4655
}
4756
}
4857

@@ -60,9 +69,13 @@ static void BM_ReverseModeAddArrayAndMultiplyWithScalarsExecuteEnzyme(
6069
double darr[5] = {0};
6170
for (auto _ : state) {
6271
grad.execute(arr, x, y, 5, darr, &dx, &dy, &dn);
72+
benchmark::DoNotOptimize(dx);
73+
benchmark::DoNotOptimize(dy);
74+
benchmark::DoNotOptimize(dn);
6375
dx = 0;
6476
dy = 0;
6577
for (int i = 0; i < n; i++) {
78+
benchmark::DoNotOptimize(darr[i]);
6679
darr[i] = 0;
6780
}
6881
}
@@ -77,6 +90,7 @@ static void BM_ReverseModeSumExecute(benchmark::State& state) {
7790
for (auto _ : state) {
7891
grad.execute(inputs, /*dim*/ 5, result);
7992
for (int i = 0; i < 5; i++) {
93+
benchmark::DoNotOptimize(result[i]);
8094
result[i] = 0;
8195
}
8296
}
@@ -90,8 +104,10 @@ static void BM_VectorForwardModeSumExecute(benchmark::State& state) {
90104
clad::array_ref<double> d_arr_ref(result, 5);
91105
for (auto _ : state) {
92106
grad.execute(inputs, /*dim*/ 5, d_arr_ref);
93-
for (int i = 0; i < 5; i++)
107+
for (int i = 0; i < 5; i++) {
108+
benchmark::DoNotOptimize(result[i]);
94109
result[i] = 0;
110+
}
95111
}
96112
}
97113
BENCHMARK(BM_VectorForwardModeSumExecute);
@@ -103,6 +119,7 @@ static void BM_ReverseModeSumExecuteWithEnzyme(benchmark::State& state) {
103119
for (auto _ : state) {
104120
grad.execute(inputs, /*dim*/ 5, result);
105121
for (int i = 0; i < 5; i++) {
122+
benchmark::DoNotOptimize(result[i]);
106123
result[i] = 0;
107124
}
108125
}
@@ -116,6 +133,7 @@ static void BM_ReverseModeProductExecute(benchmark::State& state) {
116133
for (auto _ : state) {
117134
grad.execute(inputs, /*dim*/ 5, result);
118135
for (int i = 0; i < 5; i++) {
136+
benchmark::DoNotOptimize(result[i]);
119137
result[i] = 0;
120138
}
121139
}
@@ -129,8 +147,10 @@ static void BM_VectorForwardModeProductExecute(benchmark::State& state) {
129147
clad::array_ref<double> d_arr_ref(result, 5);
130148
for (auto _ : state) {
131149
grad.execute(inputs, /*dim*/ 5, d_arr_ref);
132-
for (int i = 0; i < 5; i++)
150+
for (int i = 0; i < 5; i++) {
151+
benchmark::DoNotOptimize(result[i]);
133152
result[i] = 0;
153+
}
134154
}
135155
}
136156
BENCHMARK(BM_VectorForwardModeProductExecute);
@@ -142,6 +162,7 @@ static void BM_ReverseModeProductExecuteEnzyme(benchmark::State& state) {
142162
for (auto _ : state) {
143163
grad.execute(inputs, /*dim*/ 5, result);
144164
for (int i = 0; i < 5; i++) {
165+
benchmark::DoNotOptimize(result[i]);
145166
result[i] = 0;
146167
}
147168
}
@@ -161,7 +182,11 @@ static void BM_ReverseGaus(benchmark::State& state) {
161182

162183
for (auto _ : state) {
163184
dfdp_grad.execute(x, p, /*sigma*/ 2, dim, dx, dp, &ds, &ddim);
185+
benchmark::DoNotOptimize(ds);
186+
benchmark::DoNotOptimize(ddim);
164187
for (int i = 0; i < dim; i++) {
188+
benchmark::DoNotOptimize(dx[i]);
189+
benchmark::DoNotOptimize(dp[i]);
165190
dx[i] = 0; // clear for the next benchmark iteration
166191
dp[i] = 0; // clear for the next benchmark iteration
167192
}
@@ -185,7 +210,11 @@ static void BM_ReverseGausEnzyme(benchmark::State& state) {
185210

186211
for (auto _ : state) {
187212
dfdp_grad.execute(x, p, /*sigma*/ 2, dim, dx, dp, &ds, &ddim);
213+
benchmark::DoNotOptimize(ds);
214+
benchmark::DoNotOptimize(ddim);
188215
for (int i = 0; i < dim; i++) {
216+
benchmark::DoNotOptimize(dx[i]);
217+
benchmark::DoNotOptimize(dp[i]);
189218
dx[i] = 0; // clear for the next benchmark iteration
190219
dp[i] = 0; // clear for the next benchmark iteration
191220
}

0 commit comments

Comments
 (0)