Skip to content

Commit 85d5d3d

Browse files
authored
Merge pull request #14 from gjbex/development
Development
2 parents e20440c + 27232a6 commit 85d5d3d

File tree

6 files changed

+335
-110
lines changed

6 files changed

+335
-110
lines changed

environment.yml

+12-10
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,21 @@ name: python_for_hpc
22
channels:
33
- defaults
44
dependencies:
5-
- bokeh
6-
- click
5+
- mpi4py
6+
- python
77
- cython
8-
- dask
98
- h5py
10-
- jupyterlab
11-
- mpi4py
12-
- numba
139
- numexpr
14-
- numpy
15-
- pandas
16-
- python
1710
- scipy
18-
- snakeviz
11+
- pandas
1912
- swig
13+
- dask
14+
- numpy
15+
- jupyterlab
16+
- bokeh
17+
- click
18+
- numba
19+
- snakeviz
20+
- memory_profiler
21+
- matplotlib
2022
prefix: /home/gjb/miniconda3/envs/python_for_hpc

python_for_hpc.pptx

101 KB
Binary file not shown.

python_for_hpc_linux64_conda_specs.txt

+111-87
Large diffs are not rendered by default.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,181 @@
1+
# This file may be used to create an environment using:
2+
# $ conda create --name <env> --file <this file>
3+
# platform: linux-64
4+
@EXPLICIT
5+
https://repo.anaconda.com/pkgs/main/linux-64/nvcc_linux-64-10.1-hcaf9a05_10.conda
6+
https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2
7+
https://repo.anaconda.com/pkgs/main/linux-64/blas-1.0-openblas.conda
8+
https://repo.anaconda.com/pkgs/main/linux-64/ca-certificates-2021.10.26-h06a4308_2.conda
9+
https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.36.1-hea4e1c9_2.tar.bz2
10+
https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-11.2.0-h5c6108e_10.tar.bz2
11+
https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-11.2.0-he4da1e4_10.tar.bz2
12+
https://conda.anaconda.org/conda-forge/linux-64/mysql-common-8.0.25-ha770c72_2.tar.bz2
13+
https://conda.anaconda.org/conda-forge/linux-64/pandoc-2.14.2-h7f98852_0.tar.bz2
14+
https://conda.anaconda.org/conda-forge/noarch/tzdata-2021c-he74cb21_0.tar.bz2
15+
https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-11.2.0-h69a702a_10.tar.bz2
16+
https://conda.anaconda.org/conda-forge/linux-64/libgomp-11.2.0-h1d223b6_10.tar.bz2
17+
https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-1_gnu.tar.bz2
18+
https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-11.2.0-h1d223b6_10.tar.bz2
19+
https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.3-h516909a_0.tar.bz2
20+
https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h7f98852_4.tar.bz2
21+
https://conda.anaconda.org/conda-forge/linux-64/cudatoolkit-11.4.2-h00f7ccd_9.tar.bz2
22+
https://conda.anaconda.org/conda-forge/linux-64/expat-2.4.1-h9c3ff4c_0.tar.bz2
23+
https://conda.anaconda.org/conda-forge/linux-64/icu-68.1-h58526e2_0.tar.bz2
24+
https://conda.anaconda.org/conda-forge/linux-64/jbig-2.1-h7f98852_2003.tar.bz2
25+
https://conda.anaconda.org/conda-forge/linux-64/jpeg-9d-h36c2ea0_0.tar.bz2
26+
https://conda.anaconda.org/conda-forge/linux-64/lerc-2.2.1-h9c3ff4c_0.tar.bz2
27+
https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.7-h7f98852_5.tar.bz2
28+
https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h9c3ff4c_4.tar.bz2
29+
https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.16-h516909a_0.tar.bz2
30+
https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.4-h7f98852_1.tar.bz2
31+
https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.17-pthreads_h8fe5266_1.tar.bz2
32+
https://conda.anaconda.org/conda-forge/linux-64/libopus-1.3.1-h7f98852_1.tar.bz2
33+
https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.18-h36c2ea0_1.tar.bz2
34+
https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.32.1-h7f98852_1000.tar.bz2
35+
https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.2.1-h7f98852_0.tar.bz2
36+
https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.11-h36c2ea0_1013.tar.bz2
37+
https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.3-h9c3ff4c_1.tar.bz2
38+
https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.2-h58526e2_4.tar.bz2
39+
https://conda.anaconda.org/conda-forge/linux-64/nspr-4.30-h9c3ff4c_0.tar.bz2
40+
https://repo.anaconda.com/pkgs/main/linux-64/openssl-1.1.1l-h7f8727e_0.conda
41+
https://conda.anaconda.org/conda-forge/linux-64/pcre-8.45-h9c3ff4c_0.tar.bz2
42+
https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h36c2ea0_1001.tar.bz2
43+
https://repo.anaconda.com/pkgs/main/linux-64/tbb-2021.4.0-hd09550d_0.conda
44+
https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.9-h7f98852_0.tar.bz2
45+
https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.3-h7f98852_0.tar.bz2
46+
https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.5-h516909a_1.tar.bz2
47+
https://conda.anaconda.org/conda-forge/linux-64/gettext-0.19.8.1-h73d1719_1008.tar.bz2
48+
https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-11_linux64_openblas.tar.bz2
49+
https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2
50+
https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.10-h9b69904_4.tar.bz2
51+
https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h9c3ff4c_0.tar.bz2
52+
https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.13-h7f98852_1003.tar.bz2
53+
https://conda.anaconda.org/conda-forge/linux-64/readline-8.1-h46c0cb4_0.tar.bz2
54+
https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.4-h9c3ff4c_1.tar.bz2
55+
https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.11-h36c2ea0_1013.tar.bz2
56+
https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-11_linux64_openblas.tar.bz2
57+
https://conda.anaconda.org/conda-forge/linux-64/libglib-2.68.4-h174f98d_1.tar.bz2
58+
https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-11_linux64_openblas.tar.bz2
59+
https://conda.anaconda.org/conda-forge/linux-64/libllvm11-11.1.0-hf817b99_2.tar.bz2
60+
https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.37-h21135ba_2.tar.bz2
61+
https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.9.12-h72842e0_0.tar.bz2
62+
https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.36.0-h9cd32fc_2.tar.bz2
63+
https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.11-h27826a3_1.tar.bz2
64+
https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.0-ha95c52a_0.tar.bz2
65+
https://conda.anaconda.org/conda-forge/linux-64/boost-cpp-1.74.0-h312852a_4.tar.bz2
66+
https://conda.anaconda.org/conda-forge/linux-64/freetype-2.10.4-h0708190_1.tar.bz2
67+
https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.68.4-h9c3ff4c_1.tar.bz2
68+
https://conda.anaconda.org/conda-forge/linux-64/gstreamer-1.18.5-h76c114f_0.tar.bz2
69+
https://conda.anaconda.org/conda-forge/linux-64/krb5-1.19.2-hcc1bbae_2.tar.bz2
70+
https://conda.anaconda.org/conda-forge/linux-64/libclang-11.1.0-default_ha53f305_1.tar.bz2
71+
https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.3.0-hf544144_1.tar.bz2
72+
https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.0.3-he3ba5ed_0.tar.bz2
73+
https://conda.anaconda.org/conda-forge/linux-64/mysql-libs-8.0.25-hfa10184_2.tar.bz2
74+
https://conda.anaconda.org/conda-forge/linux-64/nss-3.69-hb5efdd6_1.tar.bz2
75+
https://conda.anaconda.org/conda-forge/linux-64/python-3.9.7-hb7a2778_3_cpython.tar.bz2
76+
https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyh9f0ad1d_0.tar.bz2
77+
https://conda.anaconda.org/conda-forge/noarch/async_generator-1.10-py_0.tar.bz2
78+
https://conda.anaconda.org/conda-forge/noarch/attrs-21.2.0-pyhd8ed1ab_0.tar.bz2
79+
https://conda.anaconda.org/conda-forge/noarch/backcall-0.2.0-pyh9f0ad1d_0.tar.bz2
80+
https://conda.anaconda.org/conda-forge/noarch/backports-1.0-py_2.tar.bz2
81+
https://repo.anaconda.com/pkgs/main/linux-64/certifi-2021.10.8-py39h06a4308_0.conda
82+
https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-2.0.0-pyhd8ed1ab_0.tar.bz2
83+
https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.0-pyhd8ed1ab_0.tar.bz2
84+
https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2
85+
https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.3-pyhd8ed1ab_1003.tar.bz2
86+
https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.13.1-hba837de_1005.tar.bz2
87+
https://conda.anaconda.org/conda-forge/linux-64/glib-2.68.4-h9c3ff4c_1.tar.bz2
88+
https://conda.anaconda.org/conda-forge/linux-64/gst-plugins-base-1.18.5-hf529b03_0.tar.bz2
89+
https://conda.anaconda.org/conda-forge/noarch/idna-3.1-pyhd3deb0d_0.tar.bz2
90+
https://conda.anaconda.org/conda-forge/noarch/ipython_genutils-0.2.0-py_1.tar.bz2
91+
https://conda.anaconda.org/conda-forge/noarch/json5-0.9.5-pyh9f0ad1d_0.tar.bz2
92+
https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.12-hddcbb42_0.tar.bz2
93+
https://conda.anaconda.org/conda-forge/linux-64/libpq-13.3-hd57d9b9_1.tar.bz2
94+
https://repo.anaconda.com/pkgs/main/linux-64/llvmlite-0.37.0-py39h295c915_1.conda
95+
https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.5.1-pyhd8ed1ab_0.tar.bz2
96+
https://repo.anaconda.com/pkgs/main/linux-64/numpy-base-1.20.3-py39h39b7dee_0.conda
97+
https://conda.anaconda.org/conda-forge/noarch/olefile-0.46-pyh9f0ad1d_1.tar.bz2
98+
https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.4.0-hb52868f_1.tar.bz2
99+
https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2
100+
https://conda.anaconda.org/conda-forge/noarch/parso-0.8.2-pyhd8ed1ab_0.tar.bz2
101+
https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2
102+
https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.11.0-pyhd8ed1ab_0.tar.bz2
103+
https://repo.anaconda.com/pkgs/main/linux-64/psutil-5.8.0-py39h27cfd23_1.conda
104+
https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2
105+
https://conda.anaconda.org/conda-forge/noarch/pycparser-2.20-pyh9f0ad1d_2.tar.bz2
106+
https://conda.anaconda.org/conda-forge/noarch/pyparsing-2.4.7-pyh9f0ad1d_0.tar.bz2
107+
https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.9-2_cp39.tar.bz2
108+
https://conda.anaconda.org/conda-forge/noarch/pytz-2021.3-pyhd8ed1ab_0.tar.bz2
109+
https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.0-pyhd8ed1ab_0.tar.bz2
110+
https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2
111+
https://conda.anaconda.org/conda-forge/noarch/testpath-0.5.0-pyhd8ed1ab_0.tar.bz2
112+
https://conda.anaconda.org/conda-forge/noarch/traitlets-5.1.0-pyhd8ed1ab_0.tar.bz2
113+
https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-py_1.tar.bz2
114+
https://conda.anaconda.org/conda-forge/noarch/wheel-0.37.0-pyhd8ed1ab_1.tar.bz2
115+
https://conda.anaconda.org/conda-forge/noarch/zipp-3.6.0-pyhd8ed1ab_0.tar.bz2
116+
https://conda.anaconda.org/conda-forge/noarch/babel-2.9.1-pyh44b312d_0.tar.bz2
117+
https://conda.anaconda.org/conda-forge/linux-64/cffi-1.14.6-py39h4bc2ebd_1.tar.bz2
118+
https://conda.anaconda.org/conda-forge/linux-64/chardet-4.0.0-py39hf3d152e_1.tar.bz2
119+
https://conda.anaconda.org/conda-forge/noarch/cycler-0.10.0-py_2.tar.bz2
120+
https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h48d8840_2.tar.bz2
121+
https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.4.1-py39he80948d_0.tar.bz2
122+
https://conda.anaconda.org/conda-forge/linux-64/importlib-metadata-4.8.1-py39hf3d152e_0.tar.bz2
123+
https://conda.anaconda.org/conda-forge/linux-64/jedi-0.18.0-py39hf3d152e_2.tar.bz2
124+
https://conda.anaconda.org/conda-forge/linux-64/jupyter_core-4.8.1-py39hf3d152e_0.tar.bz2
125+
https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.3.2-py39h1a9c180_0.tar.bz2
126+
https://conda.anaconda.org/conda-forge/linux-64/markupsafe-2.0.1-py39h3811e60_0.tar.bz2
127+
https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.3-pyhd8ed1ab_0.tar.bz2
128+
https://conda.anaconda.org/conda-forge/linux-64/mistune-0.8.4-py39h3811e60_1004.tar.bz2
129+
https://repo.anaconda.com/pkgs/main/linux-64/numpy-1.20.3-py39h3dbb7de_0.conda
130+
https://conda.anaconda.org/conda-forge/noarch/packaging-21.0-pyhd8ed1ab_0.tar.bz2
131+
https://conda.anaconda.org/conda-forge/noarch/pexpect-4.8.0-pyh9f0ad1d_2.tar.bz2
132+
https://conda.anaconda.org/conda-forge/linux-64/pillow-8.3.2-py39ha612740_0.tar.bz2
133+
https://conda.anaconda.org/conda-forge/linux-64/pyqt5-sip-4.19.18-py39he80948d_7.tar.bz2
134+
https://conda.anaconda.org/conda-forge/linux-64/pyrsistent-0.17.3-py39h3811e60_2.tar.bz2
135+
https://conda.anaconda.org/conda-forge/linux-64/pysocks-1.7.1-py39hf3d152e_3.tar.bz2
136+
https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2
137+
https://conda.anaconda.org/conda-forge/linux-64/pyzmq-22.3.0-py39h37b5a0c_0.tar.bz2
138+
https://conda.anaconda.org/conda-forge/linux-64/setuptools-58.2.0-py39hf3d152e_0.tar.bz2
139+
https://conda.anaconda.org/conda-forge/linux-64/sniffio-1.2.0-py39hf3d152e_1.tar.bz2
140+
https://conda.anaconda.org/conda-forge/linux-64/tornado-6.1-py39h3811e60_1.tar.bz2
141+
https://conda.anaconda.org/conda-forge/linux-64/websocket-client-0.57.0-py39hf3d152e_4.tar.bz2
142+
https://conda.anaconda.org/conda-forge/linux-64/anyio-3.3.2-py39hf3d152e_0.tar.bz2
143+
https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-20.1.0-py39h3811e60_2.tar.bz2
144+
https://conda.anaconda.org/conda-forge/noarch/backports.functools_lru_cache-1.6.4-pyhd8ed1ab_0.tar.bz2
145+
https://conda.anaconda.org/conda-forge/noarch/bleach-4.1.0-pyhd8ed1ab_0.tar.bz2
146+
https://conda.anaconda.org/conda-forge/linux-64/brotlipy-0.7.0-py39h3811e60_1001.tar.bz2
147+
https://conda.anaconda.org/conda-forge/linux-64/cryptography-3.4.7-py39hbca0aa6_0.tar.bz2
148+
https://conda.anaconda.org/conda-forge/noarch/jinja2-3.0.2-pyhd8ed1ab_0.tar.bz2
149+
https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.0.1-pyhd8ed1ab_0.tar.bz2
150+
https://conda.anaconda.org/conda-forge/noarch/jupyter_client-7.0.6-pyhd8ed1ab_0.tar.bz2
151+
https://conda.anaconda.org/conda-forge/noarch/mako-1.1.5-pyhd8ed1ab_0.tar.bz2
152+
https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.4.3-py39h2fa2bec_1.tar.bz2
153+
https://repo.anaconda.com/pkgs/main/linux-64/numba-0.54.1-py39h51133e4_0.conda
154+
https://conda.anaconda.org/conda-forge/noarch/pip-21.2.4-pyhd8ed1ab_0.tar.bz2
155+
https://conda.anaconda.org/conda-forge/noarch/pygments-2.10.0-pyhd8ed1ab_0.tar.bz2
156+
https://conda.anaconda.org/conda-forge/noarch/pytools-2021.2.8-pyhd8ed1ab_0.tar.bz2
157+
https://conda.anaconda.org/conda-forge/linux-64/qt-5.12.9-hda022c4_4.tar.bz2
158+
https://conda.anaconda.org/conda-forge/linux-64/terminado-0.12.1-py39hf3d152e_0.tar.bz2
159+
https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.1.2-pyh9f0ad1d_0.tar.bz2
160+
https://conda.anaconda.org/conda-forge/noarch/nbformat-5.1.3-pyhd8ed1ab_0.tar.bz2
161+
https://conda.anaconda.org/conda-forge/linux-64/pycuda-2021.1-py39hcdb43f2_0.tar.bz2
162+
https://conda.anaconda.org/conda-forge/noarch/pyopenssl-21.0.0-pyhd8ed1ab_0.tar.bz2
163+
https://conda.anaconda.org/conda-forge/linux-64/pyqt-impl-5.12.3-py39h0fcd23e_7.tar.bz2
164+
https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.5-pyh9f0ad1d_2.tar.bz2
165+
https://conda.anaconda.org/conda-forge/noarch/nbclient-0.5.4-pyhd8ed1ab_0.tar.bz2
166+
https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.20-pyha770c72_0.tar.bz2
167+
https://conda.anaconda.org/conda-forge/linux-64/pyqtchart-5.12-py39h0fcd23e_7.tar.bz2
168+
https://conda.anaconda.org/conda-forge/linux-64/pyqtwebengine-5.12.1-py39h0fcd23e_7.tar.bz2
169+
https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.7-pyhd8ed1ab_0.tar.bz2
170+
https://conda.anaconda.org/conda-forge/linux-64/ipython-7.28.0-py39hef51801_0.tar.bz2
171+
https://conda.anaconda.org/conda-forge/linux-64/nbconvert-6.2.0-py39hf3d152e_0.tar.bz2
172+
https://conda.anaconda.org/conda-forge/linux-64/pyqt-5.12.3-py39hf3d152e_7.tar.bz2
173+
https://conda.anaconda.org/conda-forge/noarch/requests-2.26.0-pyhd8ed1ab_0.tar.bz2
174+
https://conda.anaconda.org/conda-forge/linux-64/ipykernel-6.4.1-py39hef51801_0.tar.bz2
175+
https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.4.3-py39hf3d152e_1.tar.bz2
176+
https://conda.anaconda.org/conda-forge/noarch/requests-unixsocket-0.2.0-py_0.tar.bz2
177+
https://conda.anaconda.org/conda-forge/noarch/jupyter_server-1.11.1-pyhd8ed1ab_0.tar.bz2
178+
https://conda.anaconda.org/conda-forge/noarch/notebook-6.4.4-pyha770c72_0.tar.bz2
179+
https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.8.2-pyhd8ed1ab_0.tar.bz2
180+
https://conda.anaconda.org/conda-forge/noarch/nbclassic-0.3.2-pyhd8ed1ab_0.tar.bz2
181+
https://conda.anaconda.org/conda-forge/noarch/jupyterlab-3.1.18-pyhd8ed1ab_0.tar.bz2

