The Intel Virtual Interface Architecture Developer's Guide describes three levels of conformance to the VIPL (VI Provider Library) API: Early Adopter; Functional; and Full conformance.
The Intel VI Architecture Conformance Suite tests an implementation's conformance to the VIPL API. The conformance suite, consisting of over 130000 lines of code, performs thousands of individual tests grouped into functional categories: 34 for Early Adopter; 134 for Functional Conformance; and 156 for Full Conformance. Basic VIPL semantic compliance, resource management, proper handling of error conditions, invalid inputs, and network stress tests are all included in the conformance suite.
M-VIA passes nearly all of the Early Adopter conformance tests on unreliable networks and includes RDMA Write capability. Reliable Delivery is planned. Let us know if you need Reliable Reception.
M-VIA almost achieves Functional Conformance and includes asynchronous error handling, remote disconnect notification, Protection Tag support, and completion queue resizing. The only missing functionality is peer-to-peer connection management.
There is also support for the additional functions provided at the Full Conformance level, including the Notify functions.
M-VIA is pthreads
compatible, enabling the development of multi-threaded
user applications. Operations performed within a multi-threaded application
on different VIs or CQs are inherently thread safe, but an application must
currently provide its own explicit locks if multiple threads access a single
VI or CQ. A fully thread safe VIPL is planned.
M-VIA passes 112 of the 134 Functional Conformance tests (plus 18 of the additional tests for Full Conformance) included in the Intel VI Architecture Conformance Suite Version 0.5. Nearly all the tests which M-VIA does not pass either contain bugs or calls to the peer-to-peer connection management routines. Details on the other failed tests are given below.
The following is a summary report from the Intel VI Architecture Conformance Suite Version 0.5. The tests which M-VIA does not pass (or have bugs) were excluded from the test run.
---------------------------------------------------------- P Pass F Fail V Requires additional manual verification of result U Unknown result code N No results found in test directory E Error (no such test directory) ---------------------------------------------------------- P tests/basic/InterfaceEA P tests/basic/CQWaitTO P tests/basic/CQreverse P tests/basic/CSDiscriminator P tests/basic/ConnectAcceptTO P tests/basic/ConnectReject P tests/basic/ConnectRequestINF P tests/basic/ConnectRequestTO P tests/basic/ConnectWaitTO P tests/basic/CreateCQ P tests/basic/CreateVi PV tests/basic/NSGet PV tests/basic/QueryNic P tests/basic/RdmaWrite P tests/basic/RecvCQNotify P tests/basic/RecvDS P tests/basic/RecvDSzero P tests/basic/RecvImmed P tests/basic/RecvNone P tests/basic/RecvNotify P tests/basic/RecvWaitTO P tests/basic/RegisterMem P tests/basic/RegisterMemOverlap P tests/basic/SendCQNotify P tests/basic/SendDS P tests/basic/SendDSzero P tests/basic/SendNone P tests/basic/SendNotify P tests/basic/SendRecv P tests/basic/SendRecvCQ P tests/basic/SendSelf P tests/basic/SetMemAttr P tests/basic/SetViAttrib P tests/basic/WriteDS P tests/basic/WriteDSzero P tests/basic/WriteSelf PV tests/error/CQDoneHanErr PV tests/error/CQNotifyHanErr PV tests/error/CQWaitHanErr PV tests/error/CloseNicErr P tests/error/ConnAccept1 PV tests/error/ConnAccept2 P tests/error/ConnAccept3 PV tests/error/ConnAccept4 PV tests/error/ConnAcceptCHanErr PV tests/error/ConnAcceptViHanErr PV tests/error/ConnRejectCHanErr PV tests/error/ConnectRequestErr PV tests/error/ConnectWaitErr PV tests/error/CreateCQErr PV tests/error/CreatePtagErr P tests/error/CreateViAttribErr PV tests/error/CreateViErr PV tests/error/DeregisterMemErr PV tests/error/DestroyCQErr PV tests/error/DestroyPtagErr P tests/error/DestroyPtagUseErr P tests/error/DestroyViDescErr PV tests/error/DestroyViParamErr PV tests/error/DisconnectErr PV tests/error/ErrorCallbackErr PV tests/error/NSAddrParamErr P tests/error/NSAddrSvcErr PV tests/error/NSInitErr PV tests/error/NSNameParamErr P tests/error/NSNameSvcErr PV tests/error/NSShutdownErr P tests/error/OpenNicErr PV tests/error/PostRecvErr PV tests/error/PostSendErr PV tests/error/QueryMemErr PV tests/error/QueryNicErr PV tests/error/QueryViErr PV tests/error/RecvDoneViHanErr P tests/error/RecvNotifyCQErr PV tests/error/RecvNotifyViHanErr P tests/error/RecvWaitCQErr PV tests/error/RecvWaitViHanErr PV tests/error/RegisterMemErr PV tests/error/ResizeCQErr PV tests/error/SendDoneViHanErr P tests/error/SendNotifyCQErr PV tests/error/SendNotifyViHanErr PV tests/error/SendWaitViHanErr PV tests/error/SetMemAttrErr PV tests/error/SetViAttrErr P tests/error/SetViAttrInvErr P tests/limit/CreateCQLimit P tests/limit/CreateCQOv P tests/limit/CreatePtagLimit P tests/limit/CreatePtagOv P tests/limit/CreateViLimit P tests/limit/CreateViOv PV tests/limit/OpenNicLimit P tests/limit/RegisterMemOv PV tests/stress/MultiCQ1 PV tests/stress/MultiCQ2 PV tests/stress/MultiCQ3 PV tests/stress/MultiCQ4 PV tests/stress/MultiThread1 PV tests/stress/MultiThread2 PV tests/stress/MultiThread3 PV tests/stress/MultiThread4 PV tests/stress/ResizeCQ P tests/async/ErrHCQ1 P tests/async/ErrHCQ2 PV tests/async/ErrHDefault P tests/async/ErrHRcvForm P tests/async/ErrHRcvLen P tests/async/ErrHRcvLen2 P tests/async/ErrHRcvPost2 P tests/async/ErrHRcvProt P tests/async/ErrHRcvProt2 P tests/async/ErrHRdwForm P tests/async/ErrHRdwLen P tests/async/ErrHRdwProt1 P tests/async/ErrHRdwProt2 P tests/async/ErrHRdwiForm P tests/async/ErrHRdwiLen P tests/async/ErrHRdwiProt1 P tests/async/ErrHRdwiProt2 P tests/async/ErrHRdwiProt3 P tests/async/ErrHRdwiRcvQEmpty P tests/async/ErrHSndForm P tests/async/ErrHSndLen P tests/async/ErrHSndLen2 PV tests/async/ErrHSndPost2 P tests/async/ErrHSndProt1 P tests/async/ErrHSndProt2 P tests/async/ErrHSndRcvQEmpty ---------------------------------------------------------- Passed: 77 Pass+Verify: 53 Failed: 0 Fail+Verify: 0 No results: 0 Unknown results: 0 Errors: 0 Total: 130
Of the 22 tests for Functional Conformance which M-VIA 1.0 does not pass, 13 contain calls to the unimplemented peer-to-peer connection functions or require a reliability network. Of the remaining 9, most are believed to be due to bugs in the conformance tests. However, there are two failed tests (both at the Early Adopter conformance level) which might be due to bugs in M-VIA:
F tests/stress/MultiVISend F tests/stress/CSconn
These two tests fail even though the 0.9.3 release of M-VIA documented them as passing. However, retesting M-VIA 0.9.3 on our current hardware has not shown these tests to pass.
Identifying and correcting the reasons for these failures is a high priority item with the M-VIA developers. However, we did not feel we should delay this release any longer since these failed tests don't correspond to common application behaviors:
MultiVISend
test is a stress test which has large number of
threads sending to the same VI as fast as possible. This test passes
when run over the M-VIA loopback device.
This suggests that the unreliability of the network
hardware might be the source of this failure. However the M-VIA
etherring code, executed for the ethernet NICs but not the loopback device,
could also be at fault.
CSconn
test is a stress test which has a large number of threads
opening connections to a server node as fast as possible.
As with MultiVISend
the unreliability of the underlying network is
suspected as the cause of this failure. However, due to a bug in the test,
this test does not run on the loopback device. So, there is less
evidence to support this theory.