Я написал короткий код на Python, который находит кластеры в трехмерных случайно сгенерированных точках, и когда я играл с кодом, я понял, что процессор работает неправильно быстрее, чем графический процессор по какой-то причине, с которой я не знаком:
`
Код: Выделить всё
from sklearn.cluster import DBSCAN
from cuml.cluster import DBSCAN as cuDBSCAN
import cupy as cp
pij_gpu = cp.asarray(pij.astype(np.float32)) # Transfer data to GPU
eps = 0.3
min_samples = 5
start = time.time()
cluster = DBSCAN(eps=eps, min_samples=min_samples, n_jobs=-1)
cluster.fit(pij)
print(f"CPU: {time.time() - start}")
start = time.time()
cluster_gpu = cuDBSCAN(eps=eps, min_samples=min_samples)
cluster_gpu.fit(pij_gpu)
print(f"GPU: {time.time() - start}")
журналы:
Код: Выделить всё
size is: (670761, 3)
CPU: 1.508012294769287
[W] [14:24:17.089902] Batch size limited by the chosen integer type (4 bytes). 6007 -> 3201. Using the larger integer type might result in better performance
GPU: 10.168060541152954
я что-то упустил?
я поискал в Интернете и использовал чатgpt, чтобы найти ответ, но я не смог найти ответ.
Я заметил одну вещь: когда точки ближе, графический процессор имеет тенденцию работать немного быстрее, чем процессор.
у меня nvidia 3090 и относительно мощный компьютер
Подробнее здесь: https://stackoverflow.com/questions/787 ... rom-rapids