ティンクル☆ãã‚‹ã›ã„ã ー㙠Opening sin creditos
今日のソフトウェアの多くは、シーケンシャルな実行のために書かれており、プログラミング・モデルは、より高速のハードウェアとチップ上のコアの数を利用するために変更する必要があるとパネリストは述べています。プログラマーは、複数のコアやスレッドでタスクを分割して同時に実行できるようにコードを記述する必要があります。
コンピュータの高速化とプログラミング言語の向上に多くの努力を払っていると、コンピュータのDavid Pattersonカリフォルニア大学バークレー校の科学教授が、月曜日のスタンフォードでの会議で発表した。デスクトッププログラムを並行して書くことにはほとんど関心が払われていませんが、ゲームや音楽などのアプリケーションはそれを変える可能性があります。このようなプログラムのユーザーは、最高のリアルタイム性能を要求するので、プログラマーは、複数のスレッドやコアでタスクを分割するモデルを採用する必要があるかもしれません。例えば、新しい並列処理は、PC上で再生される音楽の品質そして、スマートフォン、Pattersonは言った。
カリフォルニア大学バークレー校には、アプリケーションの使用方法を理解しようとする並列コンピューティングラボがあり、コードの最適化に役立つ可能性がありますハンドヘルドデバイス用。 1つのプロジェクトは、ページのレンダリングや解析などの特定のタスクに基づいてコードを最適化することによって、デスクトップ品質のブラウズをハンドヘルドデバイスにもたらすことを目指しています。もう1つのプロジェクトは、健康情報のより迅速な検索のためのコードの最適化です。バークレーの研究者は、もともとPythonやRuby on Railsのようなスクリプト言語を使って書かれたコードの一部を新しい低レベルのCコードで置き換えることで並列性を持たせようとしています。パターソン氏は、音声認識アプリケーションで特定の音声パターンを分析するなど、特定のタスクに重点を置いていると、水曜日のインタビューで述べている。このコードは、マシンレベルの並列アプリケーションを書くために設計されたOpenMPまたはMPIアプリケーションプログラミングインターフェイスを使用して書かれています。専門家は、この高度に専門化された並列コードを書く必要があります。パターソン氏はインタビューで、PythonとRuby on Railsを使用してアプリケーション開発を容易にするが、並列性に重点を置かないプログラマーの開発時間を短縮すると述べている。ラボでは、低レベルのマシンコードで特定のタスクの実行が20倍にジャンプすることが示されています。
並列性の概念は新しいものではなく、主に高性能コンピューティングの分野でした。プログラマはソフトウェアツールの欠如と絶え間なく変化するハードウェア環境で困難な課題に直面していました。 "スレッドは正しく同期しなければなりません"と、電気工学の教授であるChristos Kozyrakisは述べています。パネルディスカッションの前のプレゼンテーションで、スタンフォード大学でコンピュータサイエンスを学びました。コードは、より多くのコアが利用可能になると予想通りに動作し、スケーラブルな形で書かれている必要があります。
コンパイラもよりスマートになり、出力を正しい順序で受信できるようにスレッドを分割するのに十分な知覚が必要です。 。特定の計算が特定の順序で実行されないと、コードへの並列処理を作成しようとすると、ソフトウェアのバグが発生する可能性があります。それは一般に競合状態と呼ばれる問題です。パネリストは、コーダーは、より洗練されたレベルの並列性を達成するために複数のプログラミングツールを使用する方法を学ぶ必要があるかもしれない、とパネリストは述べています。
Patterson氏は、「メモリとネットワークの待ち時間がデータスループットのボトルネックを招き、並列タスク実行によるパフォーマンスが損なわれる可能性がある」と述べた。
今日利用可能な多くの並列化ツールは、CPUおよびグラフィックス処理ユニットの並列処理機能を利用してシステム性能を向上させるために設計されています。 Apple、Intel、Nvidia、Advanced Micro Devicesは、Appleの次期Mac OS X 10.6オペレーティングシステム(Snow Leopardとも呼ばれる)でサポートされる並列プログラミング環境であるOpenCLを宣伝する企業の1つです。 OpenCLは、独自のDirectX並列プログラミングツールを推進しているMicrosoftと、CUDAフレームワークを提供するNvidiaと競合している。
OpenCLには、ハードウェア間のカーネルの配布を管理するAPI(アプリケーションプログラミングインタフェース)プロセッサコアやその他のリソースとして使用できます。 OpenCLは、システム内の複数のCPUおよびグラフィックス処理ユニットにピクセル処理を分散させることで、Mac OSのビデオデコードを高速化するのに役立つ可能性があります。
既存のツールはすべて、さまざまなソフトウェア環境に対応し、さまざまなリソースを活用します。たとえば、OpenCLはGPU上でのタスクの実行に向けて設計されています。 DirectXのような独自のモデルは、異機種混在コンピューティング環境全体に展開するのが難しいですが、OpenCLのようないくつかのモデルはGPUに依存する特定の環境にしか適応しません。パターソンは言った。 Ruby on Railsのような一般的に使用されている開発ツールを使ってプログラミングモデルを改善しようとするのと同じように、他のものを試してみる必要があると彼は述べている[
]。パネリストは、現在、大学は並列化を可能にするために複数のプログラミングツールを扱う新たなアプローチをとっていると述べた。 Kozyrakis氏は、スタンフォード大学は、2012年までに「大衆向けの並列アプリケーション開発を実用化する」ことを目指す研究所を設立したと述べているIntel、AMD、IBM、Sun、Hewlett-Packard、Nvidiaなどの企業と協力しています。開発者のための即時タスクテストは、現行のコードで実行するために既存のレガシーコードを並列に変換しようとする可能性があります。前記。いくつかの企業が自動並列化機能を提供しているが、元来は逐次実行のために書かれたレガシーコードを書き直してコンパイルすることは大きな課題になるだろう」
「これらの分野にはお金がある」と、