gpt4 book ai didi

c++ - 在 C++ 程序的多次运行中将巨大的矩阵保存在内存中

转载 作者:太空宇宙 更新时间:2023-11-03 10:39:53 24 4
gpt4 key购买 nike

我正在编写一些 C++ 代码(使用 Eigen3 矩阵库)来解决涉及巨大稀疏矩阵的凸优化问题。从文件中读入矩阵需要一分钟左右的时间,我不想每次运行程序时都必须从文件中读入矩阵。 (我将调整我的优化算法中的参数,这涉及连续多次运行我的代码,我不想每次都等待一分钟来读取大矩阵。)

有没有一种方法可以在我更改代码中的一些参数时将这个大矩阵保留在内存中,然后重新编译我的代码并再次运行它?

这种事情在 Matlab 中很容易,但我不知道它在 C++ 中是如何处理的(尽管这是一种常见的情况,所以必须有一个人们采取的标准方法)。

最佳答案

Is there a way that I can keep this big matrix in memory while I change some parameters in my code then recompile my code and run it again?

AFAIK 在进程未运行时保留进程的内存,然后“重新运行”该进程不受任何操作系统支持。

你可以尝试:

  • 改进矩阵的读取代码(或它存储的表示形式,如 chtz 所建议的)。
  • 保持矩阵由辅助进程加载,并使用进程间通信从包含您的“主代码”(然后可以随意(重新)启动和停止)的进程中使用它。
  • 尝试实现某种 "hot swapable module"/热代码重新加载。

但是其中大部分(虽然很有趣)实现起来极其复杂。

I'm going to be tuning the parameters in my optimization algorithm, which involves running my code many times in a row, and I don't want to have to wait one minute to read in the big matrix each time.

如何从用户输入中获取这些参数而不是对它们进行硬编码?这将允许您指定参数、运行您的代码、读入另一组参数、再运行一次……而无需重新编译您的程序或停止并重新启动该过程。

关于c++ - 在 C++ 程序的多次运行中将巨大的矩阵保存在内存中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43301479/

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