source-code/gpu/environment.yml

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
name: cuda
2+
channels:
3+
- defaults
4+
dependencies:
5+
- pycuda
6+
- jupyterlab
7+
- matplotlib
8+
- numpy
9+
- nvcc_linux-64
10+
- numba
11+
- psutil
12+
prefix: /home/gjb/miniconda3/envs/cuda

source-code/multiprocessing/pi_futures.py

+19-13
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,14 @@ def partial_pi(args=(1000, )):
1919
return 4.0*nr_hits/nr_tries
2020

2121

22-
def compute_pi(nr_tries=10000, pool_size=None, constructor=None):
22+
def compute_pi(nr_tries=10000, pool_size=1, constructor=None):
2323
if not constructor:
2424
executor = ProcessPoolExecutor(max_workers=pool_size)
2525
else:
2626
executor = constructor(max_workers=pool_size)
2727
args = [(nr_tries//pool_size, )
2828
for _ in range(pool_size)]
2929
results = executor.map(partial_pi, args)
30-
if not pool_size:
31-
pool_size = multiprocessing.cpu_count()
3230
return sum(results)/pool_size
3331

3432

@@ -37,21 +35,29 @@ def main():
3735
arg_parser.add_argument('--p', dest='pool_size', type=int,
3836
default=1, help='pool size')
3937
arg_parser.add_argument('--n', dest='nr_tries', type=int,
40-
default=1, help='number of tries')
38+
default=1000, help='number of tries')
4139
arg_parser.add_argument('--t', default='processes', dest='type',
4240
choices=['processes', 'threads'],
4341
help='Either use processes or treads')
42+
arg_parser.add_argument('--verbose', action='store_true',
43+
help='generate verbose output')
4444
options = arg_parser.parse_args()
45-
if options.type:
46-
if options.type == 'processes':
47-
constructor = ProcessPoolExecutor
48-
else:
49-
constructor = ThreadPoolExecutor
50-
my_pi = compute_pi(options.nr_tries, options.pool_size, constructor)
45+
if options.nr_tries//options.pool_size == 0:
46+
print(f'#error: too little work, increase --n value to at least '
47+
f'{options.pool_size}',
48+
file=sys.stderr)
49+
sys.exit(1)
50+
if options.type == 'processes':
51+
constructor = ProcessPoolExecutor
5152
else:
52-
my_pi = compute_pi(options.nr_tries, options.pool_size)
53-
print('computed pi = {0:.15f}'.format(my_pi))
54-
print('exact pi = {0:.15f}'.format(math.pi))
53+
constructor = ThreadPoolExecutor
54+
if options.verbose:
55+
print(f'# running using {options.pool_size} {options.type} on '
56+
f'{multiprocessing.cpu_count()} logical cores',
57+
file=sys.stderr)
58+
my_pi = compute_pi(options.nr_tries, options.pool_size, constructor)
59+
print(f'computed pi = {my_pi:.15f}')
60+
print(f'exact pi = {math.pi:.15f}')
5561
return 0
5662

5763
if __name__ == '__main__':

0 commit comments

Comments
 (0)