Security News
Research
Data Theft Repackaged: A Case Study in Malicious Wrapper Packages on npm
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
This module provides a Python binding for Monte Carlo eXtreme for OpenCL (MCXCL). For other binaries, including the standalone executable and the MATLAB bindings, see our website.
Monte Carlo eXtreme (MCX) is a fast photon transport simulation software for 3D heterogeneous turbid media. By taking advantage of the massively parallel threads and extremely low memory latency in a modern graphics processing unit (GPU), MCX is capable of performing Monte Carlo (MC) photon simulations at a blazing speed, typically hundreds to a thousand times faster than a single-threaded CPU-based MC implementation.
pip install pmcxcl
, see https://pypi.org/project/pmcxcl/intel-opencl-icd
package
if the OS provides (such as Ubuntu 22.04); one can also install an open-source OpenCL runtime
POCL, using package manager such as sudo apt-get install pocl-opencl-icd
. However,
POCL's support is largely limited to CPUs. You do not need to install CUDA SDK to use pmcxcl.pip install numpy
or conda install numpy
pip install jdata
on all operating systems; For Debian-based Linux distributions, you can also install to the system interpreter
using apt-get: sudo apt-get install python3-jdata
. See https://pypi.org/project/jdata/ for more details.pip install bjdata
on all operating systems; For Debian-based Linux distributions, you can also install to the system interpreter
using apt-get: sudo apt-get install python3-bjdata
. See https://pypi.org/project/bjdata/ for more details.pip install matplotlib
or
conda install matplotlib
Operating System: pmcxcl and mcxcl can be compiled on most OSes, including Windows, Linux and MacOS.
OpenCL library: compiling mcxcl or pmcxcl requires to link with libOpenCL.so
on Linux, or libOpenCL.dylib
on MacOS or OpenCL.dll
on Windows. These libraries should have been installed by either graphics driver or
OpenCL runtimes.
Python Interpreter: Python 3.6 or above. The pip
Python package manager and the wheel
package (available
via pip
) are not required but recommended.
C/C++ Compiler: pmcxcl can be compiled using a wide variety of C compilers, including
Refer to each OS's online documentations for more in-depth information on how to install these compilers. MacOS provides built-in OpenCL library support.
OpenMP: The installed C/C++ Compiler should have support for OpenMP. GCC and Microsoft Visual Studio compiler support OpenMP out of the box. Apple Clang, however, requires manual installation of OpenMP libraries for Apple Clang. The easiest way to do this is via the Brew package manager, preferably after selecting the correct Xcode version:
brew install libomp
brew link --force libomp
CMake: CMake version 3.15 and later is required. Refer to the CMake website for more information on how to download. CMake is also widely available on package managers across all operating systems.
Ensure that cmake
, python
and the C/C++ compiler are all located over your PATH
.
This can be queried via echo $env:PATH
on Windows or echo $PATH
on Linux. If not, locate them and add their folder to the PATH
.
Clone the repository and switch to the pmcxcl/
folder:
git clone --recursive https://github.com/fangq/mcx.git
cd mcx/pmcxcl
One can run python3 setup.py install
or python3 -m pip install .
to both locally build and install the module
If one only wants to locally build the module, one should run python3 -m pip wheel .
If the binary module is successfully built locally, you should see a binary wheel file pmcxcl-X.X.X-cpXX-cpXX-*.whl
stored inside the mcxcl/pmcxcl
folder. You can install this wheel package using python3 -m pip install --force-reinstall pmcxcl-*.whl
to force installing this locally compiled pmcxcl
module and overwrite any previously installed versions.
The PMCXCL module is easy to use. You can use the pmcxcl.gpuinfo()
function to first verify
if you have NVIDIA/CUDA compatible GPUs installed; if there are NVIDIA GPUs detected,
you can then call the run()
function to launch a photon simulation.
A simulation can be defined conveniently in two approaches - a one-liner and a two-liner:
import pmcxcl
import numpy as np
import matplotlib.pyplot as plt
res = pmcxcl.run(nphoton=1000000, vol=np.ones([60, 60, 60], dtype='uint8'), tstart=0, tend=5e-9,
tstep=5e-9, srcpos=[30,30,0], srcdir=[0,0,1], prop=np.array([[0, 0, 1, 1], [0.005, 1, 0.01, 1.37]]))
res['flux'].shape
plt.imshow(np.log10(res['flux'][30,:, :]))
plt.show()
pmcxcl.run()
import pmcxcl
import numpy as np
cfg = {'nphoton': 1000000, 'vol':np.ones([60,60,60],dtype='uint8'), 'tstart':0, 'tend':5e-9, 'tstep':5e-9,
'srcpos': [30,30,0], 'srcdir':[0,0,1], 'prop':[[0,0,1,1],[0.005,1,0.01,1.37]]}
res = pmcxcl.run(cfg)
FAQs
Python bindings for Monte Carlo eXtreme (OpenCL) photon transport simulator
We found that pmcxcl demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Research
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
Research
Security News
Attackers used a malicious npm package typosquatting a popular ESLint plugin to steal sensitive data, execute commands, and exploit developer systems.
Security News
The Ultralytics' PyPI Package was compromised four times in one weekend through GitHub Actions cache poisoning and failure to rotate previously compromised API tokens.