メニーコアと格闘ブログ:PGI+CUDA?

出典: トータル・ディスクロージャ・サイト(事実をありのままに)

[PGIコンパイラインストール]

PGIコンパイラを使えば、CUDA用のプログラミングをするよりも楽に、GPUコードを出力してくれるらしい。しかもCでもFortranでもOKらしい。

http://www.bestsystems.co.jp/melmaga/M001040.html【第104号】GPUをサポートしたPGIコンパイラ!

http://www.bestsystems.co.jp/melmaga/M0011000.html【第110号】PGI+CUDA その2


早速、PGIコンパイラを試用してみます。

PGIコンパイラのダウンロードとインストールは、以下のURLに詳しいです。

http://www.softek.co.jp/SPG/trial.html


  • 製品ダウンロードには、PGIでのユーザ登録(アカウント取得)が必要です。
  • 試用ライセンスを申し込みます。


コンパイラの最新バージョンは9.0-3。リリース日付は、昨日でした。


インストールの際に聞かれる事柄は以下4つでした。

  • シングルシステムか、ネットワークインストールか
  • ACMLをインストールするかどうか ACMLはAMDプロセッサに特化したコードを出力するためのものらしい
  • インストールするディレクトリ
  • MPICH1をインストールするかどうか


[サンプルを実行]

下記URLを参考にサンプルを実行してみます。

Acceleration

http://www.pgroup.com/resources/accel.htm


The PGI Accelerator Programming Model on NVIDIA GPUs Part 1

http://www.pgroup.com/lit/articles/insider/v1n1a1.htm


“setting up”に記載されている事項、

Your installation will need to tell the PGI compilers where the CUDA

software is installed. To do that, you'll want to create or modify the

file "sitenvrc" in the /opt/pgi/linux86-64/9.0/bin directory to add the

lines

と、いうことらしいので、

/opt/pgi/linux86-64/9.0/bin/sitenvrcを作成し、以下入力します。

set NVDIR=/usr/local/cuda;

set NVOPEN64DIR=$NVDIR/open64/lib;

set CUDADIR=$NVDIR/bin;

set CUDALIB=$NVDIR/lib;


[イザ、サンプル実行]

The PGI Accelerator Programming Model on NVIDIA GPUs Part 1のFirst Programからソースコードをダウンロードし、そのまま実行を試みました。

http://www.pgroup.com/lit/samples/pgi_accelerator_examples.tar


ソースはC言語とFortranが用意されていて、本文にコンパイル方法も記載されています。


C用のコンパイル方法:pgcc -o c1.exe c1.c -ta=nvidia -Minfo

Fortran用コンパイル方法:pgfortran -o f1.exe f1.f90 -ta=nvidia -Minfo


結果は、コンパイルエラーが発生しました。

[user@localhost pgitest]$ pgcc -o c1.exe c1.c -ta=nvidia -Minfo
NOTE: your trial license will expire in 13 days, 8.26 hours.
/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/x86_64-redhat-linux/bits/c++config.h(1642): error: expected a "{"

/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/cpp_type_traits.h(74): error: expected a "{"

/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/cpp_type_traits.h(81): error: expected a "{"

/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/cpp_type_traits.h(299): error: name followed by "::" must be a class or namespace name

/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/cpp_type_traits.h(299): error: too many arguments for class template "<error>::__is_normal_iterator"

/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/cpp_type_traits.h(299): error: name followed by "::" must be a class or namespace name

/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/cpp_type_traits.h(299): error: too many arguments for class template "<error>::__is_normal_iterator"

/usr/lib/gcc/x86_64-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/cpp_type_traits.h(299): error: name followed by "::" must be a class or namespace name

.
.
.


ちなみに、“-ta=nvidia”オプションを外すと、コンパイルが通り、実行ファイルも正常に動作します。おそらく、逐次版のアプリケーションとして正常に動作していると思います。

現在、エラーの原因を調査中です。


ナン 2009年8月18日 (火) 16:52 (JST)


目次

この記事へのコメントをお寄せください

  • サイトへの書き込みに差し支えございましたら トータルディスクロージャーサイトサポート係へメールをお送りください
  • トータル・ディスクロージャ・サイトに投稿された文章と画像は、すべてその著作権がHPCシステムズ株式会社に帰属し、HPCシステムズ株式会社が著作権を所有することに同意してください。
  • あなたの文章が他人によって自由に編集、配布されることを望まない場合は、投稿を控えてください。
  • コメントを書き込む場合は名前にひらがなを織り交ぜてください。
  • あなたの投稿する文章と画像はあなた自身によって書かれたものであるか、パブリック・ドメインかそれに類する自由なリソースからの複製であることを約束してください。あなたが著作権を保持していない作品を許諾なしに投稿してはいけません!

<comments hideform="false" />


Comments

ナン said ...

設定がマズイのではないかとの疑いから、インストール手順を見直しています。

コンパイラのアーカイブを展開した場所に、“install_env”というスクリプトがあり、実行してみました。パスを通すための情報を作成してくれるようです。

Usage: install_env [install dir] [release #] [build #] [need_ssh]

  • install dir=/opt/pgi
  • release # =9.0
  • build # =3
  • need_ssh =0
  • mpi =/
  • mpich =/

usageには表示されませんが、実はスクリプト実行には引数が6つ必要です。mpiのインストール場所と、mpichのインストール場所です。今回の環境にはインストールしていないので、適当に指定すると、以下のような出力が、/opt/pgi/linux86-64/9.0-3に得られます。

#!/bin/sh
PGI=/opt/pgi
PATH=/opt/pgi/linux86-64/9.0-3/bin:$PATH
export PGI
export PATH

--ナン 2009年8月18日 (火) 09:33 (UTC)

ナン said ...

エラーの原因、どうやらライセンスの問題のようです。

http://www.softek.co.jp/SPG/Pgi/new_release.html

Version 9.0 の詳細

PGI アクセラレータ・コンパイラの使用に関する制約

という項目が、それに該当するようです。

また以下の記事にも、

“PGI 9.0 を購入すると, 無償のテクノロジー・プレビューという扱いで 2009 12/31 までは利用可能”

と、あることから、評価用ライセンスでは、使うことができないようです。残念!

幸い社内に、正規ライセンスがあるので、明日以降、この正規ライセンスで再度トライしたいと思います。

--ナン 2009年8月19日 (水) 08:59 (UTC)

noririty said ...

-ta=nvidia,cc10 とか -ta=nvidia,cc11 ではどうでしょう? リンクしたページによれば、default は 1.3 になるらしいですよ。

--noririty 2009年9月3日 (木) 01:07 (UTC)

ナン said ...

アドバイスありがとうございます。

ご教授いただいた内容を試した結果を掲載いたしますので、今しばらくお待ちください。

--ナン 2009年9月3日 (木) 02:32 (UTC)

個人用ツール