ラベル GPGPU の投稿を表示しています。 すべての投稿を表示
ラベル GPGPU の投稿を表示しています。 すべての投稿を表示

2026年6月5日金曜日

SPHのGPU化

SPH(粒子法)シミュレーションコードの GPU 化に取り掛かりました。

まずは、土のみ3Dコードから。テストには 斜面崩壊(粒子数77万弱、200,00step)を使用しました。実行環境は Dtransu と同じです。
GPU: NVIDIA RTX 4000 Ada(20GB、CC 8.9)
CPU: AMD EPYC 9754(128 コア)

いくつかの試行を得て、こちらは GPU 版が CPU 版に勝てない結果となりました。
OpenMP  32 / 64 / 128 スレッド 94.4 / 60.3 / 48.0s 
OpenACC 75〜84s 
CUDA Fortran + Thrust(set_box のみ)  41.7〜55.3s  

計算コードの変数を倍精度で計算していたため、FP64律速かつメモリ帯域律速となり、搭載GPU にとって二重に不利、CPU に有利でした。特に処理時間の約45%を占める make_interaction とkernel_correction は、GPU 側で改善できませんでした。粒子のセル順ソートは GPU では悪化、コアレス化は微妙でした。
  
セル分割処理だけはGPUで効果がありました。この処理は整数演算 が主体で、FP64律速にも帯域律速にも縛られなかったのでしょう。
  • セル分割(set_box):空間を格子(セル)に区切り、「どの粒子がどのセルにいるか」の対応表(名簿)を作る処理、近傍探索の前準備です。GPU 化では内部のソートに Thrust の sort_by_key (CUB の基数ソート) を使い、インデックス(cell_id と粒子番号)だけを並べ替えて名簿を作ります(粒子データ本体は動かさない)。これが GPU で効いた処理です。
  • 粒子のセル順ソート(reorder_particles):粒子データ本体そのものを、セルの順番に並べ替えておく「席替え」(50 step 毎)。近くにある粒子をメモリ上でも近くに置き、キャッシュ効率を上げる狙い。set_box内のソートと違い、倍精度の粒子配列を丸ごと移動するため、GPU では悪化しました (CPU ではキャッシュ効果で改善)。
  • メモリアクセスのコアレス化(pair_layout):粒子ペアのデータを GPU が読みやすい並び順に変える。GPU は隣り合うスレッドが連続したメモリを読むと速い(=コアレス化)ので、その並びに合わせる。
セル分割+ソート+コアレス化は DualSPHysics の講義で教えていただいたのを覚えていました。当時はメモリ上の最適配置程度で大きな影響があるとは思わず、ちょっとしたテクニック程度の認識でした。ほかにも、DualSPHysicsでは dx/dw など過去の値に依存しない変数は FP32、累積する変数は FP64 でドリフトを避ける工夫がなされています。

土のみコードは両者を倍精度で計算しており、一部を単精度にすると過去の結果(降伏、流体化の判定)の完全再現が困難。単精度化は周囲の応力均衡を変化させ、隣接粒子の降伏タイミングを次々とずらしていく連鎖を引き起こします。これは避けたいので、今回は速度を犠牲にして見送り。 

今回はここまで。次は、残したFP32化に手を付けるか、良いGPUに入れ替えるか、でしょうか。A100 / H100 クラスの GPU であれば、CPUを超えるかもしれません。

2026年6月1日月曜日

Dtransu のGPU化 その3

テスト環境:CPUが高性能、GPUは中(FP64は低)性能でアンバランス。
GPU: NVIDIA RTX 4000 Ada(20GB、CC 8.9)
CPU: AMD EPYC 9754(128 コア)

1. 密度流 (v2 sample3.dtr, KAN3=2 密度連成) 

流れ:GPU + 粒子追跡:OpenMP  のハイブリッドとしました。
流れ系 (setelm ~48% + solpcg ~28%の self-time) が構造的に並列で GPU 理想形。ここを GPU カーネル化して大幅短縮です。

