Как отслеживать вызовы cblas в TensorFlow? - PullRequest
1 голос
/ 27 мая 2020

Я работаю над проектом, и у меня есть .so (общий объект), который содержит набор функций внутри, которые занимаются сложением матрицы-матрицы и умножением матрицы-матрицы. I " LD_PRELOAD " this .so при запуске сценария python, использующего TensorFlow. Вкратце, вместо использования функций умножения матриц, встроенных в TensorFlow, я использую этот файл .so, в котором есть функции умножения матриц (TensorFlow-mkl-enabled использует файл libmklml_intel.so для функций умножения матриц). Это формат, в котором mkl принимает матричное умножение.

Теперь проблема в том, что мне нужно отслеживать три вещи:

  1. Какие размеры умножаемых матриц?
  2. Сколько раз вызывается эта функция?
  3. Какое время выполнения скрипта% if тратит на эту функцию?

Я могу придумать два подхода

  1. Трассировка, где эти вызовы функций выполняются из инфраструктуры TensorFlow, а затем вносятся изменения для получения необходимой информации. Но я чувствую, что этот подход требует модификации в нескольких местах, поскольку не существует только одной функции, вызывающей cblas. Кроме того, мне придется просмотреть исходный код TensorFlow, что является огромной задачей. И это также может потребовать повторного построения TF из источника

  2. Но, если мы каким-то образом сможем отслеживать взаимодействие файла .so с TF и, возможно, каким-то образом зарегистрировать все данные, отправленные при вызове, возможно, с помощью умного сценария оболочки или инструмента, о котором я не знаю? Какие у меня лучшие варианты? Может ли Perf помочь здесь?

Спасибо заранее Newb ie здесь

...