问题标签 [vdsp]

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.

0 投票
3 回答
1703 浏览

objective-c - C 与 vDSP 与 NEON - NEON 怎么能像 C 一样慢?

NEON 怎么会像 C 一样慢?

我一直在尝试构建一个快速的直方图函数,通过为它们分配一个值来将传入的值存储到范围中——这是它们最接近的范围阈值。这是将应用于图像的东西,所以它必须很快(假设一个 640x480 的图像数组,所以 300,000 个元素)。直方图范围数是 (0,25,50,75,100) 的倍数。输入是浮点数,最终输出显然是整数

我通过打开一个新的空项目(无应用程序委托)并仅使用 main.m 文件在 xCode 上测试了以下版本。我删除了除 Accelerate 之外的所有链接库。

这是 C 实现:旧版本有很多 if then 但这是最​​终优化的逻辑。花了 11 秒和 300 毫秒。

这是 vDSP 的实现。即使有一些繁琐的来回浮动到整数,也只用了 6s!几乎提高了 50%!

这是霓虹灯的实现。这是我的第一次,所以玩得很好!它比 vDSP 慢,需要 9 秒和 300 毫秒,这对我来说没有意义。vDSP 比 NEON 优化得更好,或者我做错了什么。

PS:这是我第一次进行这种规模的基准测试,所以我尽量保持简单(大循环,设置代码不变,使用 NSlog 打印开始/结束时间,只加速框架链接)。如果这些假设中的任何一个对结果产生重大影响,请批评。

谢谢

0 投票
1 回答
649 浏览

linux - 适用于 Linux 的 vDSP 等效项

我在 OS X 和 iOS 下使用 Apple 的 vDSP 原语有很好的经验。

http://developer.apple.com/library/mac/#documentation/Accelerate/Reference/vDSPRef/Reference/reference.html

现在我正在尝试将一些依赖于 vDSP 的代码移植到 Linux,我想知道是否有任何等价物可以内置到标准库之一中。

0 投票
2 回答
2038 浏览

ios - FFT的大小实际上是什么意思

  1. 在使用 Apple 文档中的 FFT 示例代码时,N、log2n、n 和 nOver2 究竟是什么意思?
  2. N 是指 fft 的窗口大小还是给定音频中的样本总数,以及
  3. 如何从音频文件中计算 N?
  4. 它们与音频采样率(即 44.1kHz)有何关系?
  5. 此代码中的 FFT 帧大小是多少?

代码:

0 投票
1 回答
2035 浏览

ios - 如何在 iOS 中使用 vDSP 将声音文件转换为 FFT

我是音频框架的新手,但经过一段时间的搜索,我发现了 iOS api 提供的用于数字信号处理的 Accelerate 框架。在我的项目中,我想将声音文件转换为 fft,以便我可以使用 fft 比较两个声音。那么我应该如何进行呢?我已经浏览了苹果 aurio touch 示例应用程序,但他们没有使用加速框架。任何人都可以帮我将声音文件转换为 fft,然后使用相关性进行比较。

0 投票
1 回答
10793 浏览

ios - iOS FFT 绘制频谱

我读过这些问题:

使用 Apple FFT 和 Accelerate 框架

使用 Accelerate 框架进行 FFT 时如何设置缓冲区?

iOS FFT Accelelate.framework 在播放期间绘制频谱

它们都描述了如何使用加速框架设置 fft。在他们的帮助下,我能够设置 fft 并获得基本的频谱分析仪。现在,我正在显示从 fft 获得的所有值。但是,我只想显示 10 到 15 个或可变数量的条来表示某些频率。就像 iTunes 或 WinAmp 电平表一样。1. 我是否需要对一系列频率的幅度值进行平均?还是它们只是向您显示特定频率条的幅度?2. 另外,我需要将幅度值转换为 db 吗?3. 如何将我的数据映射到某个范围。我是否映射到我的声音位深度的最大分贝范围?获取 bin 的最大值将导致最大映射值跳跃。

我的渲染回调:

播放一些音乐,我得到从 -96db 到 0db 的值。在以下位置绘制一个点:

给了我一个相当圆润的曲线:

情节1

如果我不转换为 db,我可以通过将我的数组值乘以 10000 来绘制并获得漂亮的峰值。

情节2

我做错了什么吗?以及如何显示可变数量的条?

0 投票
2 回答
601 浏览

performance - 对于今天的 vDSP 性能,使用 1 的步幅是否仍然至关重要?

在2006 年 11 月关于使用vDSP对代码进行矢量化的一篇有用但有些过时的文章中,作者发表了以下声明:

需要记住的重要一点是,只有步幅等于 1 的操作才能交付极快的矢量化代码。

今天仍然如此吗?即使在具有更强大矢量内在函数的更新的英特尔处理器上?

我之所以问是因为我正在编写一些矩阵数学例程,并且刚刚开始将它们全部切换为使用类似于 Fortran的列优先排序,以便更容易地与MATLABBLASLAPACK兼容。但现在我发现我对vDSP的一些调用需要处理不再连续的向量……</p>

目前,这些vDSP调用是我的代码执行的瓶颈例程。并不是说这将永远如此,但至少现在我不想放慢它们的速度,只是为了让对其他库的调用更简单。

我现在最常调用的vDSPvDSP_distancesq例程是为了以防万一。

0 投票
1 回答
687 浏览

iphone - iPhone Accelerate Framework FFT 转换二维数组

我正在做一个需要二维数组傅里叶变换的项目。

但是,我远不是 FFT 或特别是 vDSP 方面的专家。

我在此处此处此处看到了一些示例,但它们要么用于一维数组,要么我不太了解它们。

我希望转换的是我构建的这个数组,如下所示:

0 投票
1 回答
162 浏览

c - ListCorrelate vDSP 等效于 {{a,b,c},{d,e,f}} 和 {{g,h,i},{j,k,i},{l,m,n}} 的卷积

If I ListCorrelate 两个真实双打列表

在数学中我得到

谁能告诉我 Apple 的 vDSP for c 中的等效功能?谢谢

0 投票
1 回答
529 浏览

objective-c - 是否有 vDSP 功能来执行以下操作?

对不起,如果这很明显。我刚刚进入 Accelerate 框架并试图超越非常简单的东西。我正在盯着 vDSP 参考资料,但我不确定以下内容将如何措辞或在技术术语中可能被称为什么。我想要以下操作 - 使用 vDSP 执行此操作的最佳方法是什么?我只是很难找到它。(在伪代码中,i从 0 到某个 N:)

谢谢!

澄清一下:这些都是浮点数的向量,速度很关键。

0 投票
1 回答
1200 浏览

ios - vDSP_desamp FIR 滤波器采样历史连续性

我正在尝试使用该vDSP_desamp()例程对不断捕获的音频信号进行下采样。根据 Accelerate-framework 文档,该例程执行 FIR 滤波和抽取。

但是我有一个冲突,因为 API 没有为循环缓冲区提供输入参数,据我所知,需要保留样本历史记录以执行 FIR 过滤。这使我相信样本历史记录在每次函数调用期间都会被重置,或者可能正在应用与我所知道的算法不同的算法。

不幸的是,该功能是一个完整的黑匣子,没有给出关于如何执行滤波或如何确保信号连续性的提示。

你认为如果我用前一个缓冲区的最后 N 个样本(N 是滤波器抽头的数量)填充每一帧来获得滤波连续性就足够了吗? 我会在调用后丢弃那些填充样本输出vDSP_desamp(),但我猜在处理填充样本后应该正确初始化样本历史记录行。

欢迎任何关于内脏的提示vDSP_desamp()