code: def test_to_cpu():
      data = pd.DataFrame(
          np.random.rand(10, 10),
          index=np.random.randint(-100, 100, size=(10,)),
          columns=[np.random.bytes(10) for _ in range(10)],
      )
      df = from_pandas_df(data)
      cdf = to_gpu(df)
      df2 = to_cpu(cdf)
  
      assert df.index_value == df2.index_value
      assert df.columns_value == df2.columns_value
      assert df2.op.gpu is False
      pd.testing.assert_series_equal(df.dtypes, df2.dtypes)
  
      df, df2 = _get_df_after_tile([df.data, df2.data])
  
      assert df.nsplits == df2.nsplits
      assert df.chunks[0].index_value == df2.chunks[0].index_value
      assert df.chunks[0].columns_value == df2.chunks[0].columns_value
      assert df2.chunks[0].op.gpu is False
      pd.testing.assert_series_equal(
          df.chunks[0].dtypes, df2.chunks[0].dtypes
      )
  
      assert df2 is to_cpu(df2)
  
imports: from typing import List, Union
  import numpy
  import pandas
  import pytest
  from ....None import opcodes
  from ....config import options, option_context
  from ....core import OutputType, tile, Tileable
  from ....core.graph import TileableGraph, TileableGraphBuilder, TileContext, ChunkGraphBuilder
  from ....core.operand import OperandStage
  from ....tensor.core import TENSOR_TYPE
  from ...None import eval, cut, get_dummies, to_numeric
  from ...core import DATAFRAME_TYPE, SERIES_TYPE, SERIES_CHUNK_TYPE, INDEX_TYPE, CATEGORICAL_TYPE, CATEGORICAL_CHUNK_TYPE, DataFrameData, SeriesData
  from ...datasource.dataframe import from_pandas
  from ...datasource.series import from_pandas
  from ...datasource.index import from_pandas
  from ..None import to_gpu, to_cpu, astype
label_desc: Use image node_id 3 for calling a global function with example usage: test_to_cpu() without return types