Flaport/FDTD
FDTDという電磁界シミュレーションでOpen Sourceのやつは、いつもOpenEMSを使っていますが、もっと早く計算できるのないかな?ってググっていたら、下記のものが、PyTorchを使ってCUDA(GPU)で動くということを知り。。やってみました。
PyTorchなくても動くので、Exampleをひとつ動かしてみると。。
https://github.com/flaport/fdtd/blob/master/examples/04-performance-profiling.ipynb
100×100×100のメッシュで、
8.9秒で。。計算できて、下記のような波の状態などが見れるようになります。
Numpyをバックエンドとして計算しています。Torchで行うこともできて、こういう選び方ができるみたいです。
しかし。。このtorch.cudaが選べなくて。。 困りました(笑)
PyTorchでGPU使うのにはまる。
昔、StableDiffusionを入れた時には、簡単に入ったんですが。。たまたまだったようですね(笑)
>>import torch >>torch.cuda.is_available() >>False
って出てきちゃうんですよね。。 いろいろググったり。。ChatGPTに聞いたり。。
>conda install pytorch torchvision torchaudio cudatoolkit=11.8.0 -c pytorch
ってあったので、何度も。。これと。。
>conda remove pytorch torchvision torchaudio
で環境を調べるのに。。
>python -m torch.utils.collect_env
のコマンドを行ったり来たり。。
PyTorchのローカルインストールを見ると。。
https://pytorch.org/get-started/locally/
現在CUDAは12.5ですが。。11.8が良いようで。。 上記のコマンドを入れれば動くようです。
で。。
から11.8のツールキットをインストール。 そしてCUDNNは ここからダウンロードして、古いバージョンもいれます。そして、Windowsの環境変数 PathにCuda toolkitとCuDNNのbinとlibを追加します。
これしかし。。CUDAがまた12.5に勝手に更新しないようにしておかないと駄目ですね(笑)
それから。。Pytorchをインストールしなおす と。。
>conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
うまく行きました。
さっきのプログラムを動かすと。。
さっきが、8.9秒だから、0.5秒だと、約18倍くらい早くなっていますね。。
それで、少し大きので試そうと思ったら。。
OutOfMemoryError: CUDA out of memory. Tried to allocate 22.35 GiB. GPU
どうもGPUのメモリーが足りないみたいです(笑) がっくし。。
でもGPUのメモリーが22.35GBあれば。。100010001000のメッシュで動くことわかったので、そういう大きなGPUがついていれば。。。計算はできることがわかりました。
KiCADなどのプリントのパターンは。。
モデル化がこういうやつでは、大変なんですが。。この方が作ってくれているPCB_extensionsで、KiCADのSVG出力を読み込むことができました。
https://github.com/0xDBFB7/fdtd_PCB_extensions/tree/master/fdtd_PCB_extensions/fdtd_PCB_extensions
一応、GPUでFDTDで動いたので。。まぁ、また何かするときの参考に。。
コメントを残していただけるとありがたいです