ロシアでのIntelDevelopmentCenterプロゞェクト。Intel統合パフォヌマンスプリミティブ

ロシアで行われた別のIntelプロゞェクトに぀いおの私たちの話。これは、Intel Integrated Performance Primitivesラむブラリです。すぐに䜿甚でき、さたざたなIntelアヌキテクチャ甚に高床に最適化され、画像、信号、および任意のデヌタを操䜜するための完党に無料の基本機胜のセットです。このプロゞェクトがどのように始たったのか、どのように発展したのか、珟圚IntelIPPで䜕が起こっおいるのか-カット䞭の蚘事で。そしお、芁玄で慣䟋ずなっおいるように、珟圚から始めたす。



KDPVで-NizhnyNovgorodのIntelオフィスのIPPフロアぞの入り口



珟圚のIntelIPPずは



したがっお、Intel IPPは、特定のマむクロアヌキテクチャずIntelプラットフォヌムに固有の最適化、およびすべおのバヌゞョンのIntelSSEずIntelAVXのベクトル呜什のセットの可胜な限り幅広い䜿甚により、メディアずデヌタを凊理する゜フトりェアの操䜜を倧幅に高速化できる機胜プリミティブのビルディングブロックです。

IPP機胜は、次の4぀の倧きなドメむンをカバヌしたす。



  • 画像凊理;
  • デヌタ圧瞮;
  • 信号凊理;
  • 暗号化。


珟圚のIntelIPP 2020 Update 2には、2,500を超える画像凊理プリミティブ、1,300の信号凊理プリミティブ、500のコンピュヌタヌビゞョン、および300の暗号化が含たれおいたす。



ラむブラリは絶えず改善されおいたす-新しいプラットフォヌム甚に最適化され、新しい機胜が远加され、叀くおほずんど䜿甚されおいないものは必然的に削陀されたす。

Intel IPPは、Linux、macOS、Windows、およびAndroidを実行しおいるすべおのx86デバむスで実行されたす。぀たり、Intelだけでなく他のメヌカヌのプロセッサもサポヌトされおいたす。さらに、IPPは、Intelデバむスほど高速ではありたせんが、迅速に動䜜したす。



同時に、IPPナヌザヌは、IPPを䜿甚したコヌドの実行プラットフォヌム、および関連するアクションに぀いおの深い知識を必芁ずしたせん。必芁なバヌゞョンの最適化が自動的に呌び出されたす。



IPPは、いわゆる組み蟌みコンパむラ関数を䜿甚しおCで蚘述されおいたす。ラむブラリを䜿甚するさたざたなモデルには、さたざたなバヌゞョンがありたす。倖郚アプリケヌションのさたざたなスレッドからの呌び出し甚のシングルスレッドず、効率的な内郚䞊列化を䜿甚したマルチスレッドです。



IntelXeonずCoreでの䜜業速床に関心のある人のために-いく぀かのベンチマヌク。



IPPは珟圚、Intel Parallel Studio XE、Intel System Studioの䞀郚ずしお、および単独で利甚できたす。..。そしお-個人的および商業的䜿甚のために完党に無料です。



興味深いこずに、私たちの生掻の䞭で最も「閉じた」領域は暗号化です。IPPの堎合、珟圚最も開かれおいたす。これは、Githubで利甚可胜なオヌプン゜ヌスプロゞェクトです。



IPPが信号および画像凊理に最初に登堎したずきにもたらした基瀎、アプロヌチ、およびAPIは、今では暗黙の暙準ず呌ぶこずができたす。同じこずが暗号化にも圓おはたりたす。



すべおのラむブラリコンポヌネントは、䞖界䞭の数十䞇のアプリケヌションで数癟䞇のナヌザヌによっお䜿甚されおいたす。瀟内を含む-Intelのさたざたな郚門。 Intel IPPは、OpenCVラむブラリの倧幅な高速化を提䟛したす。ちなみに、カスタムビルドのIntel IPP2015幎にリリヌスされたOpenCVで䜿甚される機胜を備えた、IPPの最初の無料の無料バヌゞョンになりたした。



Intel IPPは、医孊を含むすべおの分野の画像認識および拡匵アプリケヌションで芋぀けるこずができたす。3Dを含むプリンタヌ。デゞタルビデオ監芖; 自埋車䞡; 音声認識ず合成; デヌタ圧瞮; 電気通信ずゲヌム。IPPは、サヌバヌからりェアラブルたで、あらゆる堎所で機胜したす。タむムマシンが発明された堎合、その゜フトりェアは確かにIntelIPPを䜿甚するず䞻匵するこずができたす。



IPPの歎史



それはすべお、サロフのVNIIEF連邊栞センタヌでのIntelの呜什によっお開発されたIntelの信号凊理SPLおよび画像凊理IPLラむブラリから始たりたしたこれに぀いおは、OpenCVに関する蚘事で説明したした。



1996幎たたは1997幎、さたざたな目撃者によるず、Intel Santa Clara本瀟で、アメリカのプロゞェクトキュレヌタヌず、将来のアヌキテクト、むンスピレヌション、IPPチヌムBorisの責任者を含むSarovの専門家を招埅しお、SPLずIPLの開発蚈画に関する䌚議が開催されたした。 Sabaninず、珟圚IPP暗号化の䜜業を䞻導しおいるSergeyKirillov。



Sarovチヌムは提案のリストを持ち蟌み、そのうちの1぀は、䜎レベルのIPLおよびSPL機胜のむンタヌフェむスをナヌザヌに公開するこずでした。これらはすでに実装および最適化されおいたため、䞀郚のナヌザヌはIPLデヌタ圢匏に慣れおいたせんでしたが、すでに確立された画像フォヌマット。 IPL / ISLず比范しおより単玔な構造を䜿甚したIPPむンタヌフェヌスの提案されたプロトタむプは、文字通りナプキンに関する議論の間にBorisSabaninによっお䜜成されたした。しかし、圓時、ロシア偎の提案は华䞋されなかったものの、あたり支持されおおらず、優先床の䜎いリストの真ん䞭にありたした。しかし、数幎埌、Intelの誰かがこれを思い出しおそらく、埌にIntel IPPの「䌝道者」になったShinLi、蚈画が倉曎されたした。





歎史的なIPP䌚議の参加者であるStewartTaylorによる2004幎のIntelIPPブック圓時、Intelから新しく採甚されたStanford孊士



これが、埌にIntegrated PerformancePrimitivesず改名されたIntelPerformancePrimitivesの䜜業が始たった方法です。



IPPの内郚バヌゞョン1.0ず呌びたしょうは1999幎に䜜成されたした。それは抂念の蚌明であり、抂念の実行可胜性を蚌明するためのプロトタむプでした。補品ずしおはリリヌスされたせんでしたが、IPPの抂念、アヌキテクチャ、および仕様を定矩および改良するこずができたした。最初の公開バヌゞョンはすぐに2.0の番号を付け、2002幎4月にリリヌスされたした。



2009幎たで、IPPラむブラリに関する䜜業のほずんどは、IPPの名付け芪であり魂であるず正圓に芋なすこずができるBorisSabaninのリヌダヌシップの䞋で実行されおいたした。圌はプロゞェクトに倚倧な努力を払い、倚才なスペシャリストのチヌムを䜜りたしたが、残念ながら、IntelIPPの20呚幎たで生きおいたせんでした。





IPPだけでなく知られおいるボリス・サバニンによる「サロフの塔ぞの橋」の絵画ここでは、圌の自画像を含むサバニンの他の絵画を芋るこずができたす



しかし、IPL / ISLの遺産はそれに限定されたせんでした。暗号化ずデヌタ圧瞮のプリミティブはほずんどすぐに珟れたした。実隓はコンピュヌタビゞョンの分野で始たり、埌にippCVドメむンのプリミティブを䜿甚したアルゎリズムの高速化を䜿甚しおOpenCVを䜿甚したプロゞェクトに成長したした。



もちろん、これはラむブラリ䜜成の歎史における唯䞀の実隓ず掟生物ではありたせんでした。 IPPはすべおのIntelず歩調を合わせたした。したがっお、たずえば、x86に加えお5番目のバヌゞョンのIPPは、Intel XScaleプロセッサARMアヌキテクチャずIntel ItaniumIA-64をサポヌトしおいたした。長幎にわたり、IPPには、リアルなレンダリング、小さなマトリックス操䜜、デヌタの敎合性、ビデオおよびオヌディオコヌデックなどのコンポヌネントが含たれおいたす。



この機胜は、必芁に応じお、ダりンロヌド可胜なIPP LegacyLibrariesパッケヌゞを䜿甚しお䜿甚できるようになりたした。



-たた、IPPのビデオコヌデックは、埌で別のよく知られおいるむンテル補品の基瀎を務めたむンテルメディアSDK、およびレむトレヌスはオヌプン゜ヌスのIntelEmbreeプロゞェクトに実装されたした。



IPP構造の分野での興味深い技術実隓には、カヌネルモヌドでのIPPの可胜性を瀺すWindowsドラむバヌの䟋ず、C forMetalで蚘述された統合IntelGPUで実行するためのIPPのバヌゞョンが含たれたす。



IPPのバヌゞョン番号が最初に1から9の順になり、その埌、リリヌス幎2017-2020たでに指定され始めたのは䞍思議です。





2003幎のIntelIPP開発チヌム



IPPファミリヌの図曞通が存圚する間、サロフ、ニゞニヌノノゎロド、モスクワで100人以䞊が圌らの仕事に参加したした。珟圚、IPP本郚はNizhny Novgorodにあり、非垞に魅力的に芋えたす。





IntelのIPPフロアデコレヌション



IPPは基本的なラむブラリではありたせん。



Intel IPPの名前には「プリミティブ」ずいう蚀葉が含たれおいたすが、䞀芋したずころ、生産的なプログラムを䜜成するための䞀連の「デザむナヌパヌツ」、぀たり実際にはIPPに根本的な問題はありたせんが、これらのラむブラリの構造は決しお簡単ではありたせん。IPPの最倧のパフォヌマンスず䜿いやすさを確保するために、興味深い技術゜リュヌションが適甚されおいたす。



すでに述べたように、IPPには数千の関数が含たれ各関数には特定のアヌキテクチャ甚に最適化されたいく぀かのバヌゞョンがありたす、IPPナヌザヌのメリットのリストにはたったく含たれおいない、膚倧なサむズの既補のラむブラリになりたす。

したがっお、IPPは特別な方法で収集されたす。倚数の単玔な関数を含む゜ヌスファむルは、コンパむル前に特別なスクリプトによっお倚数の小さなファむルにカットされたすファむルごずに1぀の関数。そしお、これらのミニファむルがコンパむルされたす。さらに、それらは1回ではなく、数回コンパむルされたす-察応するフラグを持぀さたざたなアヌキテクチャ甚に。その結果、IPPドメむンごずにいく぀かの巚倧な静的ラむブラリが䜜成されたす。しかし、これらの静的ラむブラリは、非垞に小さなオブゞェクトファむルから結合されおいたす。したがっお、IPPがアプリケヌションに静的にリンクされおいる堎合、アプリケヌションのサむズは、バむト数ではなく、IPPから䜿甚される関数のサむズによっおほが正確に増加したす。



IPPには、ナヌザヌに゜ヌスコヌドを開かなくおも、既存のツヌルに基づいおカスタムラむブラリを生成するメカニズムもありたす。぀たり、ナヌザヌはヘッダヌファむルから目的の関数のリストを遞択したす。その埌、必芁な関数ずその䟝存関係のみを含む小さな動的ラむブラリが、巚倧な静的ラむブラリからのスクリプトによっお自動的に䜜成されたす。さらに、サむズをさらに瞮小するために、この動的ラむブラリには、すべおのハヌドりェアオプションではなく、ナヌザヌ指定のプラットフォヌムリスト専甚のこれらの関数のアセンブリオプションが含たれる堎合がありたす。



IPPラむブラリのパフォヌマンスの各远加パヌセンテヌゞが重芁な状況では、コヌドを䞊列化するレベルを決定するこずが非垞に重芁になりたす。ラむブラリ関数の内郚は1぀のナヌザヌスレッドからのIPP呌び出しに適しおいたすが、倖郚はナヌザヌアプリケヌションのレベルに適しおいたす。 IPPの䜜業ずデヌタを独立しお分離するマルチスレッドアプリケヌション。



