vectorization相关内容

如何使用 g++ 向量化我的循环?

我在搜索时找到的介绍性链接: 6.59.14 Loop-Specific Pragmas 2.100 Pragma Loop_Optimize 如何向 gcc 提示循环计数 告诉 gcc 专门展开一个循环 如何在 C++ 中强制矢量化 正如你所看到的,它们中的大部分是针对 C 的,但我认为它们也可能适用于 C++.这是我的代码: template//__attribute__ ..
发布时间:2021-12-20 16:24:07 C/C++开发

从 RGB 到 BGRA 的快速矢量化转换

在对之前关于将 RGB 转换为 RGBA 和 ARGB 到 BGR 的一些问题的跟进中,我想使用 SSE 加速 RGB 到 BGRA 的转换.假设是 32 位机器,并且想要使用内部函数.我很难将源缓冲区和目标缓冲区对齐以使用 128 位寄存器,并寻求其他精明的矢量化解决方案. 要向量化的例程如下... void RGB8ToBGRX8(int w, const void *in, voi ..
发布时间:2021-12-19 18:01:58 其他开发

复制向量并将每个副本向下移动 1 行,无需 for 循环

我想复制一个向量 N 次来创建一个矩阵,每个副本向下移动 1 行.请参见图像(第一列是向量 1 到 5).如果不用 for 循环也能实现,那就太好了. 到目前为止能够做到这一点 repmat(my_vector, 1, 5) 来创建一个 N x 5 矩阵. 解决方案 您可以使用 toeplitz 和 tril; a = [1 2 3 4 5]out = tril( toeplitz ..
发布时间:2021-12-19 08:23:48 其他开发

两个特征矩阵的有效成对相关

在 Python 中,我需要找到矩阵 A 中的所有特征与矩阵 B 中的所有特征之间的成对相关性.特别是,我很感兴趣地发现 A 中的给定特征在 B 中的所有特征中具有的最强 Pearson 相关性.我不在乎最强的相关性是正相关还是负相关. 我使用下面的两个循环和 scipy 做了一个低效的实现.但是,我想使用 np.corrcoef 或其他类似的方法来有效地计算它.矩阵 A 的形状为 4000 ..
发布时间:2021-12-19 08:19:16 Python

改进 MATLAB 矩阵构造代码:或者,为初学者编写矢量化代码

我编写了一个程序来构建 3 波段小波变换矩阵的一部分.但是,鉴于矩阵的大小为 3^9 X 3^10,MATLAB 需要一段时间才能完成构建.因此,我想知道是否有办法改进我正在使用的代码以使其运行得更快.我在运行代码时使用 n=10. B=zeros(3^(n-1),3^n);v=[-0.117377016134830 0.54433105395181 -0.0187057473531300 -0 ..
发布时间:2021-12-19 08:12:43 其他开发

MATLAB:创建具有相同重复块的块对角矩阵

我有一个K维度的矩阵n x n.我想创建一个新的块对角矩阵 M 的维度 N x N,这样它包含 d 块矩阵 K 作为它的对角线. 如果 d 更小,我会直接使用 M = blkdiag(K,K,K) 等.不幸的是,d 非常大,我不想用 d 手动编写与 blkdiag() 函数完全相同的参数的公式. 有没有更短、更聪明的方法来做到这一点? 解决方案 你可以使用 kron 来解决这个 ..
发布时间:2021-12-19 08:11:32 其他开发

x86_64 上的原子双浮点或 SSE/AVX 矢量加载/存储

这里(以及一些 SO 问题)我看到 C++ 没有不支持无锁 std::atomic 之类的东西,并且还不能支持原子 AVX/SSE 向量之类的东西,因为它依赖于 CPU(尽管现在我知道的 CPU,ARM,AArch64 和 x86_64 有向量). 但是在 x86_64 中是否有对 double 或向量的原子操作的汇编级支持?如果是,支持哪些操作(例如加载、存储、加、减、乘)?MSVC++2 ..
发布时间:2021-12-18 08:40:45 C/C++开发

Numpy Broadcast 执行矢量化欧氏距离

我有 2 x 4 和 3 x 4 的矩阵.我想找到跨行的欧几里得距离,最后得到一个 2 x 3 的矩阵.这是带有一个 for 循环的代码,用于计算 a 中每个行向量与所有 b 行向量的欧几里德距离.如何在不使用 for 循环的情况下执行相同操作? 将 numpy 导入为 npa = np.array([[1,1,1,1],[2,2,2,2]])b = np.array([[1,2,3,4],[ ..
发布时间:2021-12-14 09:32:28 AI人工智能

如何加速或矢量化 for 循环?

我想通过矢量化或使用 Data.table 或其他方法来提高 for 循环的速度.我必须在 1,000,000 行上运行代码,而且我的代码真的很慢. 代码是不言自明的.以防万一,我在下面提供了解释.我已经包括了函数的输入和输出.希望你能帮助我更快地完成这个功能. 我的 目标是对向量“Volume"进行分箱,其中每个分箱等于 100 份.向量“Volume"包含交易的股票数量.这是它的样 ..
发布时间:2021-12-11 13:04:07 其他开发

为什么矢量化代码比 MATLAB 中的 for 循环运行得更快?

我已经阅读了这个,但我仍然没有了解为什么矢量化代码更快. 在 for 循环中,我可以使用 parfor 进行并行计算.如果向量化代码更快,是否意味着它会自动并行化? 解决方案 没有.您混淆了两个重要概念: MATLAB 旨在非常快速地执行向量运算.MATLAB 是一种解释型语言,这就是为什么它的循环如此缓慢的原因.MATLAB 通过提供极快的(通常用 C 编写,并针对特定架构进 ..
发布时间:2021-12-11 13:01:20 其他开发

'for' 循环与 MATLAB 中的矢量化

我在 MATLAB 中编程,并且按照建议,我总是尝试使用矢量化.但最终程序还是很慢.所以我发现在一个地方,使用循环时代码明显更快(下面的例子). 我想知道我是否误解或做错了什么,因为在这种情况下性能很重要,我不想一直猜测矢量化或循环是否会更快. % 数据初始化k = 8;n = 2^k+1;h = 1/(n-1);顺 = 0.1;迭代 = 10000;uloc = 零(n);fploc = ..
发布时间:2021-12-11 12:49:40 其他开发

MATLAB 中的矢量化简介 - 有什么好的教程吗?

我正在寻找有关在 MATLAB 中进行矢量化(循环)的任何好的教程. 我有一个非常简单的算法,但它使用了两个 for 循环.我知道矢量化它应该很简单,我想学习如何做到这一点,而不是向您询问解决方案. 但是为了让您知道我遇到了什么问题,以便您能够建议展示如何解决类似问题的最佳教程,以下是我的问题的概述: B = zeros(size(A));%//A 是给定的矩阵.对于 i=1:siz ..
发布时间:2021-12-08 15:29:41 其他开发

多个起点和终点的高效冒号运算符

假设我有以下两个变量: start_idx = [1 4 7];end_idx = [2 6 15]; 我想高效(如果可能,不要循环)生成一行,其中包含在 start_idx 和 end_idx 的相应元素之间应用的冒号运算符.对于此示例,这将导致: result = [1:2 4:6 7:15]; 因此: results = [1 2 4 5 6 7 8 9 10 11 12 13 1 ..
发布时间:2021-12-08 15:23:44 其他开发

BSXFUN 关于关系运算的内存效率

我想在这里研究的主要有两件事- 有六种内置关系运算可用于 bsxfun :@eq (equal)、@ne(不等于)、@lt(小于)、@le(小于或等于)、@gt(大于) 和 @ge(大于或等于).很多时候我们将它们用于浮点数和关系运算,它们输出逻辑数组.所以,这让我很好奇,在对浮点数使用这些关系运算时,bsxfun 的固有扩展是否涉及输入元素的实际复制,这正是我的第一个问题. 我还想知 ..
发布时间:2021-12-08 15:22:12 其他开发

从开始/结束索引列表创建矢量化数组

我有一个两列矩阵 M ,其中包含一组区间的开始/结束索引: startInd EndInd1 36 1012 1215 16 如何生成所有区间索引的向量: v = [1 2 3 6 7 8 9 10 12 15 16]; 我正在使用循环执行上述操作,但我想知道是否有更优雅的矢量化解决方案? v = [];对于 i=1:size(M,1)v = [v M(i,1):M(i,2)];结尾 ..
发布时间:2021-12-08 15:02:59 其他开发

寻找成对欧几里得距离(距离矩阵)的快速算法

我知道 matlab 有一个内置的 pdist 函数,可以计算成对距离.但是,我的矩阵太大了,它的 60000 x 300 和 matlab 内存不足. 这个问题是对 Matlab euclidean 的跟进成对平方距离函数. 是否有解决这种计算效率低下的方法.我尝试手动编码成对距离计算,通常需要一整天才能运行(有时 6 到 7 小时). 非常感谢任何帮助! 解决方案 好 ..
发布时间:2021-12-08 14:55:31 其他开发