code: def read_subdir(base_dir, dates, subdir="", cuda=False):
      """Builds dataframe for model and func benchmarks assuming directory is structured as
       DATA_PATH
          |_2020-02-20
              |_subdir
                  |_func_benchmarks.csv
                  |_model_benchmarks.csv
                  |_func_benchmarks_cuda.csv (optional)
                  |_model_benchmarks_cuda.csv (optional)
      Args:
          base_dir (pathlib.path): path containing month subdirectories
          dates (list of str): containing dates / subdirectories available
          subdir (str) : string indicating the name of the sub directory to read enchmarks from
          cuda (bool) : if set to true, read the corresponding func and model benchmarks for cuda
      Returns: tuple of pd.DataFrames containing func and model benchmarks with dates
      """
      func_df, model_df = pd.DataFrame(), pd.DataFrame()
      device = "gpu" if cuda else "cpu"
  
      for date in dates:
          path = os.path.join(base_dir, date, subdir)
  
          tmp_func_df, tmp_model_df = load_df(path, cuda=cuda)
          set_metadata(tmp_func_df, date, device)
          set_metadata(tmp_model_df, date, device)
  
          func_df = func_df.append(tmp_func_df)
          model_df = model_df.append(tmp_model_df)
  
      if not func_df.empty:
          func_df = compute_runtime_gap(func_df)
          func_df = add_error_bars(func_df)
      return func_df, model_df
  
file_path: CrypTen/benchmarks/dash_app/load_data.py
imports: import os
  import pandas
label_desc: Use image node_id 3 for calling a global function with example usage: read_subdir(base_dir, dates, subdir, cuda) and returns: func_df,  model_df