{ "info": { "author": "Ziheng Chen", "author_email": "zihengchen2015@u.northwestern.edu", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "# Image Algorithm for General Purpose\n\n\nImage Algorithm is a clustering algorithm based [fast search and find of density peaks](http://science.sciencemag.org/content/344/6191/1492). \nComparing with other popular clustering methods, such as DBSCAN, one of the most prominent advantages of Image Algorithm is being highly parallelizable. This repository is an implementation of Image Algorithm for general purpose, supporting strong and easy GPU acceleration. \n\nFor now, the implementation includes three backends: numpy, CUDA and OpenCL.\n\n| backend | dependency | Support Platform | Support Device |\n| :---: | :---: | :---: | :---: |\n| [`numpy`](http://www.numpy.org) | None | Mac/Linux/Windows | CPU |\n| [`CUDA`](https://en.wikipedia.org/wiki/CUDA) | pycuda | Linux | Only NVIDIA GPU |\n| [`OpenCL`](https://en.wikipedia.org/wiki/OpenCL) | pyopencl | Mac | NVIDIA/AMD/Intel GPU, multi-core CPU |\n\nIt has been tested that all three backends give the identical clustering results. Therefore users can feel free to choose whichever faster and easier for their purposes. \n\n\nFor all three backends, two kinds of data structure can be taken in: Flat list and kdbin. KDBin, bins in k-dimention, accommodates points inside spatial bins in k-dimention with dynamic bin distribution and flexible bin capacity. Techniqually it uses hashmap and a set of memory references to obtain nearest neighboring bins and points inside, such that query of neighborhood for each point is O(1) complexity. Performance test shows a strong acceleration in density calculation using KDBin data structure.\n\n| supported data structure | `rho` Calculation | `rhorank` and `nh` Calculation |\n| :---: | :---: | :---: |\n| [`numpy`](http://www.numpy.org) | list/bin | list/bin |\n| [`CUDA`](https://en.wikipedia.org/wiki/CUDA) | list/bin | list |\n| [`OpenCL`](https://en.wikipedia.org/wiki/OpenCL) | list/bin | list |\n\nFor density rho calculation, performance tested is shown below.\n



\n
\n
\n
