Artwork

Inhalt bereitgestellt von PyTorch, Edward Yang, and Team PyTorch. Alle Podcast-Inhalte, einschließlich Episoden, Grafiken und Podcast-Beschreibungen, werden direkt von PyTorch, Edward Yang, and Team PyTorch oder seinem Podcast-Plattformpartner hochgeladen und bereitgestellt. Wenn Sie glauben, dass jemand Ihr urheberrechtlich geschütztes Werk ohne Ihre Erlaubnis nutzt, können Sie dem hier beschriebenen Verfahren folgen https://de.player.fm/legal.
Player FM - Podcast-App
Gehen Sie mit der App Player FM offline!

CMake

17:49
 
Teilen
 

Manage episode 294943767 series 2921809
Inhalt bereitgestellt von PyTorch, Edward Yang, and Team PyTorch. Alle Podcast-Inhalte, einschließlich Episoden, Grafiken und Podcast-Beschreibungen, werden direkt von PyTorch, Edward Yang, and Team PyTorch oder seinem Podcast-Plattformpartner hochgeladen und bereitgestellt. Wenn Sie glauben, dass jemand Ihr urheberrechtlich geschütztes Werk ohne Ihre Erlaubnis nutzt, können Sie dem hier beschriebenen Verfahren folgen https://de.player.fm/legal.

Why is PyTorch's build so g-dang complicated. How to avoid having to deal with cmake at all? And if you have to deal with cmake, what are the most important things to know? And if you were going to improve our cmake, how would you go about doing it...

Further reading.

Liner notes.

  • multiple build systems: cmake, buck, xplat buck, ovrsource buck, bazel
    • tools/build_variables.bzl is read from cmake! append_filelist
      • but not used uniformly for all components! (ouch!)
  • mashed together ATen and Caffe2 build systems (e.g., main library libtorch_cpu is defined in caffe2/CMakeLists.txt)
  • cmake: not very much syntax, "everything is a function". This means you can look up constructs relatively easily; e.g., even if() is a command
  • the general cmake model: "set a bunch of variables, run a bunch of commands". cmake is VERY GREPPABLE
    • but not everything is in CMakeLists.txt; check *.cmake too
    • the directory structure makes no sense, you really need to grep.
      (doing a lot of set PARENT_SCOPE to propagate stuff)
    • renaming a file? grep for it
    • primary hazard of refactoring: need to make sure all the variables
      are setup at the new location
  • many directories are not recursive glob, beware of adding new directories
  • old school cmake: literally everything is stuffed in variables (CMAKE_CXX_FLAGS). new school cmake: attach things to targets, things propagate when you depend on targets (public/private dependencies)
  • add_library: the most important thing
  • don't randomly change things and pray: have hypotheses and test them
  continue reading

83 Episoden

Artwork

CMake

PyTorch Developer Podcast

26 subscribers

published

iconTeilen
 
Manage episode 294943767 series 2921809
Inhalt bereitgestellt von PyTorch, Edward Yang, and Team PyTorch. Alle Podcast-Inhalte, einschließlich Episoden, Grafiken und Podcast-Beschreibungen, werden direkt von PyTorch, Edward Yang, and Team PyTorch oder seinem Podcast-Plattformpartner hochgeladen und bereitgestellt. Wenn Sie glauben, dass jemand Ihr urheberrechtlich geschütztes Werk ohne Ihre Erlaubnis nutzt, können Sie dem hier beschriebenen Verfahren folgen https://de.player.fm/legal.

Why is PyTorch's build so g-dang complicated. How to avoid having to deal with cmake at all? And if you have to deal with cmake, what are the most important things to know? And if you were going to improve our cmake, how would you go about doing it...

Further reading.

Liner notes.

  • multiple build systems: cmake, buck, xplat buck, ovrsource buck, bazel
    • tools/build_variables.bzl is read from cmake! append_filelist
      • but not used uniformly for all components! (ouch!)
  • mashed together ATen and Caffe2 build systems (e.g., main library libtorch_cpu is defined in caffe2/CMakeLists.txt)
  • cmake: not very much syntax, "everything is a function". This means you can look up constructs relatively easily; e.g., even if() is a command
  • the general cmake model: "set a bunch of variables, run a bunch of commands". cmake is VERY GREPPABLE
    • but not everything is in CMakeLists.txt; check *.cmake too
    • the directory structure makes no sense, you really need to grep.
      (doing a lot of set PARENT_SCOPE to propagate stuff)
    • renaming a file? grep for it
    • primary hazard of refactoring: need to make sure all the variables
      are setup at the new location
  • many directories are not recursive glob, beware of adding new directories
  • old school cmake: literally everything is stuffed in variables (CMAKE_CXX_FLAGS). new school cmake: attach things to targets, things propagate when you depend on targets (public/private dependencies)
  • add_library: the most important thing
  • don't randomly change things and pray: have hypotheses and test them
  continue reading

83 Episoden

All episodes

×
 
Loading …

Willkommen auf Player FM!

Player FM scannt gerade das Web nach Podcasts mit hoher Qualität, die du genießen kannst. Es ist die beste Podcast-App und funktioniert auf Android, iPhone und im Web. Melde dich an, um Abos geräteübergreifend zu synchronisieren.

 

Kurzanleitung

Hören Sie sich diese Show an, während Sie die Gegend erkunden
Abspielen