- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
I would like to make some benchmarks and force PyDAAL to use only one thread for k-means clustering. How can I do that?
Best regards,
Francois
Link Copied
2 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Francois,
The library includes an example called set_number_of_threads.py that should give you all the information you need. I'll paste it here for convenience.
from os.path import join as jp
from os import environ
import daal.algorithms.kmeans as kmeans
import daal.algorithms.kmeans.init as init
from daal.data_management import FileDataSource, DataSourceIface
from daal.services import Environment
# Input data set parameters
datasetFileName = jp('..', 'data', 'batch', 'kmeans_dense.csv')
# K-Means algorithm parameters
nClusters = 20
nIterations = 5
nThreads = 2
nThreadsInit = None
nThreadsNew = None
if __name__ == "__main__":
# Get the number of threads that is used by the library by default
nThreadsInit = Environment.getInstance().getNumberOfThreads()
# Set the maximum number of threads to be used by the library
Environment.getInstance().setNumberOfThreads(nThreads)
# Get the number of threads that is used by the library after changing
nThreadsNew = Environment.getInstance().getNumberOfThreads()
# Initialize FileDataSource to retrieve the input data from a .csv file
dataSource = FileDataSource(
datasetFileName, DataSourceIface.doAllocateNumericTable,
DataSourceIface.doDictionaryFromContext
)
# Retrieve the data from the input file
dataSource.loadDataBlock()
# Get initial clusters for the K-Means algorithm
initAlg = init.Batch(nClusters)
initAlg.input.set(init.data, dataSource.getNumericTable())
res = initAlg.compute()
centroids = res.get(init.centroids)
# Create an algorithm object for the K-Means algorithm
algorithm = kmeans.Batch(nClusters, nIterations)
algorithm.input.set(kmeans.data, dataSource.getNumericTable())
algorithm.input.set(kmeans.inputCentroids, centroids)
# Run computations
unused_result = algorithm.compute()
print("Initial number of threads: {}".format(nThreadsInit))
print("Number of threads to set: {}".format(nThreads))
print("Number of threads after setting: {}".format(nThreadsNew))
Thanks,
Chris
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thanks for your help. I appreciate.
Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page