粒子追跡 MOVE1 連鎖 (~20%) はバケット探索の IF/GOTO  分岐が多く、GPU だと並列効率が落ちました。これは OpenMP スレッドに流す形が BESTでした。

2. 表面流+移流分散 

 一番速かったのは ompacc で、密度流と同じ戦略(流れ:GPU + 粒子:OMP)。全構成中で最大のを記録しました。
surface_flow.f90 (D8 地表水ルーティング) の self-time が ~2.3% しかないため、にここは GPU 化不要、host 常駐で問題なし。残りは密度流と同じハイブリッドという構成でした。


当初、なぜ FP64 が弱い GPU でも速くなったのか不思議でした。AIに聞くと、「典型的な arithmetic intensity(バイトあたりFLOP数)が低い 処理だったから」+「16tだから」とのこと。この辺りをAIに頼るようではまだまだかな。

  • 1要素読むごとの計算量はわずか。演算器はメモリ待ちで遊んでいるので足を引っ張らない。
  • GPUは数千〜数万スレッドを同時に走らせ、メモリレイテンシをスレッド切替で隠蔽。結果、自分の~360 GB/sをほぼ飽和できた。
  • CPU 側の並列効率が悪く、460 GB/sを使い切れず~16t相当で頭打ち。

純 GPU (acc)  が負けるのは、ハードの性能差が大きなこともありますが、分岐の多い粒子追跡が GPU の thread divergence に弱いのも一因。ここをテコ入れするとGPUの方が速くなるかもしれません。なお、途中でSPH の Box Search 手法を取り入れてみましたが、劇的な効果は見られませんでした。
このような計算をしていると、FP64に強いGPUだとどうなるのか、試してみたくなります。

改変コードの公開は配布元が許可されていません。時代の流れでコーディング問題はほぼ解決したので、いずれ配布元でもGPU対応版やMPI版、表流水連携版を公開されると思います。比較は出るまで待ちましょう。

2026年5月22日金曜日

Dtransu のGPU化 その2

Dtransu Ver.2 が手元にあったので、こちらもGPU化に着手。

テストは付属の密度流です。
もともと、OMP対応済みだったので、GPU化のみでした。が、何度かテストするうちに、再現性に劣ることがわかりました。

128tまで実施しましたが、16tで頭打ち。

v1 でも密度流をかけると、同じように再現性を確保できませんでした。テストするモノです。
密度流で PCG の流れが変わるのと、粒子追跡の OMP 化部分が引っかかっているようでした。最終的には v1 で固定しましたが、OMP+GPU の速度は v2 よりやや低下しました。
最初は v2 GPU+OMP でパラスタし、最後に v1 で提出、でしょうか。


2026年5月18日月曜日

Dtransu のGPU化

Dtransu のGPU化を実施。

AIさんがプロファイルをとってくれるので、非常に効率的でした。

RTX4000を使っていたのでFP64性能はイマイチ。それでも、2.5倍速くなりました。次は計算用途も考慮して選択しましょう。

ずっと優先度低で眠らせていた課題。今年の頭に外した途端、解決しました。残りは不連続体+連続体ですが、SPHのGPU化が先ですね。

優先度中:機械学習のスキル増強
優先度低:流体+個体(不連続体+連続体)+振動
優先度低:Dtransu の MPI/GPU 対応
優先度低:地表流+地下水+移流拡散


2025年6月4日水曜日

SPH on GPU

DualSPHysics が v5.4 になって数カ月が経過しました。

このVerでは Variable resolution model が実装されています。これはありがたい(と思いながら理屈を読んでいません)。
取り急ぎ解きたい問題がないので、まだ触っていません。が、定期的に新しく発表された文献の内容が取り入れられ保守されているのは、良いコード、チームだと感じます。

