I wonder if there exists any Scalapack routine that may convert a triangular matrix back to a general one, i.e. copies the lower/upper part to the upper/lower part - I couldn't find it yet. I know there exists an easy workaraound using p?geadd with manipulation of the diagonal, but that one consumes twice as much memory as theoretically needed and I can't afford that... So it seems strange to me, that Scalapack/PBLAS doesn't provide any routine solving this relative simple problem. If anybody knows more than I please let me know!
我想知道是否存在任何Scalapack例程可以将三角矩阵转换回一般矩阵,即将下/上部分复制到上/下部分 - 我还没有找到它。我知道有一个简单的工作方式使用p?geadd操纵对角线,但那个消耗的内存是理论上需要的两倍,而我负担不起...所以我觉得很奇怪,Scalapack / PBLAS没有不提供解决这个相对简单问题的常规方法。如果有人比我更了解,请告诉我!
-Thanks
1 个解决方案
#1
I have found a dangerous solution:
我发现了一个危险的解决方案:
- delete missing triangle of C
- perform pdgeadd('T',C,C)
- divide all elements of given triangle of C by two
删除C的缺失三角形
将给定三角形C的所有元素除以2
It works, but I don't know if there are any limitations, since it's theoretically forbidden calling pdgeadd with a A and C referring to the same memory...
它有效,但我不知道是否有任何限制,因为理论上禁止用A和C调用pdgeadd来指代相同的内存...
#1
I have found a dangerous solution:
我发现了一个危险的解决方案:
- delete missing triangle of C
- perform pdgeadd('T',C,C)
- divide all elements of given triangle of C by two
删除C的缺失三角形
将给定三角形C的所有元素除以2
It works, but I don't know if there are any limitations, since it's theoretically forbidden calling pdgeadd with a A and C referring to the same memory...
它有效,但我不知道是否有任何限制,因为理论上禁止用A和C调用pdgeadd来指代相同的内存...