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