From e34e32850e8b546f3b7ba264c4ee627ebf948ab0 Mon Sep 17 00:00:00 2001 From: Pavel Belevich Date: Wed, 17 Jun 2020 16:47:24 -0700 Subject: [PATCH] Revert D22076711: [Reland #3] Include AT_PARALLEL_OPENMP/AT_PARALLEL_NATIVE/AT_PARALLEL_NATIVE_TBB to ATen/Config.h Test Plan: revert-hammer Differential Revision: D22076711 Original commit changeset: fa7b6335ebb5 fbshipit-source-id: 254b6941482f855e81c666e786fc5a4a1b57864f --- .jenkins/pytorch/test.sh | 15 +------ BUILD.bazel | 4 +- aten/src/ATen/Config.h.in | 3 -- aten/src/ATen/Parallel.h | 1 - aten/src/ATen/ParallelNative.cpp | 1 - aten/src/ATen/ParallelNativeTBB.cpp | 1 - aten/src/ATen/ParallelOpenMP.cpp | 1 - aten/src/ATen/ParallelThreadPoolNative.cpp | 1 - caffe2/CMakeLists.txt | 52 ++++++++++------------ 9 files changed, 26 insertions(+), 53 deletions(-) diff --git a/.jenkins/pytorch/test.sh b/.jenkins/pytorch/test.sh index c89be82a9d9b7..42ae75df8344a 100755 --- a/.jenkins/pytorch/test.sh +++ b/.jenkins/pytorch/test.sh @@ -173,22 +173,9 @@ test_aten() { } test_torchvision() { - # pytorch extensions require including torch/extension.h which includes all.h - # which includes utils.h which includes Parallel.h. - # So you can call for instance parallel_for() from your extension, - # but the compilation will fail because of Parallel.h has only declarations - # and definitions are conditionally included Parallel.h(see last lines of Parallel.h). - # I tried to solve it #39612 and #39881 by including Config.h into Parallel.h - # But if Pytorch is built with TBB it provides Config.h - # that has AT_PARALLEL_NATIVE_TBB=1(see #3961 or #39881) and it means that if you include - # torch/extension.h which transitively includes Parallel.h - # which transitively includes tbb.h which is not available! - if [[ "${BUILD_ENVIRONMENT}" == *tbb* ]]; then - BUILD_EXT_OPTS="--global-option=build_ext --global-option=-I$PWD/third_party/tbb/include" - fi # Check out torch/vision at Jun 11 2020 commit # This hash must match one in .jenkins/caffe2/test.sh - pip_install $BUILD_EXT_OPTS --user git+https://github.com/pytorch/vision.git@c2e8a00885e68ae1200eb6440f540e181d9125de + pip_install --user git+https://github.com/pytorch/vision.git@c2e8a00885e68ae1200eb6440f540e181d9125de } test_libtorch() { diff --git a/BUILD.bazel b/BUILD.bazel index d4d37e93ac616..9f579073aa1a8 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -19,6 +19,7 @@ COMMON_COPTS = [ "-DTH_HAVE_THREAD", "-DUSE_FBGEMM", "-DUSE_DISTRIBUTED", + "-DAT_PARALLEL_NATIVE=1", "-DATEN_THREADING=NATIVE", "-DNO_CUDNN_DESTROY_HANDLE", ] + if_cuda([ @@ -544,9 +545,6 @@ template_rule( "@AT_NNPACK_ENABLED@": "0", "@CAFFE2_STATIC_LINK_CUDA_INT@": "0", "@USE_BLAS@": "1", - "@AT_PARALLEL_OPENMP@": "0", - "@AT_PARALLEL_NATIVE@": "1", - "@AT_PARALLEL_NATIVE_TBB@": "0", }, ) diff --git a/aten/src/ATen/Config.h.in b/aten/src/ATen/Config.h.in index 58c06c63535dc..4f0607c6c7798 100644 --- a/aten/src/ATen/Config.h.in +++ b/aten/src/ATen/Config.h.in @@ -11,6 +11,3 @@ #define AT_NNPACK_ENABLED() @AT_NNPACK_ENABLED@ #define CAFFE2_STATIC_LINK_CUDA() @CAFFE2_STATIC_LINK_CUDA_INT@ #define AT_BUILD_WITH_BLAS() @USE_BLAS@ -#define AT_PARALLEL_OPENMP @AT_PARALLEL_OPENMP@ -#define AT_PARALLEL_NATIVE @AT_PARALLEL_NATIVE@ -#define AT_PARALLEL_NATIVE_TBB @AT_PARALLEL_NATIVE_TBB@ diff --git a/aten/src/ATen/Parallel.h b/aten/src/ATen/Parallel.h index 9e2f9be3e66e2..21977f300b5ba 100644 --- a/aten/src/ATen/Parallel.h +++ b/aten/src/ATen/Parallel.h @@ -1,6 +1,5 @@ #pragma once #include -#include #include #include diff --git a/aten/src/ATen/ParallelNative.cpp b/aten/src/ATen/ParallelNative.cpp index d5ea017e1496a..621ce2d260529 100644 --- a/aten/src/ATen/ParallelNative.cpp +++ b/aten/src/ATen/ParallelNative.cpp @@ -1,4 +1,3 @@ -#include #if AT_PARALLEL_NATIVE #include #include diff --git a/aten/src/ATen/ParallelNativeTBB.cpp b/aten/src/ATen/ParallelNativeTBB.cpp index 9def3aaa9fc2c..5ee5410885dcc 100644 --- a/aten/src/ATen/ParallelNativeTBB.cpp +++ b/aten/src/ATen/ParallelNativeTBB.cpp @@ -1,4 +1,3 @@ -#include #if AT_PARALLEL_NATIVE_TBB #include #include diff --git a/aten/src/ATen/ParallelOpenMP.cpp b/aten/src/ATen/ParallelOpenMP.cpp index 9c074cfea410d..127f52d4ef502 100644 --- a/aten/src/ATen/ParallelOpenMP.cpp +++ b/aten/src/ATen/ParallelOpenMP.cpp @@ -1,4 +1,3 @@ -#include #if AT_PARALLEL_OPENMP #include diff --git a/aten/src/ATen/ParallelThreadPoolNative.cpp b/aten/src/ATen/ParallelThreadPoolNative.cpp index 05072df69acf4..205ca5e6b3fd7 100644 --- a/aten/src/ATen/ParallelThreadPoolNative.cpp +++ b/aten/src/ATen/ParallelThreadPoolNative.cpp @@ -1,4 +1,3 @@ -#include #if AT_PARALLEL_OPENMP || AT_PARALLEL_NATIVE || AT_PARALLEL_NATIVE_TBB #include #include diff --git a/caffe2/CMakeLists.txt b/caffe2/CMakeLists.txt index 6b2a03e6b3263..b971476e9109f 100644 --- a/caffe2/CMakeLists.txt +++ b/caffe2/CMakeLists.txt @@ -6,34 +6,6 @@ if(USE_VULKAN) include(../cmake/VulkanCodegen.cmake) endif() -# ATen parallelism settings -# OMP - OpenMP for intra-op, native thread pool for inter-op parallelism -# NATIVE - using native thread pool for intra- and inter-op parallelism -# TBB - using TBB for intra- and native thread pool for inter-op parallelism -if(INTERN_BUILD_MOBILE AND NOT BUILD_CAFFE2_MOBILE) - set(ATEN_THREADING "NATIVE" CACHE STRING "ATen parallel backend") -else() - set(ATEN_THREADING "OMP" CACHE STRING "ATen parallel backend") -endif() - -set(AT_PARALLEL_OPENMP 0) -set(AT_PARALLEL_NATIVE 0) -set(AT_PARALLEL_NATIVE_TBB 0) - -message(STATUS "Using ATen parallel backend: ${ATEN_THREADING}") -if("${ATEN_THREADING}" STREQUAL "OMP") - set(AT_PARALLEL_OPENMP 1) -elseif("${ATEN_THREADING}" STREQUAL "NATIVE") - set(AT_PARALLEL_NATIVE 1) -elseif("${ATEN_THREADING}" STREQUAL "TBB") - if(NOT USE_TBB) - message(FATAL_ERROR "Using TBB backend but USE_TBB is off") - endif() - set(AT_PARALLEL_NATIVE_TBB 1) -else() - message(FATAL_ERROR "Unknown ATen parallel backend: ${ATEN_THREADING}") -endif() - # ---[ Declare source file lists # ---[ ATen build @@ -923,6 +895,30 @@ elseif(USE_ROCM) target_compile_definitions(torch_hip PRIVATE "-DTORCH_HIP_BUILD_MAIN_LIB") endif() + +# ATen parallelism settings +# OMP - OpenMP for intra-op, native thread pool for inter-op parallelism +# NATIVE - using native thread pool for intra- and inter-op parallelism +# TBB - using TBB for intra- and native thread pool for inter-op parallelism +if(INTERN_BUILD_MOBILE AND NOT BUILD_CAFFE2_MOBILE) + set(ATEN_THREADING "NATIVE" CACHE STRING "ATen parallel backend") +else() + set(ATEN_THREADING "OMP" CACHE STRING "ATen parallel backend") +endif() + +message(STATUS "Using ATen parallel backend: ${ATEN_THREADING}") +if("${ATEN_THREADING}" STREQUAL "OMP") + target_compile_definitions(torch_cpu PUBLIC "-DAT_PARALLEL_OPENMP=1") +elseif("${ATEN_THREADING}" STREQUAL "NATIVE") + target_compile_definitions(torch_cpu PUBLIC "-DAT_PARALLEL_NATIVE=1") +elseif("${ATEN_THREADING}" STREQUAL "TBB") + if(NOT USE_TBB) + message(FATAL_ERROR "Using TBB backend but USE_TBB is off") + endif() + target_compile_definitions(torch_cpu PUBLIC "-DAT_PARALLEL_NATIVE_TBB=1") +else() + message(FATAL_ERROR "Unknown ATen parallel backend: ${ATEN_THREADING}") +endif() set(EXPERIMENTAL_SINGLE_THREAD_POOL "0" CACHE STRING "Experimental option to use a single thread pool for inter- and intra-op parallelism") if("${EXPERIMENTAL_SINGLE_THREAD_POOL}")