その他、ご購入前のご相談、あるいは技術的なご質問等がある場合は、お気軽にソフテックまでご連絡下さい。別のページにてご案内しております。C11/C++11コンパイラの言語でPGIアクセラレータ機能をサポートしています。コンパイラ上でサポートします。言う名前でエイリアスされており、各コマンド名で使用できます。32ビットあるいは64ビット環境のプラットフォームをサポートしました。環境がリリースされた後に、サポートしました。以降においてサポートされました。GPUアクセラレータをサポートしています。その他の(他社の)アクセラレータへの適用に関しても、そのソフトウェア環境整備が整えば、サポートを検討しています。ドライバのみご自身で実装しておいて下さい)。現在、CUDAソフトウェアは、NVIDIA社のサイトからダウンロードできます。環境を構築後、PGIコンパイラをインストールします。TIPSページにて説明しておりますので、ご参考にして下さい。(Linux64ビットの場合)配下に作成します。COMPUTECAP=11;"を記述します。以下のように設定する必要があります。正式リリース後は、上記の'sitenvrc'ファイルを設定する必要がなくなりました。NIVIDIA社の許可により、必要となるCUDAのライブラリは、PGIのインストール時に実装されます。仕様のほとんどをサポートしています。フルな精度を有する結果を提供しない場合があります。これは、ハードウェア自体の制約であり、コンパイラによって対策を講じることができない問題です。ハードウェアの進化により、こうした問題は解決されるものと思われます。準拠しましたので、サポートします。PGIアクセラレータコンパイラは倍精度をサポートしますか?コンパイラは倍精度をサポートします。以前のGPUのアクセラレータ・ハードウェアは倍精度をサポートしていますが、その性能は単精度に比べて極端に悪いことを注意すべきです。ハードウェア自体に倍精度演算機構が十分に実装されていないための問題です。GPUがリリースされた以降は、十分な倍精度対応演算器が実装されましたので、この問題は解決されています。他の言語で記述したカーネル関数をコールできるように、その機能設計を行っております。この機能が利用できるようになった時点で、アナウンスする予定です。アクセラレータプログラミングを混在できますか?これは、可能です。PGIアクセラレータコード間の「デバイスデータ」を共用する方法を有していません。この機能は重要なものと認識していますので、今後のリリースにてその解決を図るように現在取り組んでいます。使用することができます。GPUにアタッチされ、その「カーネル」をGPU上で動作するようにします。自動的に制御する機能は含まれておりません。これは、今後のサポート機能の候補の一つとされております。GPUを使用することができます。使用MPI同じノード上で並列に各MPIランクが実行出来るMPIプログラムにおいては、acc_device_num手続きを使用して異なるGPUを選択するためにMPIランクの値を使用できます。OpenMPOpenMPスレッド並列プログラムにおいては、omp_num_thread_num関数を使用して、各スレッド用に異なるGPUを選択することができます。OpenMP並列領域において、各スレッドがイテレーションの異なるサブセットを計算するようなループを持つアクセラレータ・リージョンを含むことができます。このアクセラレータ・プログラミング・モデルとそのディレクティブに関する経験を踏まえ、今後、標準コミッテへ開示してしております。拡張するためのサブコミッティを設けて、その策定活動をしています。このサブコミッティの中で、主要な活動を行っております。仕様を定義し公開しました。最新のオープンな並列プログラミング規格として科学技術系の多数のプログラマーを対象とした新しい規格です。ベースとなっております。バージョンに、アクセラレータ機能を追加することを正式に表明しました。GPUを有していないマシン上で、プログラムを実行出来ますか?ホスト側のアクセラレータ(GPU)の有無に係わらず、実行可能なモジュールを生成することができます。ファイルに、GPU用コードを含めた複数のCPUターゲット用の最適化コードを作成することができます。した実行モジュールは、実行時に、GPUの存在の有無を判断して、存在した場合、ホストとGPUの両方を使用したコードが実行され、もし、GPUが存在していない場合は、ホスト用のコードのみで実行されます。コードは、従来のグラフィックスアプリケーションやゲームで使用されているものと同じ技術を使用しています。GPUモデル用に、GPUベンダーが提供したドライバーにて、実行時に動的に翻訳、再最適化される可搬性のある中間フォーマットを使用しています。従って、今後、GPUカードをアップグレードしたり、あるいは、GPUの異なるモデルを持ったマシン上で自分のプログラムを使用すると言った状況であっても、自身の作成したプログラムを引き続き動作させることができます。GPUコード内で、関数やサブプログラムの呼び出し(コール)ができますか?現在、GPUは、関数コールをサポートしていません。従って、一般的にはできません。関数をプログラム内でインライン展開する必要があります。仕様書を定義し公開しました。標準規格は、最新のオープンな並列プログラミング規格として科学技術系の多数のプログラマを対象とした新しい規格です。ようなディレクティブ・ベース(ソース上に指示行を挿入する形態)のプログラミング手法を採用しており、基本ソース・コードを修正する場合と比べてCPUとGPUを使用したアプリケーションのアクセラレーションが容易に可能となります。使用し、単純な指針(=「ディレクティブ」)をコンパイラに指示し、基本ソース・コード自体を修正する必要なしに、コード内のアクセラレーション対象領域を特定することができます。プログラマが並列化対象部分をコンパイラに明らかにすることで、そのディレクティブに従って、コンパイラは並列演算をアクセラレータ上の演算器にマッピングすると言った詳細な作業を行うことができます。ディレクティブは、マルチプラットフォーム、マルチベンダー互換のための共通基盤となるため、アクセラレーション・コンピューティングへの容易な移行が可能となります。ベースとなっております。メンバーとなっております。拡張としての共通仕様とするべく、活動を行います。こちらの正式サイトをご覧下さい。プログラミング規格は、なぜ必要とされたのでしょうか?高いレベルでのプログラミング環境は、生産性を高めプログラムを作成する上で、最も重要なものとされています。等の言語拡張は、2005年頃のメニーコアに対するプログラミング技術と比較したら、大きな変革をもたらした言語拡張ですが、しかし、これらは未だに低レベルの言語体系であることには変わりはありません。開発者にとって、GPU用のプログラミングを行うには敷居が高いものとなっています。した低レベルの開発言語のメリットは、GPU等のデバイスに細かな制御を行える点、あるいは、デバイスの性能を直接享受できるようにプログラミングが可能となる点です。ベスト・パフォーマンスを得るには、「特定」のデバイスに対するプログラムのアルゴリズム等の最適化が個々に必要となります。使ってプログラムを書き換えなければなりません。高いレベルでのプログラミングは、こうしたプログラマが直接行わなければならない部分・役割をコンパイラとランタイムが代替するものとなります。従って、現行のソースプログラムを容易にポーティングすることが可能です。標準規格は、共有メモリ構成のマルチプロセッサ、マルチコアシステム向けのハイレベルのプログラミングモデルとして、サポートされてきております。ようなハイレベルのアプローチ(手法)を好んで使用しています。ソフトウェアベンダーは、並列プログラムのポータビリティを享受することができました。GPUプログラミングにとって、あるいは、一般的な「アクセラレータ」プログラミングにとって、ユーザ・コミュニティは確実に、ハイレベルでプログラミングできる標準手法を必要としています。その中には、ホストとGPU/アクセラレータとの間のデータ移動に関して最適に行うためのポータビリティのあるメカニズムの提供や、特定のGPU等のデバイスに対するコード最適化等の機能も含みます。標準規格の策定に貢献しました。GPUを使用する多くのユーザによって支持され使用されてきております。(アクセラレータ)デバイスのタイプを問わず、可搬性を有するプログラミングモデルを明示的かつ慎重に設計しました。した考えの上で、例えば、ディレクティブの接頭語に"PGI"と言う名前を置くと言ったようなことも避けました。行うための基準になるように考え、計画されました。アクセラレータとして使用する製品を提供しています。単一のベンダーによってサポートされるよりも、コンパイラベンダー間で標準化されたプログラミングモデルを適用したいと考えているのも事実です。そのモデルとなります。多くのユーザがコンパイラベンダー間での競争を導き出し、そして、それが多くの利便性を高めていくことを期待しています。OpenACCの標準化を推進しております。コンパイラとツール群のみが提供されております。使用して明示的にプログラミングすることができるものです。コンパイラに実装します。間のデータの移動と配置を明示的に制御できます。相互運用を可能にします。Fortranは、PGIアクセラレータコンパイラ製品の中で使用できます。そのコンパイラ機能の構成の概略は以下の通りです。データパラレルのプログラミングが可能な方法で、高レベルで開発できる環境を提供するものです。データ並列コードを生成するものです。「PGIアクセラレータモデル」は、以下のことが可能です。アクセラレータ側へオフロードすることができる。プラグマは、一般にはコメント行として扱うことができるため、プログラムは言語標準準拠したものとして可搬性がある。データ並列化作業が可能である。コンパイラで使用することができる。コンパイラに実装したものです。API)を使用して、低レベルの次元で明示的なプログラミングを行うことにより、GPUプログラミングに必要な全ての観点について直接に制御できるものです。並列のプログラミングに長けたエキスパート向きのプログラミングモデルと言えます。このモデルの場合、以下のようなプログラミングが必要となります。計算を行いたい関数やサブルーチン内で、ホスト側コード部分とGPU計算カーネル・コード部分をソース上で分離する。共有メモリのアロケーションを行う。側のデバイスメモリへ様々な型のデータの移動を行う。上の実行のために、その計算「カーネル」を起動する。スレッド・グループ内でのスレッドの同期を行う。実行の同期をとること等の処理。用いてプログラミングすることとなります。用いて、明示的なコーディングに落とし込むことが可能となります。10.0リリース)製品の中に同梱され、正式にリリースされました。株式会社ソフテックページの先頭へ本ページに記述された各製品名は、各社の商標または登録商標です。