Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[pyclustering.nnet.sync] Multi-core implementation #170

Closed
annoviko opened this issue Feb 17, 2015 · 5 comments
Closed

[pyclustering.nnet.sync] Multi-core implementation #170

annoviko opened this issue Feb 17, 2015 · 5 comments
Assignees
Labels
Enhancement Tasks related to enhancement and development Optimization Tasks related to code optimization

Comments

@annoviko
Copy link
Owner

Multi-core implementation should be introduced. Prototype has been successfully tested on 24-core machine and shows advantages.

@annoviko annoviko self-assigned this Feb 17, 2015
@annoviko annoviko added the Enhancement Tasks related to enhancement and development label Feb 17, 2015
@annoviko annoviko added this to the 0.7 (release point) milestone Jun 2, 2016
@jesusareyesv
Copy link

Hello, I'm testing your implementation of X-means clustering algorithm in my research work, and the performance with some datasets that contains 4 or 5 million points is not exactly what i've expected. The future multicore version of this package will improve the performance of all the algorithms in the package (including X-means) or only some of them?

@annoviko
Copy link
Owner Author

annoviko commented Sep 29, 2017

Hello, @TemetNosce95,

Thank you for your attention to the library.
Have you tried to use ccore flag to increase performance of the X-means? There is an example how to do that:

xmeans_instance = xmeans(sample, start_centers, 20, ccore = True);

In this case (when ccore flag is true) C++ implementation of the algorithm will be used instead of python implementation and should improve. Please, let me know if you have got troubles with it (there were several compatibility issues that are already fixed on 'master' and '0.7.dev' branches).

This multi-core implementation is related to Sync oscillatory network, but not for X-Means algorithm.

Still, I will investigate the performance issue related to X-Means algorithm and try improve it. Also, it would useful if you provide datasets for final testing otherwise I will use random generated data for the issue for investigation and testing.

I have create the issue related to your problem: #372 .

@annoviko annoviko added the Optimization Tasks related to code optimization label Oct 26, 2017
@annoviko
Copy link
Owner Author

annoviko commented Oct 27, 2017

@TemetNosce95, I have started multi-core implementation for X-Means. And fixed clustering result before optimization to be able to compare results. I have found that in case of millions points situation is not so dramatic, there are some results of performance test (before optimization):

Random sample: (size:600000) ', Execution time: ' 6.189236562524233
Random sample: (size:1200000) ', Execution time: ' 12.69288331531482
Random sample: (size:1800000) ', Execution time: ' 18.732027960623853

Are you sure that you have used 'ccore' flag to increase performance (pass clustering process to C/C++ implementation of the pyclustering library, so called CCORE)?

xmeans_instance = xmeans(data_points, start_centers, 20, ccore = True);

And may I ask to provide data (for example upload to somewhere) for testing?
Could you please provide answer in #372 ?

@annoviko annoviko removed this from the 0.7 (release point) milestone Jan 14, 2018
@annoviko annoviko added this to To Do in 0.8.0 Optimization Jan 14, 2018
@annoviko annoviko moved this from To Do to In Progress in 0.8.0 Optimization Feb 2, 2018
annoviko added a commit that referenced this issue Feb 12, 2018
annoviko added a commit that referenced this issue Feb 12, 2018
@annoviko
Copy link
Owner Author

[ RUN      ] utest_sync.perf_test_2500_sequential
[       OK ] utest_sync.perf_test_2500_sequential (83 ms)
[ RUN      ] utest_sync.perf_test_2500_parallel
[       OK ] utest_sync.perf_test_2500_parallel (81 ms)
[ RUN      ] utest_sync.perf_test_3600_sequential
[       OK ] utest_sync.perf_test_3600_sequential (81 ms)
[ RUN      ] utest_sync.perf_test_3600_parallel
[       OK ] utest_sync.perf_test_3600_parallel (77 ms)

0.8.0 Optimization automation moved this from In Progress to Done Feb 13, 2018
@annoviko annoviko removed this from To Do in 0.7.x Feature Development May 14, 2018
@lemonysoft
Copy link

What should I do for using multi core of CURE? Thanks.

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Enhancement Tasks related to enhancement and development Optimization Tasks related to code optimization
Projects
No open projects
Development

No branches or pull requests

3 participants