Skip to content

Commit 8cc7b07

Browse files
Merge pull request #36 from nicolas-chaulet/mac
Mac
2 parents 16e2846 + 28a4e6f commit 8cc7b07

File tree

9 files changed

+66
-52
lines changed

9 files changed

+66
-52
lines changed

.github/workflows/tests.yaml

Lines changed: 36 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -7,30 +7,39 @@ on:
77
- master
88

99
jobs:
10-
unittests:
11-
runs-on: ubuntu-latest
12-
strategy:
13-
matrix:
14-
python-version: [3.6, 3.7, 3.8]
15-
steps:
16-
- uses: actions/checkout@v2
17-
- name: Set up Python ${{ matrix.python-version }}
18-
uses: actions/setup-python@v2
19-
with:
20-
python-version: ${{ matrix.python-version }}
21-
- name: Install dependencies
22-
run: |
23-
python -m pip install --upgrade pip
24-
pip install torch numpy scikit-learn flake8 setuptools
25-
- name: Build package
26-
run: |
27-
python setup.py build_ext --inplace
28-
- name: Lint with flake8
29-
run: |
30-
# stop the build if there are Python syntax errors or undefined names
31-
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
32-
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
33-
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
34-
- name: Test with unittest
35-
run: |
36-
python -m unittest -v
10+
unittests:
11+
strategy:
12+
matrix:
13+
os: [ubuntu-latest, macos-latest, windows-latest]
14+
python-version: [3.6, 3.7]
15+
runs-on: ${{ matrix.os }}
16+
steps:
17+
- uses: actions/checkout@v2
18+
- name: Set up Python ${{ matrix.python-version }}
19+
uses: actions/setup-python@v2
20+
with:
21+
python-version: ${{ matrix.python-version }}
22+
- name: Install dependencies
23+
run: |
24+
python -m pip install --upgrade pip
25+
pip install numpy scikit-learn flake8 setuptools
26+
27+
- name: Install torch windows + linux
28+
if: ${{matrix.os != 'macos-latest'}}
29+
run: pip install torch==1.5.0+cpu torchvision==0.6.0+cpu -f https://download.pytorch.org/whl/torch_stable.html
30+
- name: Install torch macos
31+
if: ${{matrix.os == 'macos-latest'}}
32+
run: pip install torch
33+
34+
- name: Build package
35+
run: |
36+
python setup.py build_ext --inplace
37+
- name: Lint with flake8
38+
run: |
39+
# stop the build if there are Python syntax errors or undefined names
40+
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
41+
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
42+
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
43+
- name: Test with unittest
44+
run: |
45+
python -m unittest -v

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
# UNRELEASED
2+
3+
## Bug fix
4+
- CPU version works for MacOS
5+
16
# 0.6.2
27

38
## Bug fix

cpu/include/neighbors.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,15 @@ using namespace std;
99

1010
template <typename scalar_t>
1111
int nanoflann_neighbors(vector<scalar_t>& queries, vector<scalar_t>& supports,
12-
vector<long>& neighbors_indices, vector<float>& dists, float radius,
12+
vector<int64_t>& neighbors_indices, vector<float>& dists, float radius,
1313
int max_num, int mode, bool sorted);
1414

1515
template <typename scalar_t>
1616
int batch_nanoflann_neighbors(vector<scalar_t>& queries, vector<scalar_t>& supports,
17-
vector<long>& q_batches, vector<long>& s_batches,
18-
vector<long>& neighbors_indices, vector<float>& dists, float radius,
19-
int max_num, int mode, bool sorted);
17+
vector<int64_t>& q_batches, vector<int64_t>& s_batches,
18+
vector<int64_t>& neighbors_indices, vector<float>& dists,
19+
float radius, int max_num, int mode, bool sorted);
2020

2121
template <typename scalar_t>
2222
void nanoflann_knn_neighbors(vector<scalar_t>& queries, vector<scalar_t>& supports,
23-
vector<long>& neighbors_indices, vector<float>& dists, int k);
23+
vector<int64_t>& neighbors_indices, vector<float>& dists, int k);

cpu/src/ball_query.cpp

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ std::pair<at::Tensor, at::Tensor> ball_query(at::Tensor support, at::Tensor quer
1515

1616
at::Tensor out;
1717
at::Tensor out_dists;
18-
std::vector<long> neighbors_indices(query.size(0), 0);
18+
std::vector<int64_t> neighbors_indices(query.size(0), 0);
1919
std::vector<float> neighbors_dists(query.size(0), -1);
2020

2121
auto options = torch::TensorOptions().dtype(torch::kLong).device(torch::kCPU);
@@ -34,7 +34,7 @@ std::pair<at::Tensor, at::Tensor> ball_query(at::Tensor support, at::Tensor quer
3434
neighbors_dists, radius, max_num, mode, sorted);
3535
});
3636
auto neighbors_dists_ptr = neighbors_dists.data();
37-
long* neighbors_indices_ptr = neighbors_indices.data();
37+
int64_t* neighbors_indices_ptr = neighbors_indices.data();
3838
if (mode == 0)
3939
{
4040
out =
@@ -73,7 +73,7 @@ std::pair<at::Tensor, at::Tensor> batch_ball_query(at::Tensor support, at::Tenso
7373
at::Tensor idx;
7474

7575
at::Tensor dist;
76-
std::vector<long> neighbors_indices;
76+
std::vector<int64_t> neighbors_indices;
7777
std::vector<float> neighbors_dists;
7878

7979
auto options = torch::TensorOptions().dtype(torch::kLong).device(torch::kCPU);
@@ -91,10 +91,11 @@ std::pair<at::Tensor, at::Tensor> batch_ball_query(at::Tensor support, at::Tenso
9191
query_batch = at::cat({at::zeros(1, query_batch.options()), query_batch.cumsum(0)}, 0);
9292
support_batch = degree(support_batch, batch_size);
9393
support_batch = at::cat({at::zeros(1, support_batch.options()), support_batch.cumsum(0)}, 0);
94-
std::vector<long> query_batch_stl(query_batch.DATA_PTR<long>(),
95-
query_batch.DATA_PTR<long>() + query_batch.numel());
96-
std::vector<long> support_batch_stl(support_batch.DATA_PTR<long>(),
97-
support_batch.DATA_PTR<long>() + support_batch.numel());
94+
std::vector<int64_t> query_batch_stl(query_batch.DATA_PTR<int64_t>(),
95+
query_batch.DATA_PTR<int64_t>() + query_batch.numel());
96+
std::vector<int64_t> support_batch_stl(support_batch.DATA_PTR<int64_t>(),
97+
support_batch.DATA_PTR<int64_t>() +
98+
support_batch.numel());
9899

99100
AT_DISPATCH_ALL_TYPES(query.scalar_type(), "batch_radius_search", [&] {
100101
std::vector<scalar_t> queries_stl(query.DATA_PTR<scalar_t>(),
@@ -107,7 +108,7 @@ std::pair<at::Tensor, at::Tensor> batch_ball_query(at::Tensor support, at::Tenso
107108
neighbors_dists, radius, max_num, mode, sorted);
108109
});
109110
auto neighbors_dists_ptr = neighbors_dists.data();
110-
long* neighbors_indices_ptr = neighbors_indices.data();
111+
int64_t* neighbors_indices_ptr = neighbors_indices.data();
111112

112113
if (mode == 0)
113114
{

cpu/src/fps.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ at::Tensor fps(at::Tensor points, const int nsamples, bool random)
1515
auto out_options = torch::TensorOptions().dtype(torch::kLong).device(torch::kCPU);
1616
auto batch_size = points.size(0);
1717
auto out = torch::empty({batch_size, nsamples}, out_options);
18-
auto out_a = out.accessor<long, 2>();
18+
auto out_a = out.accessor<int64_t, 2>();
1919

2020
for (ptrdiff_t b = 0; b < batch_size; b++)
2121
{

cpu/src/interpolate.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ at::Tensor knn_interpolate(at::Tensor features, at::Tensor idx, at::Tensor weigh
1919
auto output_a = output.accessor<scalar_t, 3>();
2020
auto features_a = features.accessor<scalar_t, 3>();
2121
auto weight_a = weight.accessor<scalar_t, 3>();
22-
auto idx_a = idx.accessor<long, 3>();
22+
auto idx_a = idx.accessor<int64_t, 3>();
2323

2424
auto batch_size = idx.size(0);
2525
for (auto b = 0; b < batch_size; b++)
@@ -51,7 +51,7 @@ at::Tensor knn_interpolate_grad(at::Tensor grad_out, at::Tensor idx, at::Tensor
5151
auto output_a = output.accessor<scalar_t, 3>();
5252
auto grad_out_a = grad_out.accessor<scalar_t, 3>();
5353
auto weight_a = weight.accessor<scalar_t, 3>();
54-
auto idx_a = idx.accessor<long, 3>();
54+
auto idx_a = idx.accessor<int64_t, 3>();
5555

5656
auto batch_size = idx.size(0);
5757
for (auto b = 0; b < batch_size; b++)

cpu/src/knn.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ std::pair<at::Tensor, at::Tensor> _single_batch_knn(at::Tensor support, at::Tens
1212
if (support.size(0) < k)
1313
TORCH_CHECK(false,
1414
"Not enough points in support to find " + std::to_string(k) + " neighboors")
15-
std::vector<long> neighbors_indices(query.size(0) * k, -1);
15+
std::vector<int64_t> neighbors_indices(query.size(0) * k, -1);
1616
std::vector<float> neighbors_dists(query.size(0) * k, -1);
1717

1818
auto options = torch::TensorOptions().dtype(torch::kLong).device(torch::kCPU);
@@ -29,7 +29,7 @@ std::pair<at::Tensor, at::Tensor> _single_batch_knn(at::Tensor support, at::Tens
2929
neighbors_dists, k);
3030
});
3131
auto neighbors_dists_ptr = neighbors_dists.data();
32-
long* neighbors_indices_ptr = neighbors_indices.data();
32+
int64_t* neighbors_indices_ptr = neighbors_indices.data();
3333
auto out = torch::from_blob(neighbors_indices_ptr, {query.size(0), k}, options = options);
3434
auto out_dists =
3535
torch::from_blob(neighbors_dists_ptr, {query.size(0), k}, options = options_dist);

cpu/src/neighbors.cpp

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
template <typename scalar_t>
99
int nanoflann_neighbors(vector<scalar_t>& queries, vector<scalar_t>& supports,
10-
vector<long>& neighbors_indices, vector<float>& dists, float radius,
10+
vector<int64_t>& neighbors_indices, vector<float>& dists, float radius,
1111
int max_num, int mode, bool sorted)
1212
{
1313
// Initiate variables
@@ -138,9 +138,9 @@ int nanoflann_neighbors(vector<scalar_t>& queries, vector<scalar_t>& supports,
138138

139139
template <typename scalar_t>
140140
int batch_nanoflann_neighbors(vector<scalar_t>& queries, vector<scalar_t>& supports,
141-
vector<long>& q_batches, vector<long>& s_batches,
142-
vector<long>& neighbors_indices, vector<float>& dists, float radius,
143-
int max_num, int mode, bool sorted)
141+
vector<int64_t>& q_batches, vector<int64_t>& s_batches,
142+
vector<int64_t>& neighbors_indices, vector<float>& dists,
143+
float radius, int max_num, int mode, bool sorted)
144144
{
145145
// Initiate variables
146146
// ******************
@@ -187,7 +187,6 @@ int batch_nanoflann_neighbors(vector<scalar_t>& queries, vector<scalar_t>& suppo
187187
// Search params
188188
nanoflann::SearchParams search_params;
189189
search_params.sorted = sorted;
190-
std::chrono::microseconds duration_search(0);
191190
for (size_t i = 0; i < num_query_points; i++)
192191
{
193192
// Check if we changed batch
@@ -295,7 +294,7 @@ int batch_nanoflann_neighbors(vector<scalar_t>& queries, vector<scalar_t>& suppo
295294

296295
template <typename scalar_t>
297296
void nanoflann_knn_neighbors(vector<scalar_t>& queries, vector<scalar_t>& supports,
298-
vector<long>& neighbors_indices, vector<float>& dists, int k)
297+
vector<int64_t>& neighbors_indices, vector<float>& dists, int k)
299298
{
300299
// Nanoflann related variables
301300
// ***************************

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ def get_cmdclass():
6767
requirements = ["torch>=1.1.0"]
6868

6969
url = "https://github.com/nicolas-chaulet/torch-points-kernels"
70-
__version__ = "0.6.3"
70+
__version__ = "0.6.4"
7171
setup(
7272
name="torch-points-kernels",
7373
version=__version__,

0 commit comments

Comments
 (0)