Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
one
spconv
Commits
34e97911
Unverified
Commit
34e97911
authored
Sep 22, 2022
by
FindDefinition
Committed by
GitHub
Sep 22, 2022
Browse files
Merge pull request #515 from EvernightAurora/master
Feature/Ampere
parents
f8c25027
d61ab8e1
Changes
5
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
558 additions
and
18 deletions
+558
-18
setup.py
setup.py
+4
-4
spconv/build.py
spconv/build.py
+4
-4
spconv/core.py
spconv/core.py
+502
-5
spconv/gencode/__main__.py
spconv/gencode/__main__.py
+4
-4
test/benchmark.py
test/benchmark.py
+44
-1
No files found.
setup.py
View file @
34e97911
...
@@ -151,8 +151,8 @@ if disable_jit is not None and disable_jit == "1":
...
@@ -151,8 +151,8 @@ if disable_jit is not None and disable_jit == "1":
'build_ext'
:
PCCMBuild
,
'build_ext'
:
PCCMBuild
,
}
}
from
cumm.gemm.main
import
GemmMainUnitTest
from
cumm.gemm.main
import
GemmMainUnitTest
from
spconv.core
import
SHUFFLE_SIMT_PARAMS
,
SHUFFLE_VOLTA_PARAMS
,
SHUFFLE_TURING_PARAMS
from
spconv.core
import
SHUFFLE_SIMT_PARAMS
,
SHUFFLE_VOLTA_PARAMS
,
SHUFFLE_TURING_PARAMS
,
SHUFFLE_AMPERE_PARAMS
from
spconv.core
import
IMPLGEMM_SIMT_PARAMS
,
IMPLGEMM_VOLTA_PARAMS
,
IMPLGEMM_TURING_PARAMS
from
spconv.core
import
IMPLGEMM_SIMT_PARAMS
,
IMPLGEMM_VOLTA_PARAMS
,
IMPLGEMM_TURING_PARAMS
,
IMPLGEMM_AMPERE_PARAMS
from
cumm.conv.main
import
ConvMainUnitTest
from
cumm.conv.main
import
ConvMainUnitTest
from
cumm.constants
import
CUMM_CPU_ONLY_BUILD
from
cumm.constants
import
CUMM_CPU_ONLY_BUILD
from
spconv.csrc.sparse.all
import
SpconvOps
from
spconv.csrc.sparse.all
import
SpconvOps
...
@@ -164,8 +164,8 @@ if disable_jit is not None and disable_jit == "1":
...
@@ -164,8 +164,8 @@ if disable_jit is not None and disable_jit == "1":
from
spconv.csrc.sparse.convops
import
ConvTunerSimple
,
ConvGemmOps
from
spconv.csrc.sparse.convops
import
ConvTunerSimple
,
ConvGemmOps
from
spconv.csrc.sparse.inference
import
InferenceOps
from
spconv.csrc.sparse.inference
import
InferenceOps
cu
=
GemmMainUnitTest
(
SHUFFLE_SIMT_PARAMS
+
SHUFFLE_VOLTA_PARAMS
+
SHUFFLE_TURING_PARAMS
)
cu
=
GemmMainUnitTest
(
SHUFFLE_SIMT_PARAMS
+
SHUFFLE_VOLTA_PARAMS
+
SHUFFLE_TURING_PARAMS
+
SHUFFLE_AMPERE_PARAMS
)
convcu
=
ConvMainUnitTest
(
IMPLGEMM_SIMT_PARAMS
+
IMPLGEMM_VOLTA_PARAMS
+
IMPLGEMM_TURING_PARAMS
)
convcu
=
ConvMainUnitTest
(
IMPLGEMM_SIMT_PARAMS
+
IMPLGEMM_VOLTA_PARAMS
+
IMPLGEMM_TURING_PARAMS
+
IMPLGEMM_AMPERE_PARAMS
)
convcu
.
namespace
=
"cumm.conv.main"
convcu
.
namespace
=
"cumm.conv.main"
cu
.
namespace
=
"cumm.gemm.main"
cu
.
namespace
=
"cumm.gemm.main"
...
...
spconv/build.py
View file @
34e97911
...
@@ -22,8 +22,8 @@ from .constants import PACKAGE_NAME, PACKAGE_ROOT, DISABLE_JIT
...
@@ -22,8 +22,8 @@ from .constants import PACKAGE_NAME, PACKAGE_ROOT, DISABLE_JIT
if
project_is_installed
(
PACKAGE_NAME
)
and
project_is_editable
(
if
project_is_installed
(
PACKAGE_NAME
)
and
project_is_editable
(
PACKAGE_NAME
)
and
not
DISABLE_JIT
:
PACKAGE_NAME
)
and
not
DISABLE_JIT
:
from
spconv.core
import
SHUFFLE_SIMT_PARAMS
,
SHUFFLE_VOLTA_PARAMS
,
SHUFFLE_TURING_PARAMS
from
spconv.core
import
SHUFFLE_SIMT_PARAMS
,
SHUFFLE_VOLTA_PARAMS
,
SHUFFLE_TURING_PARAMS
,
SHUFFLE_AMPERE_PARAMS
from
spconv.core
import
IMPLGEMM_SIMT_PARAMS
,
IMPLGEMM_VOLTA_PARAMS
,
IMPLGEMM_TURING_PARAMS
from
spconv.core
import
IMPLGEMM_SIMT_PARAMS
,
IMPLGEMM_VOLTA_PARAMS
,
IMPLGEMM_TURING_PARAMS
,
IMPLGEMM_AMPERE_PARAMS
from
cumm.gemm.main
import
GemmMainUnitTest
from
cumm.gemm.main
import
GemmMainUnitTest
from
cumm.conv.main
import
ConvMainUnitTest
from
cumm.conv.main
import
ConvMainUnitTest
...
@@ -38,12 +38,12 @@ if project_is_installed(PACKAGE_NAME) and project_is_editable(
...
@@ -38,12 +38,12 @@ if project_is_installed(PACKAGE_NAME) and project_is_editable(
from
spconv.csrc.sparse.convops
import
SimpleExternalSpconvMatmul
from
spconv.csrc.sparse.convops
import
SimpleExternalSpconvMatmul
from
spconv.csrc.sparse.inference
import
InferenceOps
from
spconv.csrc.sparse.inference
import
InferenceOps
all_shuffle
=
SHUFFLE_SIMT_PARAMS
+
SHUFFLE_VOLTA_PARAMS
+
SHUFFLE_TURING_PARAMS
all_shuffle
=
SHUFFLE_SIMT_PARAMS
+
SHUFFLE_VOLTA_PARAMS
+
SHUFFLE_TURING_PARAMS
+
SHUFFLE_AMPERE_PARAMS
all_shuffle
=
list
(
filter
(
lambda
x
:
not
x
.
is_nvrtc
,
all_shuffle
))
all_shuffle
=
list
(
filter
(
lambda
x
:
not
x
.
is_nvrtc
,
all_shuffle
))
cu
=
GemmMainUnitTest
(
all_shuffle
)
cu
=
GemmMainUnitTest
(
all_shuffle
)
cu
.
namespace
=
"cumm.gemm.main"
cu
.
namespace
=
"cumm.gemm.main"
all_imp
=
(
IMPLGEMM_SIMT_PARAMS
+
IMPLGEMM_VOLTA_PARAMS
+
all_imp
=
(
IMPLGEMM_SIMT_PARAMS
+
IMPLGEMM_VOLTA_PARAMS
+
IMPLGEMM_TURING_PARAMS
)
IMPLGEMM_TURING_PARAMS
+
IMPLGEMM_AMPERE_PARAMS
)
all_imp
=
list
(
filter
(
lambda
x
:
not
x
.
is_nvrtc
,
all_imp
))
all_imp
=
list
(
filter
(
lambda
x
:
not
x
.
is_nvrtc
,
all_imp
))
convcu
=
ConvMainUnitTest
(
all_imp
)
convcu
=
ConvMainUnitTest
(
all_imp
)
convcu
.
namespace
=
"cumm.conv.main"
convcu
.
namespace
=
"cumm.conv.main"
...
...
spconv/core.py
View file @
34e97911
This diff is collapsed.
Click to expand it.
spconv/gencode/__main__.py
View file @
34e97911
...
@@ -5,9 +5,9 @@ from cumm.common import CompileInfo
...
@@ -5,9 +5,9 @@ from cumm.common import CompileInfo
from
cumm.conv.main
import
ConvMainUnitTest
from
cumm.conv.main
import
ConvMainUnitTest
from
cumm.gemm.main
import
GemmMainUnitTest
from
cumm.gemm.main
import
GemmMainUnitTest
from
pccm.builder.pybind
import
gen_cmake
from
pccm.builder.pybind
import
gen_cmake
from
spconv.core
import
(
IMPLGEMM_SIMT_PARAMS
,
IMPLGEMM_TURING_PARAMS
,
from
spconv.core
import
(
IMPLGEMM_SIMT_PARAMS
,
IMPLGEMM_TURING_PARAMS
,
IMPLGEMM_AMPERE_PARAMS
,
IMPLGEMM_VOLTA_PARAMS
,
SHUFFLE_SIMT_PARAMS
,
IMPLGEMM_VOLTA_PARAMS
,
SHUFFLE_SIMT_PARAMS
,
SHUFFLE_TURING_PARAMS
,
SHUFFLE_VOLTA_PARAMS
)
SHUFFLE_TURING_PARAMS
,
SHUFFLE_VOLTA_PARAMS
,
SHUFFLE_AMPERE_PARAMS
)
from
spconv.csrc.hash.core
import
HashTable
from
spconv.csrc.hash.core
import
HashTable
from
spconv.csrc.sparse.all
import
SpconvOps
from
spconv.csrc.sparse.all
import
SpconvOps
from
spconv.csrc.sparse.alloc
import
ExternalAllocator
,
StaticAllocator
from
spconv.csrc.sparse.alloc
import
ExternalAllocator
,
StaticAllocator
...
@@ -25,7 +25,7 @@ def main(include: str,
...
@@ -25,7 +25,7 @@ def main(include: str,
libname
:
str
=
"spconv"
,
libname
:
str
=
"spconv"
,
prefix
:
str
=
"spconvlib"
,
prefix
:
str
=
"spconvlib"
,
inference_only
:
bool
=
False
):
inference_only
:
bool
=
False
):
all_shuffle
=
SHUFFLE_SIMT_PARAMS
+
SHUFFLE_VOLTA_PARAMS
+
SHUFFLE_TURING_PARAMS
all_shuffle
=
SHUFFLE_SIMT_PARAMS
+
SHUFFLE_VOLTA_PARAMS
+
SHUFFLE_TURING_PARAMS
+
SHUFFLE_AMPERE_PARAMS
all_shuffle
=
list
(
filter
(
lambda
x
:
not
x
.
is_nvrtc
,
all_shuffle
))
all_shuffle
=
list
(
filter
(
lambda
x
:
not
x
.
is_nvrtc
,
all_shuffle
))
if
inference_only
:
if
inference_only
:
all_shuffle
=
list
(
filter
(
lambda
x
:
x
.
shuffle_stride
!=
ShuffleStrideType
.
ShuffleAB
,
all_shuffle
))
all_shuffle
=
list
(
filter
(
lambda
x
:
x
.
shuffle_stride
!=
ShuffleStrideType
.
ShuffleAB
,
all_shuffle
))
...
@@ -33,7 +33,7 @@ def main(include: str,
...
@@ -33,7 +33,7 @@ def main(include: str,
cu
=
GemmMainUnitTest
(
all_shuffle
)
cu
=
GemmMainUnitTest
(
all_shuffle
)
cu
.
namespace
=
"cumm.gemm.main"
cu
.
namespace
=
"cumm.gemm.main"
all_imp
=
(
IMPLGEMM_SIMT_PARAMS
+
IMPLGEMM_VOLTA_PARAMS
+
all_imp
=
(
IMPLGEMM_SIMT_PARAMS
+
IMPLGEMM_VOLTA_PARAMS
+
IMPLGEMM_TURING_PARAMS
)
IMPLGEMM_TURING_PARAMS
+
IMPLGEMM_AMPERE_PARAMS
)
# all_imp = IMPLGEMM_SIMT_PARAMS
# all_imp = IMPLGEMM_SIMT_PARAMS
all_imp
=
list
(
filter
(
lambda
x
:
not
x
.
is_nvrtc
,
all_imp
))
all_imp
=
list
(
filter
(
lambda
x
:
not
x
.
is_nvrtc
,
all_imp
))
if
inference_only
:
if
inference_only
:
...
...
test/benchmark.py
View file @
34e97911
...
@@ -290,6 +290,49 @@ class Net2(nn.Module):
...
@@ -290,6 +290,49 @@ class Net2(nn.Module):
return
self
.
net
(
x
)
return
self
.
net
(
x
)
class
NetSm
(
nn
.
Module
):
def
__init__
(
self
,
shape
,
algo
):
super
().
__init__
()
self
.
net
=
spconv
.
SparseSequential
(
spconv
.
SubMConv3d
(
3
,
8
,
3
,
bias
=
False
,
indice_key
=
"c0"
,
algo
=
algo
),
spconv
.
SubMConv3d
(
8
,
16
,
3
,
bias
=
False
,
indice_key
=
"c0"
,
algo
=
algo
),
spconv
.
SubMConv3d
(
16
,
32
,
3
,
bias
=
False
,
indice_key
=
"c0"
,
algo
=
algo
),
spconv
.
SubMConv3d
(
32
,
64
,
3
,
bias
=
False
,
indice_key
=
"c0"
,
algo
=
algo
),
)
max_batch_size
=
1
# grid (dense map) is used for indice generation. use pre-allocated grid can run faster.
self
.
grid
=
torch
.
full
([
max_batch_size
,
*
shape
],
-
1
,
dtype
=
torch
.
int32
).
cuda
()
# self.grid = None
self
.
shape
=
shape
def
forward
(
self
,
features
,
coors
,
batch_size
,
enable_timer
:
bool
=
False
):
x
=
spconv
.
SparseConvTensor
(
features
,
coors
,
self
.
shape
,
batch_size
,
self
.
grid
,
enable_timer
=
enable_timer
)
return
self
.
net
(
x
)
import
numpy
as
np
import
numpy
as
np
from
cumm
import
tensorview
as
tv
from
cumm
import
tensorview
as
tv
from
spconv.core_cc.csrc.sparse.all
import
SpconvOps
from
spconv.core_cc.csrc.sparse.all
import
SpconvOps
...
@@ -359,7 +402,7 @@ def main():
...
@@ -359,7 +402,7 @@ def main():
# MaskImpGemm: 51.0ms
# MaskImpGemm: 51.0ms
# MaskSplitImpGemm: 41.1ms
# MaskSplitImpGemm: 41.1ms
# algo = None
# algo = None
net
=
Net
(
spatial_shape
,
algo
).
to
(
device
).
eval
().
to
(
dtype
)
# .train()
net
=
Net
Sm
(
spatial_shape
,
algo
).
to
(
device
).
eval
().
to
(
dtype
)
# .train()
# net.load_state_dict(net.state_dict())
# net.load_state_dict(net.state_dict())
spconv
.
assign_name_for_sparse_modules
(
net
)
spconv
.
assign_name_for_sparse_modules
(
net
)
print
(
coors_th
.
shape
)
print
(
coors_th
.
shape
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment