scm2cpp-lasso 0.13.1__tar.gz → 0.13.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/PKG-INFO +6 -3
  2. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/README.md +5 -2
  3. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/pyproject.toml +1 -1
  4. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/setup.py +19 -4
  5. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/src/scm2cpp_lasso/__init__.py +1 -1
  6. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/src/scm2cpp_lasso.egg-info/PKG-INFO +6 -3
  7. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/setup.cfg +0 -0
  8. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/src/scm2cpp_lasso/_generated/__init__.py +0 -0
  9. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/src/scm2cpp_lasso/_generated/_loader.py +0 -0
  10. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/src/scm2cpp_lasso/_generated/_loader_accel_cublas.py +0 -0
  11. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/src/scm2cpp_lasso/_generated/_loader_classifiers.py +0 -0
  12. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/src/scm2cpp_lasso/_generated/_loader_derived_blas.py +0 -0
  13. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/src/scm2cpp_lasso/_generated/_loader_derived_cublas.py +0 -0
  14. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/src/scm2cpp_lasso/_generated/_loader_derived_loops.py +0 -0
  15. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/src/scm2cpp_lasso/_generated/_loader_gpu_cuda.py +0 -0
  16. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/src/scm2cpp_lasso/_generated/_loader_gramops_blas.py +0 -0
  17. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/src/scm2cpp_lasso/_generated/_loader_gramops_loops.py +0 -0
  18. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/src/scm2cpp_lasso/_generated/_loader_nmf_blas.py +0 -0
  19. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/src/scm2cpp_lasso/_generated/_loader_nmf_cublas.py +0 -0
  20. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/src/scm2cpp_lasso/_generated/_loader_nmf_loops.py +0 -0
  21. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/src/scm2cpp_lasso/_generated/accel_cublas/accel.cpp +0 -0
  22. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/src/scm2cpp_lasso/_generated/accel_cublas/accel.hpp +0 -0
  23. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/src/scm2cpp_lasso/_generated/accel_cublas/accel_capi.cpp +0 -0
  24. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/src/scm2cpp_lasso/_generated/classifiers.cpp +0 -0
  25. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/src/scm2cpp_lasso/_generated/classifiers.hpp +0 -0
  26. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/src/scm2cpp_lasso/_generated/classifiers_capi.cpp +0 -0
  27. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/src/scm2cpp_lasso/_generated/derived_blas/lasso_design.cpp +0 -0
  28. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/src/scm2cpp_lasso/_generated/derived_blas/lasso_design.hpp +0 -0
  29. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/src/scm2cpp_lasso/_generated/derived_blas/lasso_design_capi.cpp +0 -0
  30. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/src/scm2cpp_lasso/_generated/derived_cublas/lasso_design.cpp +0 -0
  31. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/src/scm2cpp_lasso/_generated/derived_cublas/lasso_design.hpp +0 -0
  32. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/src/scm2cpp_lasso/_generated/derived_cublas/lasso_design_capi.cpp +0 -0
  33. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/src/scm2cpp_lasso/_generated/derived_loops/lasso_design.cpp +0 -0
  34. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/src/scm2cpp_lasso/_generated/derived_loops/lasso_design.hpp +0 -0
  35. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/src/scm2cpp_lasso/_generated/derived_loops/lasso_design_capi.cpp +0 -0
  36. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/src/scm2cpp_lasso/_generated/gpu_cuda/gpu.cpp +0 -0
  37. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/src/scm2cpp_lasso/_generated/gpu_cuda/gpu.hpp +0 -0
  38. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/src/scm2cpp_lasso/_generated/gpu_cuda/gpu_capi.cpp +0 -0
  39. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/src/scm2cpp_lasso/_generated/gramops_blas/gramops.cpp +0 -0
  40. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/src/scm2cpp_lasso/_generated/gramops_blas/gramops.hpp +0 -0
  41. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/src/scm2cpp_lasso/_generated/gramops_blas/gramops_capi.cpp +0 -0
  42. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/src/scm2cpp_lasso/_generated/gramops_loops/gramops.cpp +0 -0
  43. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/src/scm2cpp_lasso/_generated/gramops_loops/gramops.hpp +0 -0
  44. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/src/scm2cpp_lasso/_generated/gramops_loops/gramops_capi.cpp +0 -0
  45. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/src/scm2cpp_lasso/_generated/lasso_cov.cpp +0 -0
  46. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/src/scm2cpp_lasso/_generated/lasso_cov.hpp +0 -0
  47. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/src/scm2cpp_lasso/_generated/lasso_cov_capi.cpp +0 -0
  48. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/src/scm2cpp_lasso/_generated/nmf_blas/nmf_cd.cpp +0 -0
  49. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/src/scm2cpp_lasso/_generated/nmf_blas/nmf_cd.hpp +0 -0
  50. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/src/scm2cpp_lasso/_generated/nmf_blas/nmf_cd_capi.cpp +0 -0
  51. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/src/scm2cpp_lasso/_generated/nmf_cublas/nmf_cd.cpp +0 -0
  52. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/src/scm2cpp_lasso/_generated/nmf_cublas/nmf_cd.hpp +0 -0
  53. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/src/scm2cpp_lasso/_generated/nmf_cublas/nmf_cd_capi.cpp +0 -0
  54. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/src/scm2cpp_lasso/_generated/nmf_loops/nmf_cd.cpp +0 -0
  55. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/src/scm2cpp_lasso/_generated/nmf_loops/nmf_cd.hpp +0 -0
  56. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/src/scm2cpp_lasso/_generated/nmf_loops/nmf_cd_capi.cpp +0 -0
  57. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/src/scm2cpp_lasso/_generated/scm2cpp-blas.hpp +0 -0
  58. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/src/scm2cpp_lasso/_generated/scm2cpp-cublas.hpp +0 -0
  59. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/src/scm2cpp_lasso/_generated/scm2cpp-cuda.hpp +0 -0
  60. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/src/scm2cpp_lasso/_generated/scm2cpp.hpp +0 -0
  61. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/src/scm2cpp_lasso/_libfind.py +0 -0
  62. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/src/scm2cpp_lasso/batch_capi.cu +0 -0
  63. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/src/scm2cpp_lasso.egg-info/SOURCES.txt +0 -0
  64. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/src/scm2cpp_lasso.egg-info/dependency_links.txt +0 -0
  65. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/src/scm2cpp_lasso.egg-info/requires.txt +0 -0
  66. {scm2cpp_lasso-0.13.1 → scm2cpp_lasso-0.13.2}/src/scm2cpp_lasso.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: scm2cpp-lasso
3
- Version: 0.13.1
3
+ Version: 0.13.2
4
4
  Summary: scikit-learn estimators (lasso, elastic net, ridge, ARD, SVM, SVR, logistic regression, GLMs, Huber, Theil-Sen, F-score selection, RFE, NMF, Gaussian mixture, FastICA, PCA, graphical lasso, RANSAC, SGD, OMP, LARS) translated from Scheme to C++ by scm2cpp; GPU batch solver and CUDA kernels included
5
5
  Author: Hirotaka Niitsuma
6
6
  License: MIT
@@ -18,6 +18,8 @@ Requires-Dist: numpy>=1.17
18
18
 
19
19
  # scm2cpp-lasso
20
20
 
21
+ [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/niitsuma/scm2cpp/blob/master/notebooks/compare-sklearn.ipynb)
22
+
21
23
  *[Japanese (README.ja.md)](README.ja.md)*
22
24
 
23
25
  Lasso by coordinate descent over a Gram matrix, with an optional GPU
@@ -28,8 +30,9 @@ path. The solver is Scheme, translated to C++ by
28
30
  $ pip install scm2cpp-lasso
29
31
  ```
30
32
 
31
- On Linux x86_64 and macOS arm64 (macOS 14 or later) this installs a wheel: compiled, with
32
- OpenBLAS inside, nothing to build. Elsewhere pip builds the sdist,
33
+ On Linux x86_64, macOS arm64 (macOS 14 or later) and Windows AMD64
34
+ this installs a wheel: compiled, nothing to build (with OpenBLAS
35
+ inside on Linux and macOS; Windows has the loop variants). Elsewhere pip builds the sdist,
33
36
  which needs a C++17 compiler and nothing else. The wheels carry no
34
37
  GPU code (a wheel cannot know the device); for the GPU builds, install
35
38
  from the sdist on a machine with `nvcc` on the path:
@@ -1,5 +1,7 @@
1
1
  # scm2cpp-lasso
2
2
 
3
+ [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/niitsuma/scm2cpp/blob/master/notebooks/compare-sklearn.ipynb)
4
+
3
5
  *[Japanese (README.ja.md)](README.ja.md)*
4
6
 
5
7
  Lasso by coordinate descent over a Gram matrix, with an optional GPU
@@ -10,8 +12,9 @@ path. The solver is Scheme, translated to C++ by
10
12
  $ pip install scm2cpp-lasso
11
13
  ```
