@@ -54,6 +54,7 @@ const string kMaxEventProfilersPerGpuKey = "MAX_EVENT_PROFILERS_PER_GPU";
5454
5555// Activity Profiler
5656const string kActivitiesEnabledKey = " ACTIVITIES_ENABLED" ;
57+ const string kActivityTypesKey = " ACTIVITY_TYPES" ;
5758const string kActivitiesLogFileKey = " ACTIVITIES_LOG_FILE" ;
5859const string kActivitiesDurationKey = " ACTIVITIES_DURATION_SECS" ;
5960const string kActivitiesDurationMsecsKey = " ACTIVITIES_DURATION_MSECS" ;
@@ -66,6 +67,13 @@ const string kActivitiesWarmupDurationSecsKey = "ACTIVITIES_WARMUP_PERIOD_SECS";
6667const string kActivitiesMaxGpuBufferSizeKey =
6768 " ACTIVITIES_MAX_GPU_BUFFER_SIZE_MB" ;
6869
70+ // Valid configuration file entries for activity types
71+ const string kActivityMemcpy = " gpu_memcpy" ;
72+ const string kActivityMemset = " gpu_memset" ;
73+ const string kActivityConcurrentKernel = " concurrent_kernel" ;
74+ const string kActivityExternalCorrelation = " external_correlation" ;
75+ const string kActivityRuntime = " cuda_runtime" ;
76+
6977const string kDefaultLogFileFmt = " /tmp/libkineto_activities_{}.json" ;
7078
7179// Common
@@ -181,6 +189,32 @@ static time_point<system_clock> handleRequestTimestamp(int64_t ms) {
181189 return t;
182190}
183191
192+ void Config::addActivityTypes (
193+ const std::vector<std::string>& selected_activities) {
194+ if (selected_activities.size () > 0 ) {
195+ for (const auto & activity : selected_activities) {
196+ if (activity == " " ) {
197+ continue ;
198+ } else if (activity == kActivityMemcpy ) {
199+ selectedActivityTypes_.insert (ActivityType::MEMCPY);
200+ } else if (activity == kActivityMemset ) {
201+ selectedActivityTypes_.insert (ActivityType::MEMSET);
202+ } else if (activity == kActivityConcurrentKernel ) {
203+ selectedActivityTypes_.insert (ActivityType::CONCURRENT_KERNEL);
204+ } else if (activity == kActivityExternalCorrelation ) {
205+ selectedActivityTypes_.insert (ActivityType::EXTERNAL_CORRELATION);
206+ } else if (activity == kActivityRuntime ) {
207+ selectedActivityTypes_.insert (ActivityType::RUNTIME);
208+ } else {
209+ throw std::invalid_argument (fmt::format (
210+ " Invalid activity type selected: {}" ,
211+ activity
212+ ));
213+ }
214+ }
215+ }
216+ }
217+
184218bool Config::handleOption (const std::string& name, std::string& val) {
185219 // Event Profiler
186220 if (name == kEventsKey ) {
@@ -189,6 +223,9 @@ bool Config::handleOption(const std::string& name, std::string& val) {
189223 } else if (name == kMetricsKey ) {
190224 vector<string> metric_names = splitAndTrim (val, ' ,' );
191225 metricNames_.insert (metric_names.begin (), metric_names.end ());
226+ } else if (name == kActivityTypesKey ) {
227+ vector<string> activity_types = splitAndTrim (toLower (val), ' ,' );
228+ addActivityTypes (activity_types);
192229 } else if (name == kSamplePeriodKey ) {
193230 samplePeriod_ = milliseconds (toInt32 (val));
194231 } else if (name == kMultiplexPeriodKey ) {
@@ -308,6 +345,10 @@ void Config::validate() {
308345 LOG (WARNING) << " Setting samples per report to " << max_samples_per_report;
309346 samplesPerReport_ = max_samples_per_report;
310347 }
348+
349+ if (selectedActivityTypes_.size () == 0 ) {
350+ selectDefaultActivityTypes ();
351+ }
311352}
312353
313354void Config::setReportPeriod (milliseconds msecs) {
@@ -340,6 +381,32 @@ void Config::printActivityProfilerConfig(std::ostream& s) const {
340381 << activitiesOnDemandExternalGpuOpCountThreshold () << std::endl;
341382 s << " Max GPU buffer size: " << activitiesMaxGpuBufferSize () / 1024 / 1024
342383 << " MB" << std::endl;
384+
385+ s << " Enabled activities: " ;
386+ for (const auto & activity : selectedActivityTypes_) {
387+ switch (activity){
388+ case ActivityType::MEMCPY:
389+ s << kActivityMemcpy << " " ;
390+ break ;
391+ case ActivityType::MEMSET:
392+ s << kActivityMemset << " " ;
393+ break ;
394+ case ActivityType::CONCURRENT_KERNEL:
395+ s << kActivityConcurrentKernel << " " ;
396+ break ;
397+ case ActivityType::EXTERNAL_CORRELATION:
398+ s << kActivityExternalCorrelation << " " ;
399+ break ;
400+ case ActivityType::RUNTIME:
401+ s << kActivityRuntime << " " ;
402+ break ;
403+ default :
404+ s << " UNKNOWN_ACTIVITY_NAME" << " " ;
405+ break ;
406+ }
407+ }
408+ s << std::endl;
409+
343410 AbstractConfig::printActivityProfilerConfig (s);
344411}
345412
0 commit comments