質問: golangで,内部で生成された行列の逆行列を生成するプログラムを書いています.LU分解をしている関数を並列化してchannelで同期させたいのですが,行列の次元数が90を超えると,タイトルのメッセージのように > > channel element type too large (>64kB) > > > が表示されます. 私はこの問題を解決して行列の次元数をあげたいのですが,どのように変更すれば良いのでしょうか? ソースは以下のリンクを見て下さい. matrix_inverse_program 上のリンクの92~100行目に当たる所です. 煩雑なプログラムで申し訳ないですが,宜しくお願い致します.
回答: 大きな `Matrix` をそのまま `chan` に入れていることが、その問題の原因のようです。 代わりにポインタ `*Matrix` を入れるのはどうでしょう。以下のように修正してみてください。 * 92行目 を `a := make(chan *Matrix, 4)` に変更 * 97行目 を `a <- &R` に変更。 * 99行目 を `LUM = *(<-a)` に変更