12
14
 
13
- On Linux x86_64 and macOS arm64 (macOS 14 or later) this installs a wheel: compiled, with
14
- OpenBLAS inside, nothing to build. Elsewhere pip builds the sdist,
15
+ On Linux x86_64, macOS arm64 (macOS 14 or later) and Windows AMD64
16
+ this installs a wheel: compiled, nothing to build (with OpenBLAS
17
+ inside on Linux and macOS; Windows has the loop variants). Elsewhere pip builds the sdist,
15
18
  which needs a C++17 compiler and nothing else. The wheels carry no
16
19
  GPU code (a wheel cannot know the device); for the GPU builds, install
17
20
  from the sdist on a machine with `nvcc` on the path:
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "scm2cpp-lasso"
7
- version = "0.13.1"
7
+ version = "0.13.2"
8
8
  description = "scikit-learn estimators (lasso, elastic net, ridge, ARD, SVM, SVR, logistic regression, GLMs, Huber, Theil-Sen, F-score selection, RFE, NMF, Gaussian mixture, FastICA, PCA, graphical lasso, RANSAC, SGD, OMP, LARS) translated from Scheme to C++ by scm2cpp; GPU batch solver and CUDA kernels included"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.8"
@@ -12,6 +12,7 @@ device, or a failed nvcc all leave a working CPU package behind, and
12
12
  the batch path notices at import and falls back.
