Open3D (C++ API)  0.13.0
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
cuda_utils.h
Go to the documentation of this file.
1 //***************************************************************************************/
2 //
3 // Based on Pointnet2 Library (MIT License):
4 // https://github.com/sshaoshuai/Pointnet2.PyTorch
5 //
6 // Copyright (c) 2019 Shaoshuai Shi
7 //
8 // Permission is hereby granted, free of charge, to any person obtaining a
9 // copy of this software and associated documentation files (the "Software"),
10 // to deal in the Software without restriction, including without limitation
11 // the rights to use, copy, modify, merge, publish, distribute, sublicense,
12 // and/or sell copies of the Software, and to permit persons to whom the
13 // Software is furnished to do so, subject to the following conditions:
14 //
15 // The above copyright notice and this permission notice shall be included in
16 // all copies or substantial portions of the Software.
17 //
18 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
21 // THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
23 // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
24 // DEALINGS IN THE SOFTWARE.
25 //
26 //***************************************************************************************/
27 
28 #pragma once
29 
30 #include <cmath>
31 
32 namespace open3d {
33 namespace ml {
34 namespace contrib {
35 
36 #define TOTAL_THREADS 1024
37 #define THREADS_PER_BLOCK 256
38 #define DIVUP(m, n) ((m) / (n) + ((m) % (n) > 0))
39 
40 inline int opt_n_threads(int work_size) {
41  const int pow_2 = std::log(static_cast<double>(work_size)) / std::log(2.0);
42 
43  return max(min(1 << pow_2, TOTAL_THREADS), 1);
44 }
45 
46 } // namespace contrib
47 } // namespace ml
48 } // namespace open3d
#define TOTAL_THREADS
Definition: cuda_utils.h:36
int opt_n_threads(int work_size)
Definition: cuda_utils.h:40
Definition: PinholeCameraIntrinsic.cpp:35
#define max(x, y)
Definition: SVD3x3CPU.h:38