Я работаю над проектом, и у меня есть .so (общий объект), который содержит набор функций внутри, которые занимаются сложением матрицы-матрицы и умножением матрицы-матрицы. I " LD_PRELOAD " this .so при запуске сценария python, использующего TensorFlow. Вкратце, вместо использования функций умножения матриц, встроенных в TensorFlow, я использую этот файл .so, в котором есть функции умножения матриц (TensorFlow-mkl-enabled использует файл libmklml_intel.so для функций умножения матриц). Это формат, в котором mkl принимает матричное умножение.
Теперь проблема в том, что мне нужно отслеживать три вещи:
- Какие размеры умножаемых матриц?
- Сколько раз вызывается эта функция?
- Какое время выполнения скрипта% if тратит на эту функцию?
Я могу придумать два подхода
Трассировка, где эти вызовы функций выполняются из инфраструктуры TensorFlow, а затем вносятся изменения для получения необходимой информации. Но я чувствую, что этот подход требует модификации в нескольких местах, поскольку не существует только одной функции, вызывающей cblas. Кроме того, мне придется просмотреть исходный код TensorFlow, что является огромной задачей. И это также может потребовать повторного построения TF из источника
- Но, если мы каким-то образом сможем отслеживать взаимодействие файла .so с TF и, возможно, каким-то образом зарегистрировать все данные, отправленные при вызове, возможно, с помощью умного сценария оболочки или инструмента, о котором я не знаю? Какие у меня лучшие варианты? Может ли Perf помочь здесь?
Спасибо заранее Newb ie здесь