我第一次使用Accelerate框架进行巨大的矩阵乘法,但是在这种情况下,我不了解vDSP和CBLAS之间的区别。他们的表现不同吗?

最佳答案

vDSP和CBLAS的历史不同,但是由于它们覆盖相似的空间,因此在功能上存在一些重叠。通常,在查看高性能功能时,应寻找最能满足您要求的功能。例如,CBLAS支持在行优先顺序和列优先顺序之间切换,而vDSP不支持。每个选项意味着函数内部有一些条件,而每个条件意味着有一些时间要花在测试该条件上。因此,在所有条件相同的情况下,人们都希望vDSP版本更快,因为它可能在内部做类似的事情,同时提供的选项更少。更简单的函数也更容易调用。

就是说,检查性能的方法是通过测试,而不是通过对可能的实现方式进行假设。在某些情况下,手写for循环比等效的Accelerate函数要快得多,因为编译器比该函数可以更好地优化循环。同样,只有测试可以告诉您。有时,加速可以代表巨大的进步。 (有关更多信息,请参见http://robnapier.net/fast-bezier-intro)。

关于ios - 我应该在vdsp_mmul还是cblas_dgemm之间选择哪个?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25278746/

10-09 08:52