Skip to content

Commit 1c9802c

Browse files
gdankelfacebook-github-bot
authored andcommitted
Fix issue with default GPU activity set
Summary: D24157062 (b744449) uses Config::validate() to set the default set of GPU activity types if none has been specified. Problem is that validate is not being called for the activity profiler. This fix makes validate() a virtual function in AbstractConfig and calls it from parse() before returning. Differential Revision: D24225040 fbshipit-source-id: 616ba3c457970d15363591a12c7be746ffdfec01
1 parent b744449 commit 1c9802c

File tree

4 files changed

+22
-7
lines changed

4 files changed

+22
-7
lines changed

libkineto/src/AbstractConfig.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,8 @@ bool AbstractConfig::parse(const string& conf) {
168168
}
169169
}
170170

171+
validate();
172+
171173
// Store original text, used to detect updates
172174
source_ = conf;
173175
timestamp_ = system_clock::now();

libkineto/src/AbstractConfig.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,11 @@ class AbstractConfig {
5858
// Throw std::invalid_argument if val is invalid.
5959
virtual bool handleOption(const std::string& name, std::string& val);
6060

61+
// Perform post-validation checks, typically conditons involving
62+
// multiple options.
63+
// Throw std::invalid_argument if automatic correction can not be made.
64+
virtual void validate() = 0;
65+
6166
// TODO: Separate out each profiler type into features?
6267
virtual void printActivityProfilerConfig(std::ostream& s) const;
6368

libkineto/src/Config.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,7 @@ class Config : public AbstractConfig {
244244

245245
void printActivityProfilerConfig(std::ostream& s) const override;
246246

247-
void validate();
247+
void validate() override;
248248

249249
static void addConfigFactory(
250250
std::string name,

libkineto/test/ConfigTest.cpp

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -86,24 +86,32 @@ TEST(ParseTest, ActivityTypes) {
8686
EXPECT_TRUE(cfg.parse("ACTIVITY_TYPES="));
8787
EXPECT_FALSE(cfg.parse("=ACTIVITY_TYPES="));
8888

89-
EXPECT_TRUE(cfg.parse("ACTIVITY_TYPES=gpu_memcpy,gpu_MeMsEt,concurrent_kernel"));
9089
EXPECT_EQ(cfg.selectedActivityTypes(),
90+
std::set<ActivityType>({ActivityType::MEMCPY,
91+
ActivityType::MEMSET,
92+
ActivityType::CONCURRENT_KERNEL,
93+
ActivityType::EXTERNAL_CORRELATION,
94+
ActivityType::RUNTIME}));
95+
96+
Config cfg2;
97+
EXPECT_TRUE(cfg2.parse("ACTIVITY_TYPES=gpu_memcpy,gpu_MeMsEt,concurrent_kernel"));
98+
EXPECT_EQ(cfg2.selectedActivityTypes(),
9199
std::set<ActivityType>({ActivityType::MEMCPY,
92100
ActivityType::MEMSET,
93101
ActivityType::CONCURRENT_KERNEL}));
94102

95-
EXPECT_TRUE(cfg.parse("ACTIVITY_TYPES = cuda_Runtime,"));
96-
EXPECT_EQ(cfg.selectedActivityTypes(),
103+
EXPECT_TRUE(cfg2.parse("ACTIVITY_TYPES = cuda_Runtime,"));
104+
EXPECT_EQ(cfg2.selectedActivityTypes(),
97105
std::set<ActivityType>({ActivityType::MEMCPY,
98106
ActivityType::MEMSET,
99107
ActivityType::RUNTIME,
100108
ActivityType::CONCURRENT_KERNEL}));
101109

102110
// Should throw an exception because incorrect activity name
103-
EXPECT_FALSE(cfg.parse("ACTIVITY_TYPES = memcopy,cuda_runtime"));
111+
EXPECT_FALSE(cfg2.parse("ACTIVITY_TYPES = memcopy,cuda_runtime"));
104112

105-
EXPECT_TRUE(cfg.parse("ACTIVITY_TYPES = external_correlation"));
106-
EXPECT_EQ(cfg.selectedActivityTypes(),
113+
EXPECT_TRUE(cfg2.parse("ACTIVITY_TYPES = external_correlation"));
114+
EXPECT_EQ(cfg2.selectedActivityTypes(),
107115
std::set<ActivityType>({ActivityType::MEMCPY,
108116
ActivityType::MEMSET,
109117
ActivityType::CONCURRENT_KERNEL,

0 commit comments

Comments
 (0)