Larrabee Native编程模式类似于x86多核心架构。Larrabee Native编程中心是一个完整的C/C++编译程序,这种编译程序可以在在静止状态下向Larrabee x86指令集里收集程序。很多C/C++应用可以被重新编译成Larrabee可以识别的语言程序,而且可以在不加修饰的情况下正确执行这些应用。这无疑大大提升了程序开发人员在编写Larrabee程序时的效率,特别是在编写那些类似于常常出现在高性能运算环境中的x86代码。
目前Larrabee的两个局限:1.有些系统call porting的应用不能有效支持;2.目前的驱动架构仍然需要再编译。我们将会着重介绍Larrabee Native应用编程的三个重要方面:software threading(软件渲染)、SIMD vectorization以及主机与Larrabee之间的通讯。
Larrabee Native可以提供一种灵活的软件线程功能。这种架构层次的线程能力也就是我们常常提到的POSIX Threads API (P-threads)。我们已经将API进行了扩展,可以允许编程人员与某个特定的HW线程或者核心指定线程。
尽管P线程是一种非常强大的线程编程API,但是对于某些应用而言,P线程的creation以及switching成本代价通常情况下却非常高。为了缓解这种成本压力,Larrabee Native提供了一种基于分布式任务stealing scheduler的任务安排API,这种API非常轻。这种任务编程API的实际执行可以在Intel的Thread Building Blocks中看到。最终,Larrabee Native可以通过Larrabee Native C/C++编译程序中的OpenMP pragmas提供额外的线程编程支持。
对于Larrabee Native应用编程人员而言,所有的Larrabee SIMD矢量单元都是完全可编程的。Larrabee Native C/C++编译程序包括Larrabee版的Intel自动矢量化编程技术。需要编写Larrabee矢量单元的编程人员可以仅通过C++矢量intrinsics或者inline Larrabee集合代码轻而易举的编写这种程序。
在一种基于包括Larrabee的平台的CPU中,对于这个平台,Larrabee将会被OS驱动程序控制管理。Larrabee的library可以提供非常快的数据/信息传输协议,从而更好的在binaries间管理所有的存储数据传输和通讯。此外,某些从Larrabee应用binaries中访问的C/C++标准library功能的执行必须与主操作系统共享数据,特别是诸如read/write/open/close等在内的文件I/O功能。
除了非常高的吞吐量应用程序外,我们预测编程人员还将会利用Larrabee Native执行更高层次的编程模式,这种编程模式可能让平行编程的某些方面自动执行。比如说,Ct风格的编程模式、诸如Intel Math Kernel Library的高层次library API、physics API等等。目前的GPGPU编程模式同样可以通过Larrabee Native被重新执行。