回答編集履歴

2

蛇足です…

2023/10/30 14:30

投稿

ujimushi_sradjp
ujimushi_sradjp

スコア2136

test CHANGED
@@ -24,3 +24,19 @@
24
24
 
25
25
  `.=`だと最初に確保したメモリをそのまま使い続けるので,z1,z2,z3が同じバッファを利用している場合,
26
26
  それぞれの値の更新時に,z1,z2,z3の値が変化することになります。
27
+
28
+ ## 蛇足
29
+
30
+ この後に書く事は余計なお世話なのですが,外部コンストラクタを使って
31
+
32
+ ```julia
33
+ BufParams(r::Int, c::Int) = BufParams(
34
+ CUDA.zeros(r, c), CUDA.zeros(r, c), CUDA.zeros(r, c)
35
+ )
36
+ ```
37
+ のように定義しておくと,
38
+
39
+ ```julia
40
+ p_buf = BufParams(1000, 10)
41
+ ```
42
+ のような形で利用できて便利かもしれません。

1

説明文の表現を修正しました

2023/10/30 14:02

投稿

ujimushi_sradjp
ujimushi_sradjp

スコア2136

test CHANGED
@@ -19,6 +19,8 @@
19
19
  ```
20
20
  にすると改善するのではないでしょうか?
21
21
 
22
- `=`なら,その度に新規でメモリが割り合てられるので,`.=`だと最初に確保した
22
+ `=`なら,その度に新規でメモリが割り合てられるので最初z1,z2,z3が同じバッファでも
23
- メモリをそのまま使い続けるのでメモリ節約とうのは事実だ思います。
23
+ 代入時にそれぞれ別のメモリとなるので問題が露見しなになります。
24
24
 
25
+ `.=`だと最初に確保したメモリをそのまま使い続けるので,z1,z2,z3が同じバッファを利用している場合,
26
+ それぞれの値の更新時に,z1,z2,z3の値が変化することになります。