是否值得学习特定的API?

时间:2008-12-26 22:21:58

标签: c++ intel amd-processor

我目前正在学习与英特尔并行化库相关的API,如TBB,MKL和IPP。不过,我想知道它是否也值得关注AMD的部分难题。或者这只是浪费时间? (我必须承认,我对AMD的图书馆支持毫无头绪 - 所以 - 如果您有任何建议,我将不胜感激。)

为了澄清,我采用英特尔方式的原因是因为1)API非常好; 2)英特尔似乎像API支持一样认真对待工具支持。 (再一次,我没有任何线索 AMD在这个部门的表现如何。)

3 个答案:

答案 0 :(得分:9)

MKL和IPP库也将(几乎)在AMD机器上执行。我的猜测是TBB也会在AMD机箱上运行得很好。如果我不得不建议一种对两者都有益且有用的技术,那就是掌握OpenMP库。具有OpenMP扩展的英特尔编译器速度惊人,并且与AMD芯片一起使用。

答案 1 :(得分:7)

如果您对构建视频游戏,操作系统,数据库服务器或虚拟化软件等特别感兴趣,那么这是值得的。换句话说:如果你有一个关注性能的细分,花时间在汇编程序中做(并做正确)。英特尔也是如此。

答案 2 :(得分:3)

如果您的公司使用您的软件销售英特尔服务器的软件包,那么您不应该费心学习AMD方法。但是,如果您必须为两个(或许多)不同的平台提供软件,那么可能值得研究不同的技术。为特定于硬件的库创建包装器将非常困难。 (特别是因为涉及穿线。)

并且您绝对不希望为每个硬件配置编写完全独立的实现。实际上,如果您的软件要由通用用户使用,那么您可能希望放弃英特尔技术,并使用标准线程技术。我并不是要令人沮丧,但我相信英特尔线程库在所有意图和目的方面都领先于他们的时间。