そういえば手元の 弾塑性 SPH コードが OpenMP 止まりだったので、そろそろ GPU を使おうと思い立ちました。FP64を潤沢に使える環境ではないので、単精度でも問題ない箇所のみを OpenACC で変更します。Cell-linked list  の作成なら単精度で問題ありません。ドメインが大きくなければ粒子同士の距離計算も問題にならないそうですが、これは完全に理解していないのでひとまず対象外としました。で、そこをOpenACC化。RTX8000ですので、CC75でコンパイル。

動きました。約3倍の速度。まだ効率が悪いのでしょう。が、10日の計算が3,4日で終わるなら上等です。
ひとまず様子を見ましょう。


2024年3月3日日曜日

Nvidia HPC SDK on WSL2

WSL2 の Ubuntu 22.04 に Nvidia HPC SDKを入れる方法。
How to install Nvidia HPC SDK on Windows using Wsl (Ubuntu 22.04) | by Aung Khant Thaw | Medium

NVIDIA のサイトが示すインストール方法(sudo apt install)の後に、pathを2つ通す必要がありました。

.barshrc に以下を追記すればOK。

export PATH="$PATH:/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/compilers/bin/"
export LD_LIBRARY_PATH="/usr/lib/wsl/lib/"


2022年11月6日日曜日

PINN

先日、機械学習を利用した物理シミュレーションの話を伺いました。

近年多い話題なのですが、こちらは一味違いました。
PINN: Physics-Informed Neural Network と呼ばれているそうです。損失関数に支配方程式を組み込み、残差を0に近づけるという手法です。なので、一般的な機械学習のように学習データを大量に準備する必要がありません。
理解すると「そんな単純な話」と思ってしまいますが、まったく思いつきませんでした。凡人には思いつけない、素晴らしい発想ですね。

NVIDIAさんは2年前にソルバーを公開されています。SimNet と呼ばれています。今日、このUser Guide の1~3章までを読み、4章以降をざっと眺めました。理論部分を完全には理解できなかったのですが、使う部分に限っては難しい内容ではありません。むしろ、書かれていない部分(STL等形状の取り込み、計算点の作成、評価)の実装が想像できませんでした。こういう難しそうなところをサラッと流すのは、さすがNVIDIAさん。プロですね。

誰でも動かせるように作ってもらっているのはありがたいのですが、いきなりこれを使いだすと身につかないでしょう。何かしら簡単なネットワークを作って計算してみることから始めてみるべきでしょう。

メッシュレス、物理法則の取り込み、3次元への対応、いずれも有望です。これまでの数値解析手法に並ぶことができるのか、楽しみです。


2022年7月21日木曜日

GPUと単精度

プロとお話をしていて、GPUの話題になりました。

プロ曰く、陽解法は単精度でもOKとのこと。

調べてみると、ありました。

GPUを用いた粒子法計算の高速化と大規模化
https://www.jstage.jst.go.jp/article/conf/21/0/21_95/_article/-char/ja/

倍精度と単精度で波形が全く異なる経験をしていましたが、よく考えてみると微動でした。強震だと概ね同程度の挙動を示すのでしょうか?

頭においておきましょう。

2022年3月15日火曜日

gpu が動きません

TensorFlow で gpu が動きません!

以前、他の PC では動いていたコード。TF2ではなく、TF1のコードです。
DockerはTF1であっている。Driver の Ver が上がっているので、これか? Docker, TF, CUDA, Driver の Ver の組み合わせチェックか?と思いながら見直したのですが、おかしくない。

よく見ると、GPUの番号を指定するようにコードを作っていたのですが、それをすっかり忘れて存在しない番号を指定していました。おかしいのは自分。情けないですが、高確率である話でした。

時間をあけてコードを眺めてみると、いくつか修正したい点が出てきました。
まずは、SEED値の固定。
開発中にKerasを用いて再現可能な結果を得るには?
https://keras.io/ja/getting-started/faq/

