4.4 外部过程 |
为给其他编程语言或风格提供一个标准接口,HPF通过外部函数达到这个目的。对于完成这个的机制是,在一个接口块中,通过给函数或子程序的定义使用EXTRINSIC前缀来定义外部过程。
例如,一个能调用以理想的数据并行C书写的子程序的实现,这个子程序将调用Performance C. 我们为这样的子程序定义如下接口:
INTERFACE
EXTRINSIC( PC ) FUNCTION COMPRESS( V,N )
INTEGER, DIMENSION( : ) :: V
INTEGER COMPRESS
!HPF$ DISTRIBUTE( BLOCK ) :: V
INTENT( INOUT ) :: V
INTENT( IN ) :: V
END FUNCTION COMPRESS
END INTERFACE
HPF为extrinsic-kind-keyword定义两类选择( 是EXTRINSIC的参数 ),即HPF和HPF_LOCAL。HPF只是HPF子程序的标准接口。而HPF_LOCAL外部接口是一个执行SPMD模式的一个接口,这种模式是执行子程序的多个拷贝(每个处理器有一个拷贝),这些子程序仅能存取通过形参所映射的数据。如果希望,局部子程序可随意使用消息传递库。在从子程序返回时,所有的处理器是同步的。但是,对于局部子程序能做什么是有限制的--例如,不能返回再映射数据。支持这种模型的子程序集在HPF_LOCAL_LIBRARY模板中可得到。注意,HPF_LOCAL接口不是HPF的一部分,因为在某些机器上,不能提供这个。但是,如果HPF_LOCAL接口被实现,那么它将象HPF标准叙述的那样能完成这个。
Copyright: NPACT |