13
13
  """
14
14
  import os
15
+ import re
15
16
  import shutil
16
17
  import subprocess
17
18
  import sys
@@ -28,7 +29,9 @@ GEN_REL = PKG_REL + "/_generated"
28
29
  PKG = HERE / "src" / "scm2cpp_lasso"
29
30
  GEN = PKG / "_generated"
30
31
 
31
- CXXFLAGS = ["-O2", "-std=c++17"] if os.name != "nt" else ["/O2", "/std:c++17"]
32
+ # MSVC: /EHsc for C++ exceptions, /bigobj for the large generated files
33
+ MSVC = ["/O2", "/std:c++17", "/EHsc", "/bigobj"]
34
+ CXXFLAGS = ["-O2", "-std=c++17"] if os.name != "nt" else MSVC
32
35
 
33
36
  kernel = Extension(
34
37
  "scm2cpp_lasso._lasso_cov",
@@ -92,12 +95,24 @@ else:
92
95
  "scm2cpp_lasso._lasso_derived_loops",
93
96
  sources=[GEN_REL + "/derived_loops/lasso_design_capi.cpp"],
94
97
  include_dirs=[GEN_REL + "/derived_loops", GEN_REL],
95
- extra_compile_args=(["-O3", "-std=c++17"] if os.name != "nt"
96
- else ["/O2", "/std:c++17"]),
98
+ extra_compile_args=(["-O3", "-std=c++17"] if os.name != "nt" else MSVC),
97
99
  )
98
100
 
99
101
 
100
102
  class BuildWithCuda(build_ext):
103
+ def get_export_symbols(self, ext):
104
+ # The extensions are plain shared libraries the package loads
105
+ # through ctypes, not Python modules: no PyInit_ entry point,
106
+ # and on Windows a DLL shows ctypes only what it exports, so the
107
+ # exports are the extern "C" wrappers of the -M C API. (Unix
108
+ # linkers export everything and ignore this list.)
109
+ names = []
110
+ for src in ext.sources:
111
+ if src.endswith("_capi.cpp"):
112
+ text = (HERE / src).read_text()
113
+ names += re.findall(r'extern "C"[^(\n]*?\b(scm2cpp_\w+)\(', text)
114
+ return names
115
+
101
116
  def build_extensions(self):
102
117
  # the kernel is C++ compiled through the usual machinery, so
103
118
  # wheels and cross-compilation behave as they always do
@@ -165,7 +180,7 @@ def cuda_home():
165
180
  # flags carry: with signed overflow defined the compiler cannot treat
166
181
  # the flat index i*p + j as an induction variable, and the linear SVM's
167
182
  # sweep runs 25% slower.
168
- _cls_flags = ["-O3", "-std=c++17", "-fstrict-overflow"] if os.name != "nt" else ["/O2", "/std:c++17"]
183
+ _cls_flags = ["-O3", "-std=c++17", "-fstrict-overflow"] if os.name != "nt" else MSVC
169
184
  classifiers = Extension(
170
185
  "scm2cpp_lasso._classifiers",
171
186
  sources=[GEN_REL + "/classifiers_capi.cpp"],
@@ -51,7 +51,7 @@ __all__ = ["CovLasso", "CovRidge", "CovBayesianRidge", "CovLogistic", "CovGroupL
51
51
  "SelectPercentile", "GramRFE",
52
52
  "CovMultiTaskLasso", "CovMultiTaskLassoCV", "DerivedLasso",
53
53
  "cuda_available", "derived_backend", "kernel"]
54
- __version__ = "0.13.1"
54
+ __version__ = "0.13.2"
55
55
 
56
56
  _BATCH = load_batch_lib()
57
57
  _DP = ctypes.POINTER(ctypes.c_double)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: scm2cpp-lasso
3
- Version: 0.13.1
3
+ Version: 0.13.2
4
4
  Summary: scikit-learn estimators (lasso, elastic net, ridge, ARD, SVM, SVR, logistic regression, GLMs, Huber, Theil-Sen, F-score selection, RFE, NMF, Gaussian mixture, FastICA, PCA, graphical lasso, RANSAC, SGD, OMP, LARS) translated from Scheme to C++ by scm2cpp; GPU batch solver and CUDA kernels included
5
5
  Author: Hirotaka Niitsuma
6
6
  License: MIT
@@ -18,6 +18,8 @@ Requires-Dist: numpy>=1.17
18
18
 
19
19
  # scm2cpp-lasso
20
20
 
21
+ [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/niitsuma/scm2cpp/blob/master/notebooks/compare-sklearn.ipynb)
22
+
21
23
  *[Japanese (README.ja.md)](README.ja.md)*
22
24
 
23
25
  Lasso by coordinate descent over a Gram matrix, with an optional GPU
@@ -28,8 +30,9 @@ path. The solver is Scheme, translated to C++ by
28
30
  $ pip install scm2cpp-lasso
29
31
  ```
30
32
 
31
- On Linux x86_64 and macOS arm64 (macOS 14 or later) this installs a wheel: compiled, with
32
- OpenBLAS inside, nothing to build. Elsewhere pip builds the sdist,
33
+ On Linux x86_64, macOS arm64 (macOS 14 or later) and Windows AMD64
34
+ this installs a wheel: compiled, nothing to build (with OpenBLAS
35
+ inside on Linux and macOS; Windows has the loop variants). Elsewhere pip builds the sdist,
33
36
  which needs a C++17 compiler and nothing else. The wheels carry no
34
37
  GPU code (a wheel cannot know the device); for the GPU builds, install
35
38
  from the sdist on a machine with `nvcc` on the path:
File without changes