keras から、tf.keras へ変更。
from keras.aaa import bbb  を
from tf.keras.aaa import bbb へ変更。

TF1 のコードを TF2 仕様へ。
これは、自動で TF2 に上げてくれるコードにかけてみましたが、ダメでした。早々に取りやめて TF1 の Docker を使用したのですが、いずれ2へ移行させたい。

confusion_matrix の追加。
以前は classification_report のみ表示していました。

コードを組む際には、最新版~なじんだ版くらいで組んでおき、時々メンテしないとすぐに使えなくなりそうです。私の頭の中もですが。

2020年11月17日火曜日

DO CONCURRENT with GPUs

Accelerating Fortran DO CONCURRENT with GPUs and the NVIDIA HPC SDK
https://developer.nvidia.com/blog/accelerating-fortran-do-concurrent-with-gpus-and-the-nvidia-hpc-sdk/

昨日のブログです。
OpenACC のデータ転送が面倒で困っていたところ、この記事を見かけました。

 All data movement between host memory and GPU device memory is performed implicitly and automatically under the control of CUDA Unified Memory.

これでACCと同程度のパフォーマンスが出たらラッキー。頻繁にメモリへのアクセスがあるので過剰な期待はしていないのですが、いくらか早くなれば嬉しい。早く試したい!

Docker はまだ 20.9 (SDK 単体も)。公開まであと1か月くらいでしょうか?

**************************************

20201217追記

先日、Docker イメージが公開されました。
早速試してみたところ、-stdpar=multicore では OpenMP と同じ結果、速度でした。
が、-stdpar=gpu では発散。うまく計算しません。
コンパイル情報を見てみると、gpu では DO CONCURRENT 内の DO LOOP も自動並列化で GPU に載せられていました。これかな?

2020年11月12日木曜日

NVIDIA HPC SDK

OpenACC を利用しようと考えていました。

ACC の実装は比較的手軽だそうですが、場合によっては CUDA に並ぶことがあるとのこと(以前、チャレンジしたときは失敗しました)。
私はプロではないので、C & CUDA によるゴリゴリチューニングはできません。で、OpenMP からの ACC で、あわよくば狙いです。

OpenACC を gcc がサポートしているようなので使おうかな?などと考えながら、いつもの PGI Community Edition をチェック。以前のVer.と変わらないなあ、と製品版の価格をチェック。すると、以下の表示。

PGI Professional 製品の販売は終了しました。(詳細)
( ゚Д゚)?!
3月で販売終了していたとのこと。知りませんでした。
PGI Compilers&Tools は NVIDIA ブランドの NVIDIA HPC SDK ソフトウェアとして、新しく生まれ変わりました。
NVIDIA HPC SDK
https://developer.nvidia.com/hpc-sdk

ついに PGI の冠が取れたのね。
プロファイラーも以前のまま含まれています。しかも、GPU Cloud で配布されています。
https://ngc.nvidia.com/catalog/containers/nvidia:nvhpc

はい、素晴らしい。さすが NVIDIA。
もうこれは、Linux + Docker + HPC SDK 一択でしょう。

最新のアーキテクチャに対応したコンパイラーが無償で配布されるのも素晴らしいのですが、これ、Win版の Fortran コンパイラーとしても使われだすのではないでしょうか?

俄然、やる気になりました。使ってみましょう。

**************************************
20201113追記

使ってみました。
dockerイメージを走らせただけ(nvidia-docker を使わなくなっていました)。その上で何の問題もなくコンパイルできました。
計算中に GPU を使っています。kernels 構文を差し込んだだけですので、遅いのですが。
チューニングには時間を取られそうですが、制御は拍子抜けするくらい簡単でした。ありがたいですね。

2020年8月9日日曜日

DualSPHysics 5.0

  DualSPHysics が ver.5.0 に up しました。


今回の注目はコチラ↓

3.17 Rheology models and non-Newtonian formulations

