女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用NVIDIA GPU加速Apache Spark中Parquet數(shù)據(jù)掃描

NVIDIA英偉達企業(yè)解決方案 ? 來源:NVIDIA英偉達企業(yè)解決方案 ? 2025-07-23 10:52 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

隨著各行各業(yè)的企業(yè)數(shù)據(jù)規(guī)模不斷增長,Apache Parquet 已經(jīng)成為了一種主流數(shù)據(jù)存儲格式。Apache Parquet 是一種列式存儲格式,專為高效的大規(guī)模數(shù)據(jù)處理而設(shè)計。它按列而非按行的方式組織數(shù)據(jù),這使得 Parquet 在查詢時僅讀取所需的列,而無需掃描整行數(shù)據(jù),即可實現(xiàn)高性能的查詢和分析。高效的數(shù)據(jù)布局使 Parquet 在現(xiàn)代分析生態(tài)系統(tǒng)中成為了受歡迎的選擇,尤其是在 Apache Spark 工作負載中。

適用于 Apache Spark 的 RAPIDS 加速器基于 cuDF 構(gòu)建,支持 Parquet 數(shù)據(jù)格式,可在 GPU 上加速讀取和寫入數(shù)據(jù)。對于許多輸入數(shù)據(jù)量達到 TB 級別的大規(guī)模 Spark 工作負載而言,高效的 Parquet 掃描對于實現(xiàn)良好的運行時性能至關(guān)重要。

本文將討論如何緩解因較高的寄存器使用率導致的占用限制問題,并分享基準測試結(jié)果。

Apache Parquet 數(shù)據(jù)格式

Parquet 文件格式采用列式存儲結(jié)構(gòu),通過將列線程塊組裝成行組來實現(xiàn)數(shù)據(jù)存儲。其中元數(shù)據(jù)不同于數(shù)據(jù),可以根據(jù)需要拆分到多個文件中(如圖 1 所示)。

9b9c45c2-66e4-11f0-a6aa-92fbcf53809c.png

圖 1. Parquet 文件格式(來源:文件格式)

Parquet 格式支持多種數(shù)據(jù)類型。元數(shù)據(jù)規(guī)定了該如何解釋這些數(shù)據(jù)類型,從而能夠支持更復雜的邏輯類型表示,比如時間戳、字符串、小數(shù)等等。

元數(shù)據(jù)還可以用于說明更復雜的結(jié)構(gòu),如嵌套類型和列表。數(shù)據(jù)可以用多種不同的格式進行編碼,例如普通值、字典編碼、行程長度編碼、位打包(bit-packing)等等。

9baa2836-66e4-11f0-a6aa-92fbcf53809c.png

GPU 上 Parquet 的占用限制

在適用于 Apache Spark 的 RAPIDS 加速器之前,Parquet 掃描是通過一個單一 cuDF 內(nèi)核實現(xiàn)的,它在一組處理代碼中支持所有 Parquet 列類型。

使用 Parquet 數(shù)據(jù)的客戶越來越多地在 GPU 上采用 Spark。鑒于 Parquet 掃描對性能有關(guān)鍵影響,人們投入了更多時間來了解其性能特征。以下是幾個會影響內(nèi)核運行效率的常見因素:

流式多處理器(SM):GPU 的主要處理單元,負責執(zhí)行計算任務(wù)。

共享內(nèi)存:GPU 上集成的內(nèi)存,按線程塊分配,同一線程塊中的所有線程都可以訪問相同的共享內(nèi)存。

寄存器:GPU 上集成的快速內(nèi)存,存儲單個線程使用的信息,用于流式多處理器執(zhí)行的計算操作。

我們在分析 Parquet 掃描時發(fā)現(xiàn),由于遇到寄存器限制,GPU 的總體占用率低于預(yù)期。寄存器的使用情況,取決于 CUDA 編譯器如何根據(jù)內(nèi)核邏輯和數(shù)據(jù)管理來生成代碼。

