Skip to content

Commit a6115ca

Browse files
committed
add extra warmup iterations to latency test
1 parent 0647993 commit a6115ca

1 file changed

Lines changed: 22 additions & 10 deletions

File tree

tests/copylat.cpp

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ using namespace gdrcopy::test;
4141
int num_write_iters = 10000;
4242
int num_read_iters = 100;
4343
int small_size_iter_factor = 1000;
44+
int warmup = 10;
4445

4546
int main(int argc, char *argv[])
4647
{
@@ -54,7 +55,7 @@ int main(int argc, char *argv[])
5455

5556
while(1) {
5657
int c;
57-
c = getopt(argc, argv, "s:d:w:r:hc");
58+
c = getopt(argc, argv, "s:d:w:r:hcW:");
5859
if (c == -1)
5960
break;
6061

@@ -71,11 +72,18 @@ int main(int argc, char *argv[])
7172
case 'r':
7273
num_read_iters = strtol(optarg, NULL, 0);
7374
break;
75+
case 'W':
76+
warmup = strtol(optarg, NULL, 0);
77+
break;
7478
case 'c':
7579
do_cumemcpy = true;
7680
break;
7781
case 'h':
78-
printf("syntax: %s -s <buf size> -d <gpu dev id> -w <write iters> -r <read iters> -h[help] -c[do-cuMemcpy]\n", argv[0]);
82+
printf("syntax: %s [-s <buf size>][-d <gpu dev id>][-w <write iters>][-r <read iters>][-h][-c][-w]\n"
83+
"-c benchmark cuMemcpy\n"
84+
"-w <# iterations> modify warmup (default %d)\n",
85+
argv[0],
86+
warmup);
7987
exit(EXIT_FAILURE);
8088
break;
8189
default:
@@ -147,8 +155,9 @@ int main(int argc, char *argv[])
147155
while (copy_size <= size) {
148156
int iter = 0;
149157
size_t num_iters = (size < 100000 ? num_write_iters*small_size_iter_factor: num_write_iters);
150-
clock_gettime(MYCLOCK, &beg);
151-
for (iter = 0; iter < num_iters; ++iter) {
158+
for (iter = 0; iter < num_iters+warmup; ++iter) {
159+
if (iter == warmup)
160+
clock_gettime(MYCLOCK, &beg);
152161
ASSERTDRV(cuMemcpy(d_A, (CUdeviceptr)init_buf, copy_size));
153162
}
154163
clock_gettime(MYCLOCK, &end);
@@ -169,8 +178,9 @@ int main(int argc, char *argv[])
169178
while (copy_size <= size) {
170179
int iter = 0;
171180
size_t num_iters = (size < 100000 ? small_size_iter_factor*num_read_iters:num_read_iters);
172-
clock_gettime(MYCLOCK, &beg);
173-
for (iter = 0; iter < num_iters; ++iter) {
181+
for (iter = 0; iter < num_iters+warmup; ++iter) {
182+
if (iter == warmup)
183+
clock_gettime(MYCLOCK, &beg);
174184
ASSERTDRV(cuMemcpy((CUdeviceptr)h_buf, d_A, copy_size));
175185
}
176186
clock_gettime(MYCLOCK, &end);
@@ -231,8 +241,9 @@ int main(int argc, char *argv[])
231241
int iter = 0;
232242
clock_gettime(MYCLOCK, &beg);
233243
size_t num_iters = (size < 100000 ? num_write_iters*small_size_iter_factor: num_write_iters);
234-
clock_gettime(MYCLOCK, &beg);
235-
for (iter = 0; iter < num_iters; ++iter) {
244+
for (iter = 0; iter < num_iters+warmup; ++iter) {
245+
if (iter == warmup)
246+
clock_gettime(MYCLOCK, &beg);
236247
gdr_copy_to_mapping(mh, buf_ptr, init_buf, copy_size);
237248
}
238249
clock_gettime(MYCLOCK, &end);
@@ -253,8 +264,9 @@ int main(int argc, char *argv[])
253264
while (copy_size <= size) {
254265
int iter = 0;
255266
size_t num_iters = (size < 100000 ? small_size_iter_factor*num_read_iters:num_read_iters);
256-
clock_gettime(MYCLOCK, &beg);
257-
for (iter = 0; iter < num_iters; ++iter) {
267+
for (iter = 0; iter < num_iters+warmup; ++iter) {
268+
if (iter == warmup)
269+
clock_gettime(MYCLOCK, &beg);
258270
gdr_copy_from_mapping(mh, h_buf, buf_ptr, copy_size);
259271
}
260272
clock_gettime(MYCLOCK, &end);

0 commit comments

Comments
 (0)