https://github.com/DualSPHysics/DualSPHysics/wiki/3.-SPH-formulation#317-rheology-models-and-non-newtonian-formulations


以前の土砂流下モデルを引っ張り出してテスト中ですが、結果が実現象に近づきつつあることを確認できました。

まだ、式に対応するパラメータ(m, n)の設定をまだ見つけられないなど、計算に使っている式と設定値の対応を完全に把握できていません。

もう少し時間が必要です。


2019年12月29日日曜日

SVM

延長戦突入。

今日はサポートベクターマシン(support vector machine, SVM)。SVM はデータ数が少ない場合に用いられる手法で、昔よく利用されていました。が、今回は大量のデータを処理する必要があります。力技でこなそうと、scikit-Learn で組んでみました。が、やはり遅い。
SVCではなく、SVRだとどうか?と試しましたが、終わりません。

GPU版がないかな?と思い RAPIDS の中を覗いてみると、cuML の中に SVC がありました。が、fit()を使うと GTX1060 3GB のメモリに載りません(想定内)。scikit-Learn の cross validation に放り投げてみるも連携しません。

デモデータだと計算速度が40倍も違ったので、GPU は利用したいところです。
RTX8000 48GB なら動くでしょう。汎用性はなくなりますが、このマシンのみで動かすことを前提に、組んでみましょうか。

********************************
20200104追記
結局、他のライブラリとの連携の関係で、scikit-Learn を選択。年末から調整を続けていますが、最終モデルは40時間以上経過した今でもまだ完走しません。遅すぎ。特徴量を減らさないとダメということはわかりました。
技術評論社「Kaggleで勝つデータ分析の技術」では以下の記載がありました。SVM の使われない理由が明記された書き物を見たのは初めてです。
本章では、テーブルデータを扱う分析コンペにおいて使われるモデルとして以下を紹介します。・・・・・・ なお、教師あり学習のモデルとして良く紹介されるモデルのうち、サポートベクターマシンは精度や計算速度が見劣りするため、あまり使われることはありません。

********************************
20200109追記
O'REILLY「Pythonで始める機械学習」にも、以下のような記述がありました。

  • サンプル数が大きくなるとうまく機能しない(10万サンプルぐらいまではうまく機能する)
  • 10万サンプルぐらいになると、実行時間やメモリ使用量の面で難しくなる。
  • 注意深い前処理とパラメータ調整が必要。→決定木ベースが良く用いられる理由の一つ。
  • 検証が難しい。予測された理由を理解・説明することが困難。

 C、gamma の影響についてはp98に図解あり。

2019年9月1日日曜日

OpenACC 成功?

寝かせていたコードを、起こしてみました。これの続きです。
https://phreeqc.blogspot.com/2018/04/openacc.html

・PGI Community Edition 19.4

あっさり、計算が進みました(もう慣れました)。

結果を見ると、精度は許容範囲。
ただし、計算時間は全く短縮していません。GPUは使っていますが、計算に使ってくれているのでしょうか?

Intel のコンパイラーはよくできているとあらためて関心。
また寝かせましょう。

******************************************
20190925追記
プロと話をしていると、NVIDIA さんは数値解析分野で思ったほど力を発揮できなかったため、機械学習分野にシフトしていった、とのこと。そういえば、以前、GPGPU用にチューニングされたライブラリを使わないと速くならないとアドバイスを受けていました。
そうなのかなあ?

2018年12月26日水曜日

RAPIDS

第三段階は GPU での機械学習。

環境作成には、手軽な NVIDIA の RAPIDS を選択。Docker コンテナを稼働し、ノートブックを開くと、準備OK。
のはずが、そのままでは流れませんでした。Python 3.7 で作成していたコードでしたが、RAPIDS の イメージは 3.5。微調整が必要でした。

最初に試したのは KMeans と DBSCAN。教師なし学習です。コチラは GPU を使用し、すんなり流れました。OKです。

