gpt4 book ai didi

用于 HPC 的 C++ std::vector?

转载 作者:太空狗 更新时间:2023-10-29 23:13:24 24 4
gpt4 key购买 nike

我正在将执行数值模拟的程序从 FORTRAN 翻译成 C++。

我必须处理 800MB 大小的两倍的大矩阵。这个

double M[100][100][100][100];

给出段错误,因为堆栈不是那么大。使用 new、delete 很尴尬,因为我需要四个 for 循环来分配我的数组甚至取消分配它。

std::array 在栈中所以不好。std::vector 是个不错的选择,所以

第一个问题std::vector 适合快速模拟还是

vector<vector<vector<vector<int,100>,100>,100>,100> 

会携带大量无用且繁重的数据吗?

第二个问题您知道我可以使用的其他数据结构吗?也许有一些来自 boost 的东西。

目前我只是使用这个解决方案:

double * M = new double [100000000];

我正在手动访问我需要的条目。如果我找不到任何其他高效的解决方案,我将编写一个自动管理最后一个方法的类。

第三个问题您认为这会显着降低性能吗?

最佳答案

您可能需要考虑 std::valarray,它旨在与 FORTRAN 竞争。它将元素存储为平面数组并支持数学运算,以及切片和间接访问的操作。

无论如何,这听起来像是您的计划。虽然即使是manpage建议可能有更灵活的选择。

关于用于 HPC 的 C++ std::vector?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39546874/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com