使用 spark 运行急流时 nvvp 时间线中的间隙

问题描述

我正在对使用 tpch-dbgen 生成的 CSV 运行一些 sql 查询。 为简单起见,我使用一个线程/任务运行它,并查看时间线中的间隙,如附图所示。 是磁盘操作吗?这种开销可以以某种方式放松或优化吗? 我如何确定那里究竟发生了什么?

Profiler timeline

解决方法

这可能是在 GPU 处理之前缓冲来自分布式文件系统的文件输入和 Spark 压缩任务输出并将其作为 shuffle 的一部分写入磁盘的组合(不清楚此查询是否从显示的配置文件部分进行了 shuffle) .

在 RAPIDS Accelerator 和 cudf jar 中都有一些 Java 级别的 NVTX 范围可以帮助提供更多的可见性。添加

--conf spark.executor.extraJavaOptions="-Dai.rapids.cudf.nvtx.enabled=true"

到 Spark 命令行以启用这些应显示在收集的 GPU 配置文件中的 NVTX 范围。

另请参阅 https://nvidia.github.io/spark-rapids/docs/tuning-guide.html,了解有关为 Apache Spark 调整 RAPIDS 加速器的提示。