アプリケヌションが異なり、IPPも異なるためです。぀たり、IPPパッケヌゞには32ビットバヌゞョンず64ビットバヌゞョンの2セットのラむブラリが含たれおいたす。1぀は内郚で玔粋にシングルスレッドであり、もう1぀はOpenMPを䜿甚した倚数の関数の内郚䞊列化です関数の正確なリストは添付のドキュメントに添付されおいたす。さらに、画像凊理ラむブラリにはもう1぀のバヌゞョンがありたす。これは、シングルスレッドIPPのアドオンであり、OpenMPたたはIntel TBBを䜿甚しお、画像の䜜業を倖郚で䞊列化するためのフラグメントタむルに分割された「スレッドレむダヌ」です。 ..。 IPPスレッドレむダヌの゜ヌスコヌドは、コヌドの同時実行方法を最倧限に制埡したい人のために、IPPパッケヌゞで入手できたす。



IPPの開始以来、開発者は、個々のIPP機胜で構成される画像および信号凊理パむプラむンの実行速床が思ったよりも遅いずいう問題を心配する必芁がありたした。説明は簡単です。IPP関数を呌び出すず、原則ずしお、キャッシュたたはメモリからのロヌドずアンロヌドが発生し、この操䜜は実際の蚈算よりもはるかにコストがかかるこずが刀明する堎合がありたす。この効果は、ビッグデヌタビッグデヌタず呌ばれるものではなく、FullHD画像4Kは蚀うたでもなくなどを凊理するずきに特に顕著です。



この堎合、IPP内の耇数の機胜を1぀に結合するずいう決定は適切ではありたせん。その堎合、プリミティブブリックの代わりに、ゲヌム「Tetris」から掟手な詳现を取埗したす。これは、ナヌザヌアプリケヌションに挿入するのに問題があり、そのような可胜な関連付けの倚様性は、すべおの合理的な制限を超えたす。



その結果、IPPを介したC ++アドオンが実装され、パむプラむングラフを䜜成し、画像を现かく切り分けおから、各スレッドで1぀の操䜜ではなく、IPPパむプラむン党䜓を個別のタむルで実行する䞊列ルヌプを起動したした。もちろん、結局のずころ、結果はくっ぀いおいたした。最初にプロトタむプが䜜成され、それはたずもな加速を瀺したした。次に、DMIP遅延モヌド画像凊理ず呌ばれる蚭定が䜜成されたした。さらに、2011幎にクロノスで開催されたOpenVX暙準化委員䌚の最初の䌚議の1぀で、ハヌドりェア開発者の間でグラフが人気を博しおいるこずから、DMIPが蚀及され、委員䌚によっお枩かくサポヌトされたした。そのため、OpenVX暙準はグラフテクノロゞに基づいおいるこずが刀明したした。さたざたな理由から、OpenVX暙準は十分な人気を埗おいたせんが、珟圚、グラフパラダむムはIntel GraphAPIチヌムによっおサポヌトおよび開発されおいたす。たた、Graph APIはOpenCV、OpenVINO、Movidius SDKに含たれおいるため、IPPテクノロゞヌがコンピュヌタヌビゞョン暙準ず最新のAPIに盎接圱響したす。



IPP-䟿利なリンク



繰り返しになりたすが、この蚘事からの最も重芁なリンクは次のずおりです。

  • IntelIPPペヌゞ
  • Intel Parallel Studio XE
  • Intel System Studio
  • IPPCrypto-オヌプン゜ヌスプロゞェクト
  • IPPレガシヌラむブラリ




IntelIPPファヌストパヌ゜ン



さたざたな幎にIntelPerformancePrimitivesの運呜で重芁な圹割を果たしおきた人々に発蚀暩を䞎えたしょう。



りラゞミヌル・ダドニック、2009〜 2011幎のIntelIPPチヌムの責任者

-, IPP – , . , - , .. IPP - , - .

, , , , SIMD . , , MKL, IPP .


, OpenCV, IPPCV 2006-2008

IPP , , , . FFT. — ! , IPP , , .

IPP , , OCaml, Spiral, FFT — IPP. IPP. , , , , 13-14 , .



, IPP QA 2011-2015 , IPP 2017-2020

IPP QA 2000. , , .

17 IPP. Intel . waterfall & development agile & DevOps. . , .

– . , , . , , , . , , , .


, Image & Signal Processing Intel IPP, 2020 –

IPP SW 2011 , . , . IPP , , , Resize, WarpAffine, WarpPerspective . . C 2017 , , , 2018 IPP Crypto GitHub. 2018 , 2020 IPP, Image & Signal Processing . , , IPP Intel, .



All Articles