示例#1
0
#pragma warning restore 649

        /// <summary>
        /// ~
        /// </summary>
        public void Cancel(ref MPI_Request r)
        {
            int ierr;

            MPI_CANCEL(ref r, out ierr);
            MPIException.CheckReturnCode(ierr);
        }
示例#2
0
#pragma warning restore 649

        /// <summary>
        /// Gets the Status of a Request, which is only meaningful, if request is freed.
        /// Probably that's not the case, when this method is invoked.
        /// <paramref name="isSetted"/> indicates completed request.
        /// </summary>
        /// <param name="request">input</param>
        /// <param name="isSetted">states if status is available</param>
        /// <param name="status">output</param>
        public void MPI_GetStatusOfRequest(MPI_Request request, out bool isSetted, out MPI_Status status)
        {
            int ierr, flag;

            MPI_REQUEST_GET_STATUS(ref request, out flag, out status, out ierr);
            isSetted = flag != 0;
            MPIException.CheckReturnCode(ierr);
        }
示例#3
0
#pragma warning restore 649

        /// <summary>
        ///
        /// </summary>
        public void Issend(IntPtr buf, int count, MPI_Datatype datatype,
                           int dest, int tag,
                           MPI_Comm comm,
                           out MPI_Request request)
        {
            int ierr;

            MPI_ISSEND(buf, ref count, ref datatype, ref dest, ref tag, ref comm, out request, out ierr);
            MPIException.CheckReturnCode(ierr);
        }
示例#4
0
#pragma warning restore 649

        /// <summary>
        ///
        /// </summary>
        public void Irecv(IntPtr buf, int count, MPI_Datatype datatype,
                          int source, int tag,
                          MPI_Comm comm,
                          out MPI_Request request)
        {
            int ierr;

            MPI_IRECV(buf, ref count, ref datatype, ref source, ref tag, ref comm, out request, out ierr);
            MPIException.CheckReturnCode(ierr);
        }
示例#5
0
        private void LoadSymb(string name, ref MPI_Request sym)
        {
            string errstr;
            IntPtr addr = Utils.DynamicLibraries.LoadSymbol(m_conv.LibHandle, name, out errstr);

            if (addr == IntPtr.Zero)
            {
                throw new ApplicationException("OpenMPI error: unable to load symbol '" + name + "' from library '" + m_conv.CurrentLibraryName + "', Error string: >" + errstr + "<;");
            }
            //Console.WriteLine("val of '" + name + "' is: " + addr);
            sym.m1 = m_conv.MPI_Request_c2f(addr);
        }