對于 Parquet 單內(nèi)核而言,支持所有列類型的復雜性導致了內(nèi)核龐大且復雜,其共享內(nèi)存和寄存器使用率都很高。盡管單一內(nèi)核可能將代碼整合在了一起,但其復雜性限制了可能的優(yōu)化類型,并在大規(guī)模應(yīng)用時導致了性能受限。

9bc8955a-66e4-11f0-a6aa-92fbcf53809c.png

圖 2. GPU 上的 Parquet 單內(nèi)核

圖 2 展示了 GPU 上的 Parquet 數(shù)據(jù)處理循環(huán)。每個模塊都是大量復雜的內(nèi)核代碼,可能都有各自的共享內(nèi)存需求。許多線程塊依賴于數(shù)據(jù)類型,這導致加載到內(nèi)存中的內(nèi)核變得極為臃腫。

具體而言,其中一個限制在于 Parquet 塊在線程束(warp)內(nèi)的解碼方式。線程束在處理自身線程塊前,需要按順序等待先前調(diào)度的線程束完成操作。這種機制雖然允許不同線程束并行處理解碼過程的不同階段,但卻造成了 GPU 上引入了低效的任務(wù)依賴關(guān)系,導致效率低下。

轉(zhuǎn)向采用塊級解碼算法對提升性能至關(guān)重要,但由于其增加了數(shù)據(jù)共享和同步的復雜性,可能會進一步增加寄存器數(shù)量并限制占用率。

cuDF 中的 Parquet 微內(nèi)核

為了緩解因寄存器使用率較高而導致的占用受限問題,最初嘗試的方法是為 Parquet 中的預(yù)處理列表類型數(shù)據(jù)創(chuàng)建一個較小的內(nèi)核。從單內(nèi)核中分離出一段代碼,形成一個獨立的內(nèi)核,結(jié)果令人振奮——基準測試的整體結(jié)果顯示運行時間更快,并且 GPU 跟蹤數(shù)據(jù)也表明占用率有所提高。

隨后對不同的列類型也采用了相同的方法。針對各種數(shù)據(jù)類型的微內(nèi)核使用 C++ 模板來實現(xiàn)功能復用,這簡化了每種類型的代碼維護和調(diào)試工作。

9bea1ac2-66e4-11f0-a6aa-92fbcf53809c.png

圖 3. GPU 上的 Parquet 微內(nèi)核方法

Parquet 微內(nèi)核方法充分利用編譯時優(yōu)化,僅執(zhí)行處理給定類型所需的代碼路徑。與包含所有可能代碼路徑的單一內(nèi)核不同,該方法可以生成許多單獨的微內(nèi)核,而每個微內(nèi)核僅包含該路徑所需的代碼。

這一過程可以通過在編譯時使用 if constexpr 來實現(xiàn)。這樣一來,使得代碼保持自然可讀的結(jié)構(gòu),但不會包含特定數(shù)據(jù)屬性組合(字符串或固定寬度、有列表或無列表等)永遠不會執(zhí)行的代碼路徑。

以下是一個處理固定寬度類型列的簡單示例。可以看到,在新的微內(nèi)核方法中,大部分不必要的處理步驟都被跳過了。這種數(shù)據(jù)類型只需要復制數(shù)據(jù)。

9bfc8fa4-66e4-11f0-a6aa-92fbcf53809c.png

圖 4.固定寬度類型的 Parquet 微內(nèi)核方法

為了解決線程束之間的瓶頸問題,新的微內(nèi)核使每個步驟都能處理整個線程塊,使得線程束可以更高效地獨立處理數(shù)據(jù)。這對于字符串處理尤為重要,它使得 GPU 上包含 128 個線程的完整線程塊都能用于復制字符串,而之前的實現(xiàn)方式僅使用一個線程束來復制字符串。

在使用了一塊具有 24 GB GPU 顯存的 NVIDIA RTX A5000 顯卡的本地基準測試中,設(shè)備緩沖區(qū)中預(yù)先加載了 512MB 使用 Snappy 壓縮的 Parquet 數(shù)據(jù)。為了測試分塊讀取,每次讀取 500-KB 的塊。測試數(shù)據(jù)包含以下幾種變化:

