Draft:add partial support for GPU for 2D projection and clustering
Add support for GPU for UMAP, TSNE projection and clustering.
Could not add a complete support because cupy(numpy), cupyx(scipy), cudf(pandas), cuml(sklearn) do not implement all functions of the corresponding packages for CPU.