LoginSignup
2
0

More than 3 years have passed since last update.

日本語プログラミング言語「プロデル」でマルチスレッドをやる

Last updated at Posted at 2019-12-10

はじめに

プロデルにはマルチスレッドの機能があります。試します。

手法

足し算を1000万回×3回やらせます。シングルスレッドの場合と,マルチスレッドの場合で,実行時間の差を見ます。実行時間は,プログラムの最初と最後に起動時間を取得して計算します。それぞれ10回ずつ試し,平均を求めます。

実験

まずは,シングルスレッドで実行しました。

スタートは,起動時間。
えは,1。
かは,え。
10000000回繰り返す
    かは,か+1。
繰り返し終わり
きは,え。
10000000回繰り返す
    きは,き+1。
繰り返し終わり
くは,え。
10000000回繰り返す
    くは,く+1。
繰り返し終わり
起動時間-スタートを報告。

次に,マルチスレッドで実行しました。

スタートは,起動時間。
あというスレッドを作る。
いというスレッドを作る。
うというスレッドを作る。
えは,1。
あで『かは,え。
10000000回繰り返す
    かは,か+1。
繰り返し終わり
』を実行する。
いで『きは,え。
10000000回繰り返す
    きは,き+1。
繰り返し終わり
』を実行する。
うで『くは,え。
10000000回繰り返す
    くは,く+1。
繰り返し終わり
』を実行する。
あを待機する。
いを待機する。
うを待機する。
起動時間-スタートを報告。

なお,コンパイル済みコンソールアプリでは,匿名関数が使えないので,プロデルデザイナ上で試しています。CPUは,Xeon E3-1505M v5 @ 2.80GHzです。

結果

値はミリ秒です。

シングルスレッド マルチスレッド
1 11875 5234
2 11469 5266
3 11734 5906
4 13313 5219
5 11609 6000
6 11593 5188
7 11547 5985
8 13266 5234
9 12907 5828
10 11844 5297

p値=$1.766 \times 10^{-12}$(Welchのt検定)

感想

行列の計算に時間がかかってしかたがないのですが,CUDAの使い方が分からないので,せめてマルチスレッドで計算したいなと思いました。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0