Skip to content

Commit 70192c6

Browse files
pbelevichfacebook-github-bot
authored andcommitted
[Reland #3] Include AT_PARALLEL_OPENMP/AT_PARALLEL_NATIVE/AT_PARALLEL_NATIVE_TBB to ATen/Config.h (pytorch#40122)
Summary: Pull Request resolved: pytorch#40122 Test Plan: Imported from OSS Reviewed By: ezyang Differential Revision: D22076711 Pulled By: pbelevich fbshipit-source-id: fa7b6335ebb5ef2ccf51dc60d9f4079e70f612ba
1 parent 95e51bb commit 70192c6

File tree

9 files changed

+53
-26
lines changed

9 files changed

+53
-26
lines changed

.jenkins/pytorch/test.sh

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,9 +173,22 @@ test_aten() {
173173
}
174174

175175
test_torchvision() {
176+
# pytorch extensions require including torch/extension.h which includes all.h
177+
# which includes utils.h which includes Parallel.h.
178+
# So you can call for instance parallel_for() from your extension,
179+
# but the compilation will fail because of Parallel.h has only declarations
180+
# and definitions are conditionally included Parallel.h(see last lines of Parallel.h).
181+
# I tried to solve it #39612 and #39881 by including Config.h into Parallel.h
182+
# But if Pytorch is built with TBB it provides Config.h
183+
# that has AT_PARALLEL_NATIVE_TBB=1(see #3961 or #39881) and it means that if you include
184+
# torch/extension.h which transitively includes Parallel.h
185+
# which transitively includes tbb.h which is not available!
186+
if [[ "${BUILD_ENVIRONMENT}" == *tbb* ]]; then
187+
BUILD_EXT_OPTS="--global-option=build_ext --global-option=-I$PWD/third_party/tbb/include"
188+
fi
176189
# Check out torch/vision at Jun 11 2020 commit
177190
# This hash must match one in .jenkins/caffe2/test.sh
178-
pip_install --user git+https://github.com/pytorch/vision.git@c2e8a00885e68ae1200eb6440f540e181d9125de
191+
pip_install $BUILD_EXT_OPTS --user git+https://github.com/pytorch/vision.git@c2e8a00885e68ae1200eb6440f540e181d9125de
179192
}
180193

181194
test_libtorch() {

BUILD.bazel

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ COMMON_COPTS = [
1919
"-DTH_HAVE_THREAD",
2020
"-DUSE_FBGEMM",
2121
"-DUSE_DISTRIBUTED",
22-
"-DAT_PARALLEL_NATIVE=1",
2322
"-DATEN_THREADING=NATIVE",
2423
"-DNO_CUDNN_DESTROY_HANDLE",
2524
] + if_cuda([
@@ -545,6 +544,9 @@ template_rule(
545544
"@AT_NNPACK_ENABLED@": "0",
546545
"@CAFFE2_STATIC_LINK_CUDA_INT@": "0",
547546
"@USE_BLAS@": "1",
547+
"@AT_PARALLEL_OPENMP@": "0",
548+
"@AT_PARALLEL_NATIVE@": "1",
549+
"@AT_PARALLEL_NATIVE_TBB@": "0",
548550
},
549551
)
550552

aten/src/ATen/Config.h.in

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,6 @@
1111
#define AT_NNPACK_ENABLED() @AT_NNPACK_ENABLED@
1212
#define CAFFE2_STATIC_LINK_CUDA() @CAFFE2_STATIC_LINK_CUDA_INT@
1313
#define AT_BUILD_WITH_BLAS() @USE_BLAS@
14+
#define AT_PARALLEL_OPENMP @AT_PARALLEL_OPENMP@
15+
#define AT_PARALLEL_NATIVE @AT_PARALLEL_NATIVE@
16+
#define AT_PARALLEL_NATIVE_TBB @AT_PARALLEL_NATIVE_TBB@

aten/src/ATen/Parallel.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#pragma once
22
#include <ATen/ATen.h>
3+
#include <ATen/Config.h>
34
#include <ATen/core/ivalue.h>
45
#include <c10/macros/Macros.h>
56

aten/src/ATen/ParallelNative.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
#include <ATen/Config.h>
12
#if AT_PARALLEL_NATIVE
23
#include <ATen/Parallel.h>
34
#include <ATen/PTThreadPool.h>

aten/src/ATen/ParallelNativeTBB.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
#include <ATen/Config.h>
12
#if AT_PARALLEL_NATIVE_TBB
23
#include <ATen/Parallel.h>
34
#include <ATen/PTThreadPool.h>

aten/src/ATen/ParallelOpenMP.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
#include <ATen/Config.h>
12
#if AT_PARALLEL_OPENMP
23
#include <ATen/Parallel.h>
34

aten/src/ATen/ParallelThreadPoolNative.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
#include <ATen/Config.h>
12
#if AT_PARALLEL_OPENMP || AT_PARALLEL_NATIVE || AT_PARALLEL_NATIVE_TBB
23
#include <ATen/Parallel.h>
34
#include <ATen/PTThreadPool.h>

caffe2/CMakeLists.txt

Lines changed: 28 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,34 @@ if(USE_VULKAN)
66
include(../cmake/VulkanCodegen.cmake)
77
endif()
88

9+
# ATen parallelism settings
10+
# OMP - OpenMP for intra-op, native thread pool for inter-op parallelism
11+
# NATIVE - using native thread pool for intra- and inter-op parallelism
12+
# TBB - using TBB for intra- and native thread pool for inter-op parallelism
13+
if(INTERN_BUILD_MOBILE AND NOT BUILD_CAFFE2_MOBILE)
14+
set(ATEN_THREADING "NATIVE" CACHE STRING "ATen parallel backend")
15+
else()
16+
set(ATEN_THREADING "OMP" CACHE STRING "ATen parallel backend")
17+
endif()
18+
19+
set(AT_PARALLEL_OPENMP 0)
20+
set(AT_PARALLEL_NATIVE 0)
21+
set(AT_PARALLEL_NATIVE_TBB 0)
22+
23+
message(STATUS "Using ATen parallel backend: ${ATEN_THREADING}")
24+
if("${ATEN_THREADING}" STREQUAL "OMP")
25+
set(AT_PARALLEL_OPENMP 1)
26+
elseif("${ATEN_THREADING}" STREQUAL "NATIVE")
27+
set(AT_PARALLEL_NATIVE 1)
28+
elseif("${ATEN_THREADING}" STREQUAL "TBB")
29+
if(NOT USE_TBB)
30+
message(FATAL_ERROR "Using TBB backend but USE_TBB is off")
31+
endif()
32+
set(AT_PARALLEL_NATIVE_TBB 1)
33+
else()
34+
message(FATAL_ERROR "Unknown ATen parallel backend: ${ATEN_THREADING}")
35+
endif()
36+
937
# ---[ Declare source file lists
1038

1139
# ---[ ATen build
@@ -895,30 +923,6 @@ elseif(USE_ROCM)
895923
target_compile_definitions(torch_hip PRIVATE "-DTORCH_HIP_BUILD_MAIN_LIB")
896924
endif()
897925

898-
899-
# ATen parallelism settings
900-
# OMP - OpenMP for intra-op, native thread pool for inter-op parallelism
901-
# NATIVE - using native thread pool for intra- and inter-op parallelism
902-
# TBB - using TBB for intra- and native thread pool for inter-op parallelism
903-
if(INTERN_BUILD_MOBILE AND NOT BUILD_CAFFE2_MOBILE)
904-
set(ATEN_THREADING "NATIVE" CACHE STRING "ATen parallel backend")
905-
else()
906-
set(ATEN_THREADING "OMP" CACHE STRING "ATen parallel backend")
907-
endif()
908-
909-
message(STATUS "Using ATen parallel backend: ${ATEN_THREADING}")
910-
if("${ATEN_THREADING}" STREQUAL "OMP")
911-
target_compile_definitions(torch_cpu PUBLIC "-DAT_PARALLEL_OPENMP=1")
912-
elseif("${ATEN_THREADING}" STREQUAL "NATIVE")
913-
target_compile_definitions(torch_cpu PUBLIC "-DAT_PARALLEL_NATIVE=1")
914-
elseif("${ATEN_THREADING}" STREQUAL "TBB")
915-
if(NOT USE_TBB)
916-
message(FATAL_ERROR "Using TBB backend but USE_TBB is off")
917-
endif()
918-
target_compile_definitions(torch_cpu PUBLIC "-DAT_PARALLEL_NATIVE_TBB=1")
919-
else()
920-
message(FATAL_ERROR "Unknown ATen parallel backend: ${ATEN_THREADING}")
921-
endif()
922926
set(EXPERIMENTAL_SINGLE_THREAD_POOL "0" CACHE STRING
923927
"Experimental option to use a single thread pool for inter- and intra-op parallelism")
924928
if("${EXPERIMENTAL_SINGLE_THREAD_POOL}")

0 commit comments

Comments
 (0)