Particularly difficult are sparse data structures that do not have a regular layout in memory and where the size of the structure may vary from element to element.
GPUs have not been very good at executing code with branches.