prefetch相关内容

UICollectionView:组合布局禁用预取?

我有一个非常简单的 UICollectionView,它使用组合布局轻松实现动态单元格高度.不幸的是,这样做似乎会禁用使用 UICollectionViewDataSourcePrefetching 的内容预取.在以下示例代码中,collectionView(_:prefetchItemsAt:) 方法仅在集合视图初始显示时调用一次.没有滚动动作会导致对该方法的进一步调用. 我该怎么做才能使 ..
发布时间:2022-01-09 08:13:51 移动开发

_builtin_prefetch() 中第二个参数的作用是什么?

GCC 文档 此处 指定_buitin_prefetch 的用法. 第三个论点是完美的.如果为 0,编译器生成 prefetchtnta (%rax) 指令如果为 1,编译器生成 prefetcht2 (%rax) 指令如果是 2,编译器生成 prefetcht1 (%rax) 指令如果是 3(默认),编译器生成 prefetcht0 (%rax) 指令. 如果我们改变第三个参数,操作 ..
发布时间:2022-01-06 13:06:02 其他开发

当前的 x86 架构是否支持非临时加载(来自“正常"内存)?

我知道关于这个主题的多个问题,但是,我没有看到任何明确的答案,也没有任何基准测量.因此,我创建了一个处理两个整数数组的简单程序.第一个数组a 非常大(64 MB),第二个数组b 很小,无法放入L1 缓存.程序对a进行迭代,并以模块化的方式将其元素添加到b的对应元素中(当到达b的末尾时,程序重新从头开始).b 不同大小的 L1 缓存未命中数测量如下: 测量是在具有 32 kiB L1 数据缓存 ..
发布时间:2021-12-20 11:04:36 C/C++开发

为什么 GCC __builtin_prefetch 不能提高性能?

我正在编写一个程序来分析社交网络图.这意味着程序需要大量的随机内存访问.在我看来,预取应该有帮助.这是从顶点的邻居读取值的一小段代码. for (size_t i = 0; i 我将上面的代码转换为下面的代码并预取顶点的邻居的值. int *neigh_vals = new int[num_vertices];for (size_t i = 0; i 在这个 C++ 代码中,我没有覆盖 ..
发布时间:2021-12-18 23:10:27 其他开发

预取示例?

任何人都可以举一个例子或链接到一个在 GCC 中使用 __builtin_prefetch 的例子(或者只是一般的 asm 指令 prefetcht0)来获得实质性的性能优势?特别是,我希望示例满足以下条件: 这是一个简单、小巧、独立的示例. 删除 __builtin_prefetch 指令会导致性能下降. 将 __builtin_prefetch 指令替换为相应的内存访问会导致性能下降 ..
发布时间:2021-12-18 09:02:37 其他开发

如何在 tensorflow 中使用自定义 python 函数预取数据

我正在尝试预取训练数据以隐藏 I/O 延迟.我想编写从磁盘加载数据并预处理数据的自定义 Python 代码(例如,通过添加上下文窗口).换句话说,一个线程进行数据预处理,另一个线程进行训练.这在 TensorFlow 中可行吗? 更新:我有一个基于@mrry 示例的工作示例. 将 numpy 导入为 np将张量流导入为 tf进口螺纹BATCH_SIZE = 5培训_ITERS = 4100 ..
发布时间:2021-12-09 22:18:09 Python

软件预取是否分配行填充缓冲区 (LFB)?

我意识到Little's法律限制了在给定的延迟和给定的并发级别下传输数据的速度.如果你想更快地传输一些东西,你要么需要更大的传输,更多的“飞行中"传输,或者更低的延迟.对于从 RAM 读取的情况,并发受到 Line Fill Buffers 数量的限制. 当加载未命中 L1 缓存时,会分配一个行填充缓冲区.现代英特尔芯片(Nehalem、Sandy Bridge、Ivy Bridge、Has ..
发布时间:2021-11-25 05:25:30 C#

预取指令

似乎预取使用的一般逻辑是可以添加预取,前提是代码忙于处理,直到预取指令完成其操作.但是,似乎如果使用过多的预取指令,那么它会影响系统的性能.我发现我们首先需要没有预取指令的工作代码.稍后我们需要在代码的各个位置进行预取指令的各种组合,并进行分析以确定由于预取而实际上可以改进的代码位置.有没有更好的方法来确定应该使用预取指令的确切位置? 解决方案 在大多数情况下,预取指令几乎没有好处,甚至在 ..
发布时间:2021-11-17 21:45:41 其他开发

我们什么时候应该使用预取?

某些 CPU 和编译器提供预取指令.例如:GCC 文档 中的 __builtin_prefetch.虽然GCC的文档里有注释,但对我来说太短了. 我想知道,我们什么时候应该使用预取?有没有一些例子?谢谢! 解决方案 这个问题实际上与编译器无关,因为它们只是提供一些钩子来将预取指令插入到您的汇编代码/二进制文件中.不同的编译器可能提供不同的内在格式,但您可以忽略所有这些并(小心地)将其 ..
发布时间:2021-11-17 21:40:21 其他开发

使用 Linq-to-SQL、IOC 和 Repository 模式预取数据

使用 Linq-to-SQL 我想预取一些数据. 1) 常见的解决方案是处理 DataLoadOptions,但在我的架构中它不起作用,因为: 必须在第一次查询之前设置选项 我正在使用 IOC,所以我没有直接实例化 DataContext(我无法在实例化时执行代码) 我的 DataContext 在网络请求期间是持久的 2) 我看到了另一种可能性,基于在方法中加载数据及其子项 ..

如何在张量流中处理不同的队列批量大小和提要值批量大小?

我的代码曾经适用于 tensorflow 0.6,但它不再适用于最新的 tensorflow. 我想每隔几次训练迭代执行一次推理.我的训练数据是从队列中提取的,我的推理数据来自 feed_dict.训练批大小为 128,推理批大小为 1.我应该怎么做才能让网络接受两种不同的批大小? batch_size = 128x_batch = tf.placeholder("float", [Non ..
发布时间:2021-09-05 20:01:05 Python

Tensorflow 数据 API - 预取

我正在尝试使用 TF 的新功能,即数据 API,但我不确定预取 的工作原理.在下面的代码中 def dataset_input_fn(...)数据集 = tf.data.TFRecordDataset(文件名,compression_type="ZLIB")数据集 = dataset.map(lambda x:parser(...))数据集 = dataset.map(lambda x,y: i ..
发布时间:2021-09-05 19:09:56 其他开发

如何关闭 Safari 的预取功能?

Safari 有一项“功能",可以在您输入网址时预加载页面. 现在对于大多数用户来说,这确实是一项功能,可以加快页面加载速度.但对于 Web 开发者来说,这可能会带来麻烦——尤其是当它自动加载您之前使用过但目前无意运行的脚本(例如导入程序或后台脚本)时. 在 Safari 8.x 下会发生这种情况,但在旧版本上可能也是这种情况. 另外,请注意,此功能与“DNS 预取"不同,后者是 ..
发布时间:2021-07-14 19:26:48 其他开发

Windows XP 预取器注册表值

我一直在研究 Windows 预取系统,希望找到一种方法来加快我正在处理的应用程序的加载时间.我找到了以下链接,其中开发人员描述了对预取器注册表值的修改: http://dotnet.dzone.com/news/improving-cold-startup 我在本地进行了类似的修改,发现它们确实提供了更快的应用程序加载时间.我的问题是我找不到任何关于更改的注册表值以及为什么新值比旧值 ..
发布时间:2021-07-07 18:44:35 其他开发

非时间负载和硬件预取器,它们一起工作吗?

当从连续的内存位置执行一系列 _mm_stream_load_si128() 调用 (MOVNTDQA) 时,硬件预取器是否仍然启动,或者我应该使用显式软件预取(带 NTA 提示)是为了获得预取的好处,同时还能避免缓存污染? 我问这个的原因是因为他们的目标在我看来是矛盾的.流式加载将绕过缓存获取数据,而预取器尝试主动将数据提取到缓存中. 当顺序迭代一个大型数据结构时(处理后的数据在很长 ..
发布时间:2021-06-15 19:00:15 其他开发

了解`_mm_prefetch`

答案什么是_mm_prefetch()本地化提示?详细介绍了提示的含义. 我的问题是:我想要吗? 我正在研究一个被数十亿次重复调用的函数,其中带有一些 int 参数.我要做的第一件事是使用该参数(低32位)作为4GB缓存的键来查找某些缓存的值.基于调用此函数的算法,我知道大多数情况下该键会从一次调用翻倍(左移1位),所以我在做: int foo(int key){uint8_t值= ..
发布时间:2021-05-16 19:51:38 C/C++开发