@@ -116,34 +116,28 @@ class OptionsCacheTest : public ::testing::Test {
116
116
}
117
117
return ptrs;
118
118
}
119
+ void recordRuntime (
120
+ const std::string& tc,
121
+ tc::CudaMappingOptions& options,
122
+ size_t us) {
123
+ auto canonical = lang::CanonicalTcString (tc);
124
+ auto inputTIs = tc::makeTensorInfoVector (makeInputPtrs ());
125
+ auto outputTIs = tc::makeTensorInfoVector (makeOutputPtrs ());
126
+ auto duration = tc::Duration::fromMicroSeconds (us);
127
+
128
+ optionsCache->recordRuntime (
129
+ canonical, inputTIs, outputTIs, backendStr (), options, duration);
130
+ }
119
131
};
120
132
121
133
TEST_F (OptionsCacheTest, DifferentIDs) {
122
134
auto options = tc::CudaMappingOptions::makeNaiveMappingOptions ();
123
135
auto inputPtrs = makeInputPtrs ();
124
136
auto outputPtrs = makeOutputPtrs ();
125
137
126
- optionsCache->recordRuntime (
127
- lang::CanonicalTcString (" kernel0" ),
128
- tc::makeTensorInfoVector (inputPtrs),
129
- tc::makeTensorInfoVector (outputPtrs),
130
- backendStr (),
131
- options,
132
- tc::Duration::fromMicroSeconds (10 ));
133
- optionsCache->recordRuntime (
134
- lang::CanonicalTcString (" kernel0" ),
135
- tc::makeTensorInfoVector (inputPtrs),
136
- tc::makeTensorInfoVector (outputPtrs),
137
- backendStr (),
138
- options,
139
- tc::Duration::fromMicroSeconds (11 ));
140
- optionsCache->recordRuntime (
141
- lang::CanonicalTcString (" kernel1" ),
142
- tc::makeTensorInfoVector (inputPtrs),
143
- tc::makeTensorInfoVector (outputPtrs),
144
- backendStr (),
145
- options,
146
- tc::Duration::fromMicroSeconds (1 ));
138
+ recordRuntime (" kernel0" , options, 10 );
139
+ recordRuntime (" kernel0" , options, 11 );
140
+ recordRuntime (" kernel1" , options, 1 );
147
141
148
142
{
149
143
OptionsCacheKey key{lang::CanonicalTcString (" kernel0" ),
@@ -190,20 +184,8 @@ TEST_F(OptionsCacheTest, DifferentOptions) {
190
184
auto inputPtrs = makeInputPtrs ();
191
185
auto outputPtrs = makeOutputPtrs ();
192
186
193
- optionsCache->recordRuntime (
194
- lang::CanonicalTcString (" kernel" ),
195
- tc::makeTensorInfoVector (inputPtrs),
196
- tc::makeTensorInfoVector (outputPtrs),
197
- backendStr (),
198
- options0,
199
- tc::Duration::fromMicroSeconds (1 ));
200
- optionsCache->recordRuntime (
201
- lang::CanonicalTcString (" kernel" ),
202
- tc::makeTensorInfoVector (inputPtrs),
203
- tc::makeTensorInfoVector (outputPtrs),
204
- backendStr (),
205
- options1,
206
- tc::Duration::fromMicroSeconds (2 ));
187
+ recordRuntime (" kernel" , options0, 1 );
188
+ recordRuntime (" kernel" , options1, 2 );
207
189
208
190
OptionsCacheKey key{lang::CanonicalTcString (" kernel" ),
209
191
tc::makeTensorInfoVector (inputPtrs),
@@ -236,32 +218,14 @@ TEST_F(OptionsCacheTest, DifferentInputs) {
236
218
auto inputPtrs = makeInputPtrs ();
237
219
auto outputPtrs = makeOutputPtrs ();
238
220
239
- optionsCache->recordRuntime (
240
- lang::CanonicalTcString (" kernel" ),
241
- tc::makeTensorInfoVector (inputPtrs),
242
- tc::makeTensorInfoVector (outputPtrs),
243
- backendStr (),
244
- options,
245
- tc::Duration::fromMicroSeconds (1 ));
246
- optionsCache->recordRuntime (
247
- lang::CanonicalTcString (" kernel" ),
248
- tc::makeTensorInfoVector (inputPtrs),
249
- tc::makeTensorInfoVector (outputPtrs),
250
- backendStr (),
251
- options,
252
- tc::Duration::fromMicroSeconds (2 ));
221
+ recordRuntime (" kernel" , options, 1 );
222
+ recordRuntime (" kernel" , options, 2 );
253
223
254
224
auto s = inputs[0 ].shape [0 ];
255
225
inputs[0 ].shape [0 ] = 42 ;
256
226
257
227
auto options_ = tc::CudaMappingOptions::makeGroupConvolutionMappingOptions ();
258
- optionsCache->recordRuntime (
259
- lang::CanonicalTcString (" kernel" ),
260
- tc::makeTensorInfoVector (inputPtrs),
261
- tc::makeTensorInfoVector (outputPtrs),
262
- backendStr (),
263
- options_,
264
- tc::Duration::fromMicroSeconds (3 ));
228
+ recordRuntime (" kernel" , options_, 3 );
265
229
266
230
{
267
231
inputs[0 ].shape [0 ] = s;
@@ -319,27 +283,9 @@ TEST_F(OptionsCacheTest, RetrieveBest) {
319
283
auto inputPtrs = makeInputPtrs ();
320
284
auto outputPtrs = makeOutputPtrs ();
321
285
322
- optionsCache->recordRuntime (
323
- lang::CanonicalTcString (" kernel" ),
324
- tc::makeTensorInfoVector (inputPtrs),
325
- tc::makeTensorInfoVector (outputPtrs),
326
- backendStr (),
327
- options0,
328
- tc::Duration::fromMicroSeconds (1 ));
329
- optionsCache->recordRuntime (
330
- lang::CanonicalTcString (" kernel" ),
331
- tc::makeTensorInfoVector (inputPtrs),
332
- tc::makeTensorInfoVector (outputPtrs),
333
- backendStr (),
334
- options1,
335
- tc::Duration::fromMicroSeconds (2 ));
336
- optionsCache->recordRuntime (
337
- lang::CanonicalTcString (" kernel" ),
338
- tc::makeTensorInfoVector (inputPtrs),
339
- tc::makeTensorInfoVector (outputPtrs),
340
- backendStr (),
341
- options2,
342
- tc::Duration::fromMicroSeconds (3 ));
286
+ recordRuntime (" kernel" , options0, 1 );
287
+ recordRuntime (" kernel" , options1, 2 );
288
+ recordRuntime (" kernel" , options2, 3 );
343
289
344
290
auto ret = optionsCache->getTopKOptions (
345
291
lang::CanonicalTcString (" kernel" ),
@@ -380,41 +326,11 @@ TEST_F(OptionsCacheTest, RetrieveTopK) {
380
326
auto inputPtrs = makeInputPtrs ();
381
327
auto outputPtrs = makeOutputPtrs ();
382
328
383
- optionsCache->recordRuntime (
384
- lang::CanonicalTcString (" kernel" ),
385
- tc::makeTensorInfoVector (inputPtrs),
386
- tc::makeTensorInfoVector (outputPtrs),
387
- backendStr (),
388
- options0,
389
- tc::Duration::fromMicroSeconds (3 ));
390
- optionsCache->recordRuntime (
391
- lang::CanonicalTcString (" kernel" ),
392
- tc::makeTensorInfoVector (inputPtrs),
393
- tc::makeTensorInfoVector (outputPtrs),
394
- backendStr (),
395
- options1,
396
- tc::Duration::fromMicroSeconds (2 ));
397
- optionsCache->recordRuntime (
398
- lang::CanonicalTcString (" kernel" ),
399
- tc::makeTensorInfoVector (inputPtrs),
400
- tc::makeTensorInfoVector (outputPtrs),
401
- backendStr (),
402
- options2,
403
- tc::Duration::fromMicroSeconds (1 ));
404
- optionsCache->recordRuntime (
405
- lang::CanonicalTcString (" kernel" ),
406
- tc::makeTensorInfoVector (inputPtrs),
407
- tc::makeTensorInfoVector (outputPtrs),
408
- backendStr (),
409
- options3,
410
- tc::Duration::fromMicroSeconds (4 ));
411
- optionsCache->recordRuntime (
412
- lang::CanonicalTcString (" kernel" ),
413
- tc::makeTensorInfoVector (inputPtrs),
414
- tc::makeTensorInfoVector (outputPtrs),
415
- backendStr (),
416
- options4,
417
- tc::Duration::fromMicroSeconds (5 ));
329
+ recordRuntime (" kernel" , options0, 3 );
330
+ recordRuntime (" kernel" , options1, 2 );
331
+ recordRuntime (" kernel" , options2, 1 );
332
+ recordRuntime (" kernel" , options3, 4 );
333
+ recordRuntime (" kernel" , options4, 5 );
418
334
419
335
auto ret = optionsCache->getTopKOptions (
420
336
lang::CanonicalTcString (" kernelX" ),
@@ -470,79 +386,19 @@ TEST_F(OptionsCacheTest, KeepOnlyBestCandidates) {
470
386
auto inputPtrs = makeInputPtrs ();
471
387
auto outputPtrs = makeOutputPtrs ();
472
388
473
- optionsCache->recordRuntime (
474
- lang::CanonicalTcString (" kernel0" ),
475
- tc::makeTensorInfoVector (inputPtrs),
476
- tc::makeTensorInfoVector (outputPtrs),
477
- backendStr (),
478
- options0,
479
- tc::Duration::fromMicroSeconds (3 ));
480
- optionsCache->recordRuntime (
481
- lang::CanonicalTcString (" kernel0" ),
482
- tc::makeTensorInfoVector (inputPtrs),
483
- tc::makeTensorInfoVector (outputPtrs),
484
- backendStr (),
485
- options1,
486
- tc::Duration::fromMicroSeconds (2 ));
487
- optionsCache->recordRuntime (
488
- lang::CanonicalTcString (" kernel0" ),
489
- tc::makeTensorInfoVector (inputPtrs),
490
- tc::makeTensorInfoVector (outputPtrs),
491
- backendStr (),
492
- options2,
493
- tc::Duration::fromMicroSeconds (4 ));
389
+ recordRuntime (" kernel0" , options0, 3 );
390
+ recordRuntime (" kernel0" , options1, 2 );
391
+ recordRuntime (" kernel0" , options2, 4 );
494
392
495
- optionsCache->recordRuntime (
496
- lang::CanonicalTcString (" kernel1" ),
497
- tc::makeTensorInfoVector (inputPtrs),
498
- tc::makeTensorInfoVector (outputPtrs),
499
- backendStr (),
500
- options2,
501
- tc::Duration::fromMicroSeconds (4 ));
502
- optionsCache->recordRuntime (
503
- lang::CanonicalTcString (" kernel1" ),
504
- tc::makeTensorInfoVector (inputPtrs),
505
- tc::makeTensorInfoVector (outputPtrs),
506
- backendStr (),
507
- options3,
508
- tc::Duration::fromMicroSeconds (1 ));
393
+ recordRuntime (" kernel1" , options2, 4 );
394
+ recordRuntime (" kernel1" , options3, 1 );
509
395
510
- optionsCache->recordRuntime (
511
- lang::CanonicalTcString (" kernel2" ),
512
- tc::makeTensorInfoVector (inputPtrs),
513
- tc::makeTensorInfoVector (outputPtrs),
514
- backendStr (),
515
- options4,
516
- tc::Duration::fromMicroSeconds (5 ));
396
+ recordRuntime (" kernel2" , options4, 5 );
517
397
518
- optionsCache->recordRuntime (
519
- lang::CanonicalTcString (" kernel3" ),
520
- tc::makeTensorInfoVector (inputPtrs),
521
- tc::makeTensorInfoVector (outputPtrs),
522
- backendStr (),
523
- options0,
524
- tc::Duration::fromMicroSeconds (2 ));
525
- optionsCache->recordRuntime (
526
- lang::CanonicalTcString (" kernel3" ),
527
- tc::makeTensorInfoVector (inputPtrs),
528
- tc::makeTensorInfoVector (outputPtrs),
529
- backendStr (),
530
- options1,
531
- tc::Duration::fromMicroSeconds (6 ));
532
- optionsCache->recordRuntime (
533
- lang::CanonicalTcString (" kernel3" ),
534
- tc::makeTensorInfoVector (inputPtrs),
535
- tc::makeTensorInfoVector (outputPtrs),
536
- backendStr (),
537
- options3,
538
- tc::Duration::fromMicroSeconds (5 ));
539
- optionsCache->recordRuntime (
540
- lang::CanonicalTcString (" kernel3" ),
541
- tc::makeTensorInfoVector (inputPtrs),
542
- tc::makeTensorInfoVector (outputPtrs),
543
- backendStr (),
544
- options4,
545
- tc::Duration::fromMicroSeconds (1 ));
398
+ recordRuntime (" kernel3" , options0, 2 );
399
+ recordRuntime (" kernel3" , options1, 6 );
400
+ recordRuntime (" kernel3" , options3, 5 );
401
+ recordRuntime (" kernel3" , options4, 1 );
546
402
547
403
{
548
404
ASSERT_EQ (optionsCache->size (), 10u );
@@ -627,49 +483,13 @@ TEST_F(OptionsCacheTest, RetrieveBestMedianTime) {
627
483
auto inputPtrs = makeInputPtrs ();
628
484
auto outputPtrs = makeOutputPtrs ();
629
485
630
- optionsCache->recordRuntime (
631
- lang::CanonicalTcString (" kernel" ),
632
- tc::makeTensorInfoVector (inputPtrs),
633
- tc::makeTensorInfoVector (outputPtrs),
634
- backendStr (),
635
- options0,
636
- tc::Duration::fromMicroSeconds (1 ));
637
- optionsCache->recordRuntime (
638
- lang::CanonicalTcString (" kernel" ),
639
- tc::makeTensorInfoVector (inputPtrs),
640
- tc::makeTensorInfoVector (outputPtrs),
641
- backendStr (),
642
- options0,
643
- tc::Duration::fromMicroSeconds (9 ));
644
- optionsCache->recordRuntime (
645
- lang::CanonicalTcString (" kernel" ),
646
- tc::makeTensorInfoVector (inputPtrs),
647
- tc::makeTensorInfoVector (outputPtrs),
648
- backendStr (),
649
- options0,
650
- tc::Duration::fromMicroSeconds (10 ));
486
+ recordRuntime (" kernel" , options0, 1 );
487
+ recordRuntime (" kernel" , options0, 9 );
488
+ recordRuntime (" kernel" , options0, 10 );
651
489
652
- optionsCache->recordRuntime (
653
- lang::CanonicalTcString (" kernel" ),
654
- tc::makeTensorInfoVector (inputPtrs),
655
- tc::makeTensorInfoVector (outputPtrs),
656
- backendStr (),
657
- options1,
658
- tc::Duration::fromMicroSeconds (8 ));
659
- optionsCache->recordRuntime (
660
- lang::CanonicalTcString (" kernel" ),
661
- tc::makeTensorInfoVector (inputPtrs),
662
- tc::makeTensorInfoVector (outputPtrs),
663
- backendStr (),
664
- options1,
665
- tc::Duration::fromMicroSeconds (8 ));
666
- optionsCache->recordRuntime (
667
- lang::CanonicalTcString (" kernel" ),
668
- tc::makeTensorInfoVector (inputPtrs),
669
- tc::makeTensorInfoVector (outputPtrs),
670
- backendStr (),
671
- options1,
672
- tc::Duration::fromMicroSeconds (8 ));
490
+ recordRuntime (" kernel" , options1, 8 );
491
+ recordRuntime (" kernel" , options1, 8 );
492
+ recordRuntime (" kernel" , options1, 8 );
673
493
674
494
auto ret = optionsCache->getTopKOptions (
675
495
lang::CanonicalTcString (" kernel" ),
@@ -693,27 +513,9 @@ TEST_F(OptionsCacheTest, Serialization) {
693
513
auto inputPtrs = makeInputPtrs ();
694
514
auto outputPtrs = makeOutputPtrs ();
695
515
696
- optionsCache->recordRuntime (
697
- lang::CanonicalTcString (" kernel0" ),
698
- tc::makeTensorInfoVector (inputPtrs),
699
- tc::makeTensorInfoVector (outputPtrs),
700
- backendStr (),
701
- options0,
702
- tc::Duration::fromMicroSeconds (10 ));
703
- optionsCache->recordRuntime (
704
- lang::CanonicalTcString (" kernel0" ),
705
- tc::makeTensorInfoVector (inputPtrs),
706
- tc::makeTensorInfoVector (outputPtrs),
707
- backendStr (),
708
- options1,
709
- tc::Duration::fromMicroSeconds (11 ));
710
- optionsCache->recordRuntime (
711
- lang::CanonicalTcString (" kernel1" ),
712
- tc::makeTensorInfoVector (inputPtrs),
713
- tc::makeTensorInfoVector (outputPtrs),
714
- backendStr (),
715
- options0,
716
- tc::Duration::fromMicroSeconds (1 ));
516
+ recordRuntime (" kernel0" , options0, 10 );
517
+ recordRuntime (" kernel0" , options1, 11 );
518
+ recordRuntime (" kernel1" , options0, 1 );
717
519
718
520
auto buf = optionsCache->toProtobuf ();
719
521
optionsCache->clear ();
0 commit comments