thread_local _custom_scheduler

Resolves ONCPUML-1331

This patch adds an option to make _custom_scheduler thread_local to
support usage of multiple schedulers handled outside of ACL.
It also adds num_threads() function to Scheduler which reverts to
querying CPUInfo if no scheduler has been set.

Change-Id: Iff706165d8d091895331a5bb3a76f6cabe048912
Signed-off-by: David Svantesson-Yeung <david.svantesson-yeung@arm.com>
Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/10748
Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
Reviewed-by: SiCong Li <sicong.li@arm.com>
Tested-by: Arm Jenkins <bsgcomp@arm.com>
Benchmark: Arm Jenkins <bsgcomp@arm.com>
diff --git a/cmake/Options.cmake b/cmake/Options.cmake
index bc51cbb..722c55c 100644
--- a/cmake/Options.cmake
+++ b/cmake/Options.cmake
@@ -65,6 +65,7 @@
 option(ARM_COMPUTE_GRAPH_ENABLED "" ON)
 option(ARM_COMPUTE_ENABLE_SVEF32MM "" ON)
 option(ARM_COMPUTE_ENABLE_FIXED_FORMAT_KERNELS "" ON)
+option(ARM_COMPUTE_THREAD_LOCAL_SCHEDULER "" OFF)
 option(ENABLE_FP16_KERNELS "" OFF)
 option(ARM_COMPUTE_ENABLE_FP16 "" OFF)
 
@@ -116,4 +117,7 @@
 if(ARM_COMPUTE_ENABLE_FIXED_FORMAT_KERNELS)
   add_definitions(-DARM_COMPUTE_ENABLE_FIXED_FORMAT_KERNELS)
 endif()
-add_definitions(-D_GLIBCXX_USE_NANOSLEEP)
\ No newline at end of file
+if(ARM_COMPUTE_THREAD_LOCAL_SCHEDULER)
+  add_definitions(-DARM_COMPUTE_THREAD_LOCAL_SCHEDULER)
+endif()
+add_definitions(-D_GLIBCXX_USE_NANOSLEEP)