Loading [MathJax]/extensions/tex2jax.js

2023年9月22日金曜日

巨大な数字の計算

巨大な数字の計算に興味があったので、ググってみたらこちらに

たどり着きました。

あとでじっくり読んでみよ。


https://qiita.com/square1001/items/1aa12e04934b6e749962

2023年9月10日日曜日

CUDA 1

やりたいこと
CUDAでプログラミングして、高速な処理ができたらいいなと思い、CUDAに入門することにしました。
そのメモになります。
環境
OS : Windows11 22H2
IDE : Visual Studio 2019
GPU : GTX1660 super
CUDA : cuda_12.2.2_537.13_windows
0.参考資料
こちらのサイトを参考にCUDAのトライアルをすすめました。
https://developer.nvidia.com/how-to-cuda-c-cpp
CUDA Toolkitのページ → Training → C/C++ using CUDA C をたどりました。
基本的にはここの動画を参考に進めていくことにしました。
1.ダウンロード
こちらからダウンロードしました。
https://developer.nvidia.com/cuda-toolkit
2.サンプルを起動するまで
ここからサンプルをダウンロードしました。
トライアルの動画だと、toolkitをダウンロードすると勝手にサンプルも入ることになってますが、
どこかのバージョンからtoolkitには同梱されなくなったそうなので、こちらからダウンロードする必要がありました。
https://github.com/nvidia/cuda-samples



ダウンロードしたファイルの中のmatrixMulというものを実行する。
参考にした動画でmatrixMulを実行していたので、そうしました。



実行結果


succesと表示され、成功しました。
ひきつづき、2個目の動画もみてみます。

2023年9月3日日曜日

C# Parallel 入門 2

やりたいこと
以前の記事がこちらになります。
C# Parallel 入門

前回の方法では、for文の中の計算結果を足し合わせるということをしていたのですが、
もう少し複雑なことがしたくなりました。

1からNまで順番に数字を調べていって、それが目当ての数字だったら、
Listに登録することが目的です。

コード
  1. // 並列化  
  2. object obj = new object();  
  3. Parallel.For<list<int64>>(1, endNum, () => new List<int64>(), (Int64 num, ParallelLoopState state, List<int64> partial) =>  
  4. {  
  5.     // もとめたい数字がきたらListに登録する  
  6.     if (num == XXX)  
  7.     {  
  8.         partial.Add(num);  
  9.     }  
  10.   
  11.     return partial;  
  12. },  
  13.     partial =>  
  14.     {  
  15.   
  16.         foreach (var val in partial)  
  17.         {  
  18.             lock (obj) motometeruList.Add(val);  
  19.         }  
  20.     });  
  21.   
  22. </int64></int64></list<int64>  
コードの説明
結果
for文でループさせる回数や中身の計算にもよると思いますが、
自分がやりたかった計算では、「40000000」までループさせる計算で、
Parallel使う前は1500秒だったものが、Parallelに変更すると、
300秒ぐらいで終わるようになりました。