Skip to content
This repository was archived by the owner on Apr 28, 2023. It is now read-only.

Commit f033284

Browse files
Merge pull request #412 from facebookresearch/pr/boilerplate
OptionsCacheTest: wrap calls to recordRuntime
2 parents b584ddf + 8e8a493 commit f033284

File tree

1 file changed

+47
-245
lines changed

1 file changed

+47
-245
lines changed

test/cuda/test_compilation_cache.cc

Lines changed: 47 additions & 245 deletions
Original file line numberDiff line numberDiff line change
@@ -116,34 +116,28 @@ class OptionsCacheTest : public ::testing::Test {
116116
}
117117
return ptrs;
118118
}
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+
}
119131
};
120132

121133
TEST_F(OptionsCacheTest, DifferentIDs) {
122134
auto options = tc::CudaMappingOptions::makeNaiveMappingOptions();
123135
auto inputPtrs = makeInputPtrs();
124136
auto outputPtrs = makeOutputPtrs();
125137

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);
147141

148142
{
149143
OptionsCacheKey key{lang::CanonicalTcString("kernel0"),
@@ -190,20 +184,8 @@ TEST_F(OptionsCacheTest, DifferentOptions) {
190184
auto inputPtrs = makeInputPtrs();
191185
auto outputPtrs = makeOutputPtrs();
192186

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);
207189

208190
OptionsCacheKey key{lang::CanonicalTcString("kernel"),
209191
tc::makeTensorInfoVector(inputPtrs),
@@ -236,32 +218,14 @@ TEST_F(OptionsCacheTest, DifferentInputs) {
236218
auto inputPtrs = makeInputPtrs();
237219
auto outputPtrs = makeOutputPtrs();
238220

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);
253223

254224
auto s = inputs[0].shape[0];
255225
inputs[0].shape[0] = 42;
256226

257227
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);
265229

266230
{
267231
inputs[0].shape[0] = s;
@@ -319,27 +283,9 @@ TEST_F(OptionsCacheTest, RetrieveBest) {
319283
auto inputPtrs = makeInputPtrs();
320284
auto outputPtrs = makeOutputPtrs();
321285

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);
343289

344290
auto ret = optionsCache->getTopKOptions(
345291
lang::CanonicalTcString("kernel"),
@@ -380,41 +326,11 @@ TEST_F(OptionsCacheTest, RetrieveTopK) {
380326
auto inputPtrs = makeInputPtrs();
381327
auto outputPtrs = makeOutputPtrs();
382328

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);
418334

419335
auto ret = optionsCache->getTopKOptions(
420336
lang::CanonicalTcString("kernelX"),
@@ -470,79 +386,19 @@ TEST_F(OptionsCacheTest, KeepOnlyBestCandidates) {
470386
auto inputPtrs = makeInputPtrs();
471387
auto outputPtrs = makeOutputPtrs();
472388

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);
494392

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);
509395

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);
517397

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);
546402

547403
{
548404
ASSERT_EQ(optionsCache->size(), 10u);
@@ -627,49 +483,13 @@ TEST_F(OptionsCacheTest, RetrieveBestMedianTime) {
627483
auto inputPtrs = makeInputPtrs();
628484
auto outputPtrs = makeOutputPtrs();
629485

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);
651489

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);
673493

674494
auto ret = optionsCache->getTopKOptions(
675495
lang::CanonicalTcString("kernel"),
@@ -693,27 +513,9 @@ TEST_F(OptionsCacheTest, Serialization) {
693513
auto inputPtrs = makeInputPtrs();
694514
auto outputPtrs = makeOutputPtrs();
695515

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);
717519

718520
auto buf = optionsCache->toProtobuf();
719521
optionsCache->clear();

0 commit comments

Comments
 (0)