基數(shù)為 0 和 1000

運行長度為 1 和 32

1% 的空值

如果數(shù)據(jù)有重復,則使用自適應(yīng)字典編碼

圖 5 展示了在 GPU 上使用新的微內(nèi)核方法后,不同 Parquet 列類型在吞吐量方面的提升情況。

9c31a446-66e4-11f0-a6aa-92fbcf53809c.png

圖 5. GPU 上使用 Parquet 微內(nèi)核方法的吞吐量提升

對列表列分塊讀取的優(yōu)化還使 500-KB 讀取的吞吐量提高了 117%。

在 GPU 上開始使用 Apache Spark

Parquet 是一種廣泛用于大數(shù)據(jù)處理的關(guān)鍵數(shù)據(jù)格式。通過使用 cuDF 中經(jīng)過優(yōu)化的微內(nèi)核,GPU 可以加速在 Apache Spark 中掃描 Parquet 數(shù)據(jù)的進程。

企業(yè)可以利用適用于 Apache Spark 的 RAPIDS 加速器,將 Apache Spark 工作負載無縫遷移到 NVIDIA GPU。適用于 Apache Spark 的 RAPIDS 加速器結(jié)合了 RAPIDS cuDF 庫的強大功能和 Spark 分布式計算框架的規(guī)模,利用 GPU 加速處理。通過使用適用于 Apache Spark 的 RAPIDS 加速器插件 JAR 文件啟動 Spark,無需更改代碼即可在 GPU 上運行現(xiàn)有的 Apache Spark 應(yīng)用程序。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 加速器
    +關(guān)注

    關(guān)注

    2

    文章

    828

    瀏覽量

    39149
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    7259

    瀏覽量

    92018
  • gpu
    gpu
    +關(guān)注

    關(guān)注

    28

    文章

    4955

    瀏覽量

    131398

原文標題:使用 GPU 加速 Apache Spark 上的 Apache Parquet 掃描