次は教師あり。XGBoot と KNN。
コチラはダメ。個人的に前者は難しく、後者は Faiss のエラーが取れませんでした。コンテナの example でも同じエラーが出ていましたので、早々にあきらめました。

第三段階は50点。
年内に片を付けたいので、次の段階に進みましょう。


2018年10月6日土曜日

Jupyter + PyTorch

Docker で Jupyter + PyTorch を動かそうと試みました。

まずは、Nvidia GPU Cloud の PyTorch を利用。
ローカル dir をコンテナ dir に割り当てる。Ver.も指定。
$ nvidia-docker run -it --rm -v /home/Data:/data nvcr.io/nvidia/pytorch:18.09-py3

PyTorch 18.09 は Nvidia driver Ver.390 に未対応。410beta 以上が必要と言われました。410 を入れるため、リポジトリ追加。

$ sudo add-apt-repository ppa:graphics-drivers/ppa
$ sudo apt update

$ sudo ubuntu-drivers autoinstall
$ nvidia-smi
入りません。

$ sudo apt install nvidia-410
だめ。
$ sudo apt list --upgradable
410 提供されていません。

無駄足でした。ppaリポジトリ削除
$ sudo add-apt-repository --remove ppa:graphics-drivers/ppa
$ sudo apt update
ついでに
$ sudo apt upgrade
$ sudo apt autoremove

今度は Nvidia に直接取りに行きました。
が、現段階で 410 は GeForce だと RTX 20系 しか対応していないとのこと。最初に調べたら良かった。
https://www.nvidia.com/drivers/results/138299#driverInfo-138299=1

NGC の Ver とマシーンイメージを確認。
https://docs.nvidia.com/ngc/ngc-alibaba-vmi-release-notes/index.html#volta-alibaba-18-98-1
で、18.05 を選択。
$ nvidia-docker run -it --rm -v /home/Data:/data nvcr.io/nvidia/pytorch:18.05-py3
うん、Jupiter 入ってません。

では、Docker Hub から。
jupyter/tensorflow-notebook を入れると GPU 使えません。
pytorch/pytorch を入れると Jupyter 入ってません。
tensorflow/tensorflow を入れると、GPU も Jupiter も使えますが、Python2。

結局、一番簡単なのは、Google Colaboratory でした。時間制限はありますが、環境を汚さない条件では BEST でしょう。ひとまずこれで行きましょう。


**********************************
20181007追記
杜世橋「現場で使える!PyTorch開発入門」では、イメージが紹介されていました。基本、個人でUPされているものは、その確認が面倒です。が、図書で紹介されているものであれば問題ないでしょう。


2018年9月17日月曜日

機械学習環境の更新(Ubuntu18.04)

Ubuntu を 18.04LTS に UP。

クリーンインストールを選択したのですが、ブートローダーの導入に失敗。
Win10 とは物理的に SSD を分けていましたので、Ubuntu の「インストールの種類」を選択する段階で「それ以外」を選択し、Ubuntu のSSD を指定すると、うまく入りました。

①まずは NVIDIA ドライバー。
$ sudo ubuntu-drivers autoinstall
$ sudo reboot
$ nvidia-smi
GPUの情報が出ました。OK。

②Win10 のために時計合わせ。
$ sudo timedatectl set-local-rtc true

③リモートデスクトップは Win側に VNC でなく、Ubuntu 側に XRDPを入れました。手順は googling で得られた通り。重いので、見直すかも。

④Docker、Nvidia Docker
共に18.04へ対応済みでした。手順は4月に入れた16の時と同様。
https://docs.docker.com/install/linux/docker-ce/ubuntu/#install-using-the-convenience-script
https://github.com/NVIDIA/nvidia-docker

⑤Deep Water
今回はDeepwater、XGBoost 共に GPU で動きました(1060の1枚刺し状態ですが)。
https://phreeqc.blogspot.com/2018/04/6-deep-water-deepwater.html

