问题标签 [stxxl]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 指定存储 stxxl::map/persist 数据的位置?
stxxl::vector
有一个构造函数,您可以在其中提供一个stxxl::file *
. 这会将向量与该特定文件联系起来:
这1
会在第一次运行、2
第二次运行(如果文件未删除)等时输出。
我怎样才能为 a 做同样的事情stxxl::map
?我在文档中看不到任何与stxxl::file
s 有任何关系的函数。
具体来说,我想在磁盘上指定存储地图的位置,而不是 stxxl 通常执行的位置,这样我就可以破坏实例,创建一个新实例,并让它已经包含与被破坏实例相同的数据(即stxxl::map
使用 stxxl 已经存在的磁盘存储机制来持久化 's 的数据)。
c++ - C++:简单代码中的 STXXL 和 VS 运行时错误
我有以下代码,这是一个非常简单的测试,但 VS 拒绝运行它:
该程序在第 3 行的内存位置产生运行时错误。我究竟做错了什么?我正在为 64 位平台编译程序。在调试模式下,如果我按继续,程序将恢复并毫无问题地执行。
c++ - 在 Visual Studio 2015 上编译 STXXL
我正在尝试在 Visual Studio 2015 的 C++ 代码中使用 STXXL 映射。
我按照http://stxxl.sourceforge.net/tags/master/install_windows.html上的说明进行操作,当我尝试在 Visual Studio 中构建项目时,我收到以下消息:
"<"hash_map">" 已弃用并将被删除。请用 。您可以定义 _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS 以确认您已收到此警告。”
我尝试将 _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS 添加到 preproseccor 定义中,但没有帮助。看起来问题来自“C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include”目录中的文件 hash_map。
有谁知道问题是什么?
谢谢,雷切尔。
c++ - Stxxl Vector 作为 std::vector 的 dropin 替代品
这是具有通用向量和对类型的向量对的后续,模板的模板。
我希望能够使用std::vector
or调用方法,同时指定 (Pair of x,y) 的stxxl:vector
模板参数。vector
具体来说,signatrue 方法可能如下所示:
不幸的是,当像这样指定签名时,不可能传递 a stxxl:vector
as t_vector
。它导致以下编译错误:
问题是如何修改方法签名,以便能够stxxl::vector
使用 ? 替代现有代码std::vector
?
更新为什么我为向量使用嵌套模板:我可能弄错了,但我希望编译器在上述方法中为变量键入类型。
例如,我正在构建一个vector
或一个queue
哪个应该 uint32_t or uint64_t
取决于对元素的类型是uint32_t or uint64_t
c++ - 使用随机访问其元素的巨大数组进行操作
我必须使用非常大的浮点数组(大约 2000^3),此外,有时我必须随机或通过其他非顺序方式路由数组元素。
我使用 stxxl 库并将我的数据存储在 stxxl::vector 容器中。该库将数据存储在磁盘上,并使用 RAM 中的一小部分数据进行操作。由于对元素的随机访问,有必要经常从磁盘读取/写入内存块,这会减慢程序的工作速度。
有没有人知道通过元素随机路由大数据的操作方式?stxxl可以吗?
c++ - 任何 STXXL 替代 STXXL 在编译时处理未知大小,或任何技巧?
这个问题和答案让我确信 STXXL 只处理固定的数据长度。是否有任何替代 STXXL 来处理动态数据大小(编译时数据大小未知)?
或者有什么技巧可以使用 STXXL 来处理动态数据大小?上面的链接提到定义了许多不同长度的结构并在运行时选择最接近的结构。我一直在考虑创建一个工具来检测数据大小或获取用户指定的记录大小,然后让该工具使用已知大小自动生成代码,将其编译为另一个可执行文件并运行它。
c++11 - STXXL fails at creating a map of strings in long numeric
With the code that follows, I want to create a map of type std::map. By using a debugger, I got that the exception was raised by stl_pair.h at line 368 (pair& operator=(typename conditional<__and_<is_copy_assignable<_T1>, is_copy_assignable<_T2>>::value, const pair&, const __wrap_nonesuch&>::type __p)
), which was invoked by the map scanning of cur (*(cur + 1) = *cur;
) in the leaf.h insert function of stxxl. I provide the code I used in the following source code:
I also provide the dump result:
osrm - 2 个 HD 上的 OSRM 提取和最佳交换 stxxl 位置
我想设置汽车配置文件数据,但现在需要 3 天,而且仍然是 100% 图表(所以还有更多的路要走),我在想,也许我的交换和 stxxl 设置不当。
我有以下系统
- 2HDs 4 TB SATA 6 Gb/s 7200 rpm HDD 企业级
- 64 GB DDR4 内存
- 英特尔® 酷睿™ i7-6700 四核 Skylake,包括。超线程
HD1 具有
- 系统
- 程式
- osm.pbf 文件就可以了
- 提取的数据必须放在这个上
- 具有 32G 交换的分区
HD2 大部分是空的(但其他一些大数据将需要空间)
我的提取方法是在 HD2 上设置另一个 300G 的交换,在 HD2 上设置 300G 的 stxxl。但似乎太慢了。iotop 有一些阅读和写作活动,但没什么大不了的。htop 没有显示任何显着的 cpu 使用率。我从 8 个进程开始。
使用/开启
- 行星-latest.osm.pbf (37G)
- OSRM 5.9.0(现在直接从 OSRM github 尝试 5.12.0 docker,没有速度提升)
xxxxxxxxx
- 有没有更好的方法来设置额外的交换和 stxxl(可能是 HD1 上的交换,只有 HD2 上的 stxxl)?
如果我可以根据需要移动提取数据的文件和目标位置,那么在 HD1 上执行 .pbf、在 HD1 上进行所有交换和 stxxl 并在 hd2 上提取数据(然后将其复制到 HD1)会更好吗?谢谢
编辑 4.9.2017 似乎 stxxl 被禁用了几个版本,需要手动启用。所以这可能会给我一些动力。然而,我仍然对跨两个 HD 的最佳分割感兴趣。
c++ - 在 MakeFile 中包含 STXXL 库
我试图在此答案之后将 STXXL 库安装到自定义路径,以这种方式提供前缀cmake
:
cmake -DCMAKE_INSTALL_PREFIX=/usr . && make all install
当我运行测试时,它们似乎工作正常。但我想将 STXXL 包含在不同的 MakeFile 中并编译该项目。在那个 MakeFile 中有一行
STXXL_CONFIG = /opt/stxxl/stxxl.mk
我相信配置文件stxxl.mk
来自基于旧make
的安装(我也无法在我的系统中找到它)。我想知道如何修改此文件以包含 STXXL 库并编译自定义项目。
如果不修改上面的语句MakeFile
,我会收到错误消息:
undefined reference to 'stxxl::get_next_seed()' collect2: error: ld returned 1 exit status
不用说,我没有 root 访问权限,不幸的是,我也没有 MakeFiles 的良好背景。这不是带有 STXXL 的 Makefile 的副本
c++ - STXXL 在使用非常快的 SSD 时表现不佳
我目前正在编写一个工具,它使用 STXXL 来查找硬盘驱动器上的大文件和驻留在 RAM 中的向量之间的相似之处。我在下面写了一个示例(适用于 Windows)来说明我的意思。引用的文件大约 38GB 大,是使用上述工具创建的。
在普通 HDD 和 SATA-SSD 上,它的性能相当不错,但在 M.2 或更快的 SSD 上,它最多只使用三分之一的带宽,即使它可以得到更多。
VS2017 Profiler 表明,
间接调用 STXXL 的函数
https://stxxl.org/tags/1.4.1/group__reqlayer.html#ga016f4e02b691aa4818ad3305de3f47bd
似乎是最慢的部分。有没有人知道为什么它表现不佳以及需要改变什么?
先感谢您。
编辑:新代码的性能表:
代码: