def to_cugraph(edge_index: Tensor, edge_weight: Optional[Tensor] = None, relabel_nodes: bool = True): r"""Converts a graph given by :obj:`edge_index` and optional :obj:`edge_weight` into a :obj:`cugraph` graph object. Args: relabel_nodes (bool, optional): If set to :obj:`True`, :obj:`cugraph` will remove any isolated nodes, leading to a relabeling of nodes. (default: :obj:`True`) """ import cudf import cugraph df = cudf.from_dlpack(to_dlpack(edge_index.t())) if edge_weight is not None: assert edge_weight.dim() == 1 df[2] = cudf.from_dlpack(to_dlpack(edge_weight)) return cugraph.from_cudf_edgelist( df, source=0, destination=1, edge_attr=2 if edge_weight is not None else None, renumber=relabel_nodes)
def test_from_dlpack_cupy_2d(data_2d): cupy_array = cupy.array(data_2d, order="F") cupy_host_array = cupy_array.get().flatten() dlt = cupy_array.toDlpack() gdf = cudf.from_dlpack(dlt) cudf_host_array = np.array(gdf.to_pandas()).flatten() assert_eq(cudf_host_array, cupy_host_array)
def test_from_dlpack_cupy_1d(data_1d): cupy_array = cupy.array(data_1d) cupy_host_array = cupy_array.get() dlt = cupy_array.toDlpack() gs = cudf.from_dlpack(dlt) cudf_host_array = gs.to_array(fillna="pandas") assert_eq(cudf_host_array, cupy_host_array)
def test_from_dlpack_cupy_1d(data_1d): cupy_array = cupy.array(data_1d) cupy_host_array = cupy_array.get() dlt = cupy_array.toDlpack() gs = cudf.from_dlpack(dlt) cudf_host_array = gs.to_numpy(na_value=np.nan) assert_eq(cudf_host_array, cupy_host_array)
def KMeans(data, cluster): warnings.filterwarnings('ignore') data_pack = torch.utils.dlpack.to_dlpack(data) data_df = cudf.from_dlpack(data_pack) model = cuml.KMeans(n_clusters=cluster) result = model.fit(data_df) labels = torch.utils.dlpack.from_dlpack(result.labels_.to_dlpack()) warnings.filterwarnings('once') return labels
def test_from_dlpack_cupy_2d(data_2d): expectation = data_size_expectation_builder(data_2d) with expectation: cupy_array = cupy.array(data_2d, order="F") cupy_host_array = cupy_array.get().flatten() dlt = cupy_array.toDlpack() gdf = cudf.from_dlpack(dlt) cudf_host_array = np.array(gdf.to_pandas()).flatten() assert_eq(cudf_host_array, cupy_host_array)
def test_from_dlpack_cupy_1d(data_1d): expectation = data_size_expectation_builder(data_1d) with expectation: cupy_array = cupy.array(data_1d) cupy_host_array = cupy_array.get() dlt = cupy_array.toDlpack() gs = cudf.from_dlpack(dlt) cudf_host_array = gs.to_array(fillna="pandas") assert_eq(cudf_host_array, cupy_host_array)
vertex = cp.fromDlpack(vertex.to_dlpack()) partition = cp.fromDlpack(partition.to_dlpack()) vertex = cp.reshape(vertex, XYZ_C.shape[0]) labelRE = cp.reshape(partition, XYZ_C.shape[0]) index = cp.argsort(vertex) vertex = cp.take_along_axis(vertex, index, axis=0) labelRE = cp.take_along_axis(labelRE, index, axis=0) print(result) print(vertex) print(labelRE) print(index) louvain_endtime = datetime.datetime.now() print(louvain_endtime - louvain_starttime) print(labelRE) labelRE = cp.asfortranarray(labelRE) labelRE = cd.from_dlpack(labelRE.toDlpack()) #labelRE = cd.DataFrame(labelRE) print(labelRE) df = cd.DataFrame({'label': labelRE}) df.to_csv('HW_AI/HW_Final/gpu.csv') ''' plt.figure(1) ax = plt.axes(projection='3d') z = XYZ_C[:,2] x = XYZ_C[:,0] y = XYZ_C[:,1] c = labelRE ax.scatter(x, y, z, c = c, cmap = plt.get_cmap('jet')) plt.title('Cluster result by modularity') ax.view_init(80, 0)
def f(x): return cudf.from_dlpack(x.toDlpack())