文章出處:【微信號:NVIDIA-Enterprise,微信公眾號:NVIDIA英偉達企業(yè)解決方案】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    RDMA技術(shù)在Apache Spark的應(yīng)用

    背景介紹 在當今數(shù)據(jù)驅(qū)動的時代,Apache?Spark已經(jīng)成為了處理大規(guī)模數(shù)據(jù)集的首選框架。作為一個開源的分布式計算系統(tǒng),Spark因其高
    的頭像 發(fā)表于 03-25 18:13 ?1892次閱讀
    RDMA技術(shù)在<b class='flag-5'>Apache</b> <b class='flag-5'>Spark</b><b class='flag-5'>中</b>的應(yīng)用

    《CST Studio Suite 2024 GPU加速計算指南》

    的各個方面,包括硬件支持、操作系統(tǒng)支持、許可證、GPU計算的啟用、NVIDIA和AMD GPU的詳細信息以及相關(guān)的使用指南和故障排除等內(nèi)容。 1. 硬件支持 - NVIDIA
    發(fā)表于 12-16 14:25

    基于Spark 2.1版本的Apache Spark內(nèi)存管理

    Apache Spark 內(nèi)存管理詳解
    發(fā)表于 04-26 17:13

    基于Apache Spark 的下一波智能應(yīng)用

    基于Apache Spark 的下一波智能應(yīng)用
    發(fā)表于 12-28 11:07 ?0次下載

    如何使用Apache Spark 2.0

    Spark 2.0使用DataFrames和SQL的第一步 Spark 2.0開發(fā)的一個動機是讓它可以觸及更廣泛的受眾,特別是缺乏編程技能但可能非常熟悉SQL的數(shù)據(jù)分析師或業(yè)務(wù)分析師
    發(fā)表于 09-28 19:00 ?0次下載
    如何使用<b class='flag-5'>Apache</b> <b class='flag-5'>Spark</b> 2.0

    Apache Spark 1.6預(yù)覽版新特性展示

    日前,Databricks公司發(fā)布了一個Apache Spark主要版本的可用性。除了可用性、可移植性等幾個新的特性外,本次發(fā)布還提供了對尚未發(fā)布的Apache Spark 1.6預(yù)覽
    發(fā)表于 10-13 11:21 ?0次下載
    <b class='flag-5'>Apache</b> <b class='flag-5'>Spark</b> 1.6預(yù)覽版新特性展示

    Apache Spark上的分布式機器學習的介紹

    Apache Spark上的分布式機器學習
    的頭像 發(fā)表于 11-05 06:31 ?3222次閱讀

    NVIDIA為全球領(lǐng)先的數(shù)據(jù)分析平臺Apache Spark提速

    NVIDIA企業(yè)計算主管Manuvir Das表示:“數(shù)據(jù)分析是當今企業(yè)和研究者所面臨最大的高性能計算挑戰(zhàn)。從ETL到訓練再到推理,整個Spark 3.0 方案的原生GPU
    的頭像 發(fā)表于 05-15 15:48 ?2477次閱讀

    Apache Spark 3.2有哪些新特性

    經(jīng)過七輪投票, Apache Spark 3.2 終于正式發(fā)布了。Apache Spark 3.2 已經(jīng)是 Databricks Runtime 10.0 的一部分,感興趣的同學可以去
    的頭像 發(fā)表于 11-17 14:09 ?2018次閱讀

    NVIDIA RAPIDS加速器可將工作分配集群各節(jié)點

    近期,該團隊在 GPU 助力的服務(wù)器上測試了適用于 Apache SparkNVIDIA RAPIDS 加速器,該軟件可將工作分配到集
    的頭像 發(fā)表于 04-01 14:15 ?1433次閱讀

    利用Apache Spark和RAPIDS Apache加速Spark實踐

      在第三期文章,我們詳細介紹了如何充分利用 Apache SparkApache RAPIDS 加速
    的頭像 發(fā)表于 04-26 17:39 ?2178次閱讀
    利用<b class='flag-5'>Apache</b> <b class='flag-5'>Spark</b>和RAPIDS <b class='flag-5'>Apache</b><b class='flag-5'>加速</b><b class='flag-5'>Spark</b>實踐

    使用Apache SparkNVIDIA GPU加速深度學習

      隨著人們對深度學習( deep learning , DL )興趣的日益濃厚,越來越多的用戶在生產(chǎn)環(huán)境中使用 DL 。由于 DL 需要強大的計算能力,開發(fā)人員正在利用 gpu 來完成他們的訓練和推理工作。
    的頭像 發(fā)表于 04-27 09:54 ?2545次閱讀
    使用<b class='flag-5'>Apache</b> <b class='flag-5'>Spark</b>和<b class='flag-5'>NVIDIA</b> <b class='flag-5'>GPU</b><b class='flag-5'>加速</b>深度學習

    Spark ML算法提供GPU加速

    新的 GPU 庫降低了 Apache Spark ML 的計算成本
    的頭像 發(fā)表于 07-05 16:30 ?1043次閱讀
    為<b class='flag-5'>Spark</b> ML算法提供<b class='flag-5'>GPU</b><b class='flag-5'>加速</b>度

    NVIDIA TensorRT與Apache Beam SDK的集成

    使用 NVIDIA TensorRT 在 Apache Beam 簡化和加速機器學習預(yù)測
    的頭像 發(fā)表于 07-05 16:30 ?728次閱讀

    NVIDIA加速Apache Spark助力企業(yè)節(jié)省大量成本

    隨著 NVIDIA 推出 Aether 項目,通過采用 NVIDIA 加速Apache Spark 企業(yè)得以自動
    的頭像 發(fā)表于 03-25 15:09 ?561次閱讀
    <b class='flag-5'>NVIDIA</b><b class='flag-5'>加速</b>的<b class='flag-5'>Apache</b> <b class='flag-5'>Spark</b>助力企業(yè)節(jié)省大量成本