Как найти исходный код c ++ для torch.bmm или pytorch - PullRequest
2 голосов
/ 26 мая 2020

Мне не удается найти исходный код torch.bmm(), который определен в https://pytorch.org/cppdocs/api/function_namespaceat_1aac51f71f807ca70fd210814114520c34.html#exhale -function-namespaceat-1aac51f71f807ca70fd210814114520c34 .

Я уверен, что он находится в пространстве имен at , поскольку в других местах на него ссылаются как at :: bmm . Я искал:

  1. Каталог Aten https://github.com/pytorch/pytorch/tree/34877448216149024f44cbcab830169fdb2fa7fb/aten/src/ATen
  2. Каталог caffe2 https://github.com/pytorch/pytorch/tree/74b65c32be68b15dc7c9e8bb62459efbfbde33d8/caffe2/core
  3. прямой поиск в github с ключевым словом bmm файла c ++

, но ничего не нашел. Есть ли какой-нибудь систематический c способ найти функцию (в данном случае bmm) в таком большом проекте?

1 Ответ

1 голос
/ 26 мая 2020

Нет (единого) источника для bmm как такового. Из файла Readme ATen :

ATen «собственные» функции - это современный механизм для добавления операторов и функций в ATen (они являются «собственными» в отличие от устаревших функций, которые связаны через метаданные TH / TH C cwrap). Собственные функции объявлены в native_functions.yaml и имеют реализации, определенные в одном из файлов cpp в этом каталоге.

bmm объявлено в aten \ src \ ATen \ native \ native_functions.yaml :

- func: bmm(Tensor self, Tensor mat2) -> Tensor
  use_c10_dispatcher: full
  variants: function, method
  dispatch:
    CPU: bmm_cpu
    CUDA: bmm_cuda
    SparseCPU: bmm_sparse_cpu
    SparseCUDA: bmm_sparse_cuda
  supports_named_tensor: True

Реализации (например, bmm_cpu) находятся в aten\src\ATen\native\LinearAlgebra.cpp.

...