3.6 缓存分配和使用方法 | ![]() ![]() |
一个用户可指定一个缓存用于缓存以缓存模式发送的消息。由发送者完成缓存。
MPI_BUFFER_ATTACH( buffer, size)
IN buffer 初始缓存地址(选择类型)
IN size 按字节计数缓存尺寸(整型)
int MPI_Buffer_attach( void* buffer, int size)
MPI_BUFFER_ATTACH( BUFFER, SIZE, IERROR)
<type>BUFFERR(*)
INTEGER SIZE, IERROR
给MPI在用户存储空间提供一个缓存, 用于缓存正出发的消息。这个缓存只能用于以缓存模式发送的消息。同一时间一个进程只能联结一个缓存。
MPI_BUFFER_DETACH( buffer, size)
OUT buffer 初始缓存地址(选择类型)
OUT size 安字节计数缓存尺寸(整型)
int MPI_Buffer_detach( void** buffer, int* size)
MPI_BUFFER_DETACH( BUFFER, SIZE, IERROR)
<type>BUFFER(*)
INTEGER SIZE, IERROR
解出与MPI当前联结的缓存。这个操作将阻塞,一直到当前在缓存中全部消息已被传送完。在这个函数返回时,用户可以再使用或解出分配这个缓存所占用的空间。
这节的语句描述了MPI缓存模式发送的行为。当没有缓存被联结时,MPI以零尺寸缓存与进程联结。
在指定的缓存空间, 使用一个环型的连续空间分配策略, MPI必须为正出发的消息提供多缓存, 正出发的消息数据被发送进程缓存。下面我们概述一个定义这个策的模型实现。MPI可以提供更多的缓存, 可使用比下面描述的更好的缓存分配算法。另一方面,当下面描述的简单的缓存分配器用完空间时,MPI可发错误信号。特别是,如果与进程没有显式联结的缓存,那么任何缓存型发送可引起一个错误。
MPI不给标准模式发送的缓存提供查寻或控制机制。生产商将给他们的实现提供这样的信息。
基本原理. 缓存通信有一个广泛的可能实现的范围: 缓存可以在发送者完成,在接收者完成或两者都完成;缓存能被指定给一对发送-接收,或由所有通信共享;可以实存或虚存实现缓存;它可以用指定的存储器或由其他进程共享的存储器;缓存空间可以被静态地分配或被动态地修改;等等。给和所有这些选择兼容的缓存提供查寻和控制的可移植机制,并提供有意义的信息,这似乎是不容易的。(基本原理结束)。
Copyright: NPACT |
![]() ![]() |