我已经看到AMD APP SDK示例可以在只有Intel CPU的机器上运行.怎么会发生这种情况?编译器如何针对不同的机器架构?我不需要Intel的编译器来运行intel CPU上的代码吗?
我想如果我们必须在特定硬件上运行OpenCL应用程序,我必须使用设备的供应商细节编译器(重新)编译它.
我的理解在哪里错了?
OpenCL 的强大之处在于抽象了底层硬件并提供大规模、并行和异构的计算能力。
一些 SDK 和平台提供了一些特定的功能来“优化”代码,老实说,我认为这些功能只是营销,它们引入了样板代码,使应用程序的可移植性降低。
还有一些伪新技术只是 OpenCL 的包装,或者它们在概念上非常相似,例如英特尔快速同步。
关于英特尔,我应该说,首先他们支持所有 iCore 代,甚至一些 C2D,现在新的 SDK 只支持第三代 iCore,老实说,我不明白他们的策略,如果你的话,英特尔可能是最后的选择想要采用 OpenCL 并瞄准尽可能多的受众,而且他们的 SDK 似乎一点也不好。
坚持该标准,您将避免可能的法律和性能问题,并且您的代码也将更加可移植。