Deep Water は、H2O.ai の HP から消えています。開発は終了したのでしょうか?手元で問題が発生しなくなった時には開発終了になっていた、というのも残念ですね。今後を見据え、他のツールを準備しないといけません。プロがいたらインフラからソフトまで準備して頂けるのでしょうけど。

今日はここまで。
ひとまず、寄せ集めの機械学習環境を更新できました。


2018年5月19日土曜日

DualSPHysics 4.2

DualSPHysics が 5月の頭に Ver.UP しました。

あきらめていた foam simulation を確認しておきたかったのですが、これまで時間がありませんでした。ようやく時間ができたのでDL。

サンプル内に bat ファイルがあります。手早く確認するため、今回はプロンプトからそれを指定!

が、動きません。
CUDA ライブラリの Ver.が違うそうです。

VS の プロジュクトが同梱されていましたので、まず確認。
が、開けず。
CUDA 9.1 のファイルが見つからない、とのこと。

そういえば、PGI Community Edition 17.10 が CUDA 9.0 までしかサポートしていなかったので、9.0 しか入っていません(こういった時に、Docker の優秀さが再認されます)。
VS 上で 9.1 のファイル指定を 9.0 に書き換えてコンパイル。exe がどこにできたのか迷いましたが、bin フォルダの中の exe が更新されていました。配布元の配慮が伺えます。

今度は問題なく走りました。
01_DamBreak + GTX1060 で計算時間7分。短くなったような気がします。

ひとまず、手元の CUDA の Ver. にあわせてコンパイルすることで、環境は整いました。
次は foam simulation ですね。


2018年4月15日日曜日

OpenACC 失敗

暇になったので、Dtransu を GPU 上での計算に修正してみることに。

まずは、CPU コードを以下の2種でコンパイル。
・Intel VF 18.0
・PGI Community Edition 17.10

どちらも Win10 上ですが、例の通り微妙に異なる結果が得られます。浸透流はほぼ同じ結果ですが、濃度が異なります。
また、PGI は最後の element をうまく認識していませんね。既にこの時点でダメでしょうか?

次に、OpenACC。
コンパイルはできましたが、計算時に収束しません。GPU (GTX1060)は使用しています。こちらは私の能力不足でしょうか?

次に、OpenMP。4.0より、GPU を指定できるようになっていたのは知りませんでした。
IVF は GPU をサポートしていませんので、PGI のみでコンパイル。
が、計算中に GPU を 使用しません。CPU で正常に進んでいます。
ちなみに、Cygwin + gfortran でも試してみましたが、こちらは強制終了でした。

粘ってみましたが、全くダメ。プロがそばに欲しい。

着手時にプロからは「ライブラリ使わないと遅い」と言われていました。そのままでは NVIDIA の仕様で倍精度の計算は遅くなるとのこと。確かに、そのような仕様になっていますね。
ライブラリまで移行しようとし、サンプルを見ると挫けます。毎回。
プロにお願いすればできるのでしょうけど。

そもそも、CPU コードで正しく element を認識しないとダメですよね。
もう少し寝かせておきましょう。

2018年4月12日木曜日

8. NVIDIA GPU Cloud

NVIDIA GPU cloud (NGC)に登録。
https://www.nvidia.com/ja-jp/gpu-cloud/

Repositories
    nvidia
        caffe
        caffe2
        cntk
        cuda
        digits
        mxnet
        pytorch
        tensorflow
        tensorrt
        theano
        torch
    hpc
        candle
        gamess
        gromacs
        lammps
        lattice-microbes
        namd
        relion
        vmd
    nvidia-hpcvis
        index
        paraview-holodeck
        paraview-index
        paraview-optix
    partners
        chainer
        h2oai-driverless
        kinetica
        mapd
        paddlepaddle


一通りの環境は整っています。h2oai-driverless もありますね。
h2oai-driverless を試用してみましょう(Docker で簡単に環境を再現できる点はありがたいですね)。

続く。