【轉(zhuǎn)載】Spark的GPU支持方法研究

本文轉(zhuǎn)載自:https://my.oschina.net/u/2306127/blog/1602291

這包括幾個(gè)層次:

  • GPU直接支持Spark。因?yàn)镾park是多線程的,而GPU往往只能起一個(gè)單例,導(dǎo)致線程會(huì)競爭GPU資源,需要進(jìn)行管理、加鎖和調(diào)度。方法包括:
    • 原生代碼內(nèi)置編譯支持。
    • 引入cuDNN等NVidia庫進(jìn)行調(diào)用。
    • 通過Tensorflow等間接進(jìn)行支持。
    • JIT方式即時(shí)編譯調(diào)用方式支持。
  • GPU支持的Docker中運(yùn)行Spark。如果將Spark節(jié)點(diǎn)放入Docker容器中運(yùn)行,則需要使用NVidia提供的特殊版本Docker,而且需要安裝NVidai提供的cuDNN等軟件支持庫。由于這些庫調(diào)用了系統(tǒng)驅(qū)動(dòng),而且是C++編寫,因此Spark要能夠進(jìn)行系統(tǒng)庫的調(diào)用。
  • GPU支持的Kubernetes之上運(yùn)行Spark。

只有同時(shí)滿足上面的條件,才能通過Kubernetes的集群管理對Docker中Spark進(jìn)行GPU操作。

下面是已經(jīng)做的一些研究。

  • IBMSparkGPU的方案可以將GPU用于RDD和DataFrame,支持通用計(jì)算,重點(diǎn)支持機(jī)器學(xué)習(xí);
  • deeplearning4j是基于Java的,包含數(shù)值計(jì)算和神經(jīng)網(wǎng)絡(luò),支持GPU;
  • NUMBA的方案通過PySpark即時(shí)編譯產(chǎn)生GPU的調(diào)用代碼,兼容性好;
  • Tensorflow/Caffe/MXNet等與Spark整合主要是節(jié)點(diǎn)調(diào)度,GPU由深度學(xué)習(xí)引擎調(diào)度,RDD需要數(shù)據(jù)交換,主要用于存儲(chǔ)中間超參數(shù)數(shù)據(jù)。如TensorFrame的實(shí)現(xiàn)-https://github.com/databricks/tensorframes

具體的資源包括:

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容