如何有效地使用和处理GPU中的AVRO数据?

时间:2019-02-25 17:20:53

标签: c++ c++11 cuda avro

要求:

  1. 我有一个生成AVRO数据的应用程序(每小时约100 GB)。
  2. 我想创建另一个应用程序,该应用程序(每小时)读取生成的AVRO数据并在GPU中转换数据

由AVRO生成的示例类(不准确,只是为了说明我的情况):

struct XXX {
    std:string s1;
    std:string s2;
    int i1;
    float f1; 
}

struct YYY { 
    XXX x1;
    XXX x2;
    std:string s1;
    int i1;
}

问题:

  1. 反序列化AVRO记录后,它在嵌套结构中包含std :: string
  2. GPU不支持std :: string

问题:

有没有办法将反序列化的AVRO记录发送到GPU进行进一步处理?

如果这个问题看起来很幼稚,请接受我的意见,因为我是c ++和GPU编程的新手。

2 个答案:

答案 0 :(得分:1)

不确定是否有帮助,但是cudf具有用于avro文件的gpu加载器,并支持字符串https://github.com/rapidsai/cudf

答案 1 :(得分:-1)

使用GPU的目的是什么?是表演吗?因为了解机器如何解释代码比使用GPU效率要高得多。如果您使用的是AVRO代码源(上面已声明),您将无法获得真正的性能提升。我编写了一些自定义的Avro序列化程序,并在生成的代码上进行了100倍的序列化改进。如果要将反序列化转换为GPU,建议您首先为您的特定Avro模式手动编写一个反序列化器,然后尝试将其转换为GPU。