我应该在vdsp_mmul或cblas_dgemm之间选择哪个?

时间:2014-08-13 05:35:55

标签: ios performance matrix-multiplication accelerate-framework

我第一次使用Accelerate框架进行巨大的矩阵乘法,但在这种情况下我不理解vDSP和CBLAS之间的区别。它们的性能有何不同?

1 个答案:

答案 0 :(得分:3)

vDSP和CBLAS有不同的历史,但功能上有一些重叠,因为它们涵盖了类似的空间。通常,在查看高性能功能时,您应该寻找最简单的功能来满足您的要求。例如,CBLAS支持在行主要和列主要排序之间切换,而vDSP则不支持。每个选项意味着函数内部存在一些条件,并且每个条件意味着花费一些时间来测试条件。所以人们会期望,在所有条件相同的情况下,vDSP版本要更快,因为它可能会在内部执行类似的操作,同时提供更少的选项。更简单的功能也更容易调用。

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