Podcast
Questions and Answers
Какой из следующих функций позволяет создавать подкоммуникацию в MPI?
Какой из следующих функций позволяет создавать подкоммуникацию в MPI?
- MPI_Cart_sub (correct)
- MPI_Cart_get
- MPI_Graph_create
- MPI_Type_free
Какой аргумент необходим для функции MPI_Type_create_struct?
Какой аргумент необходим для функции MPI_Type_create_struct?
- float size
- char* name
- int count (correct)
- int order
Как можно проверить, какой тип топологии имеет коммуникатор?
Как можно проверить, какой тип топологии имеет коммуникатор?
- MPI_Graphdims_get
- MPI_Cartdim_get
- MPI_Typesize
- MPI_Topo_test (correct)
Какую информацию возвращает функция MPI_Graph_get?
Какую информацию возвращает функция MPI_Graph_get?
Что делает функция MPI_Cart_get?
Что делает функция MPI_Cart_get?
Какой тип данных используется для работы с адресами в MPI?
Какой тип данных используется для работы с адресами в MPI?
Какую функцию нужно использовать для определения количества соседей в графе?
Какую функцию нужно использовать для определения количества соседей в графе?
Какой из этих вариантов является правильным для создания одномерного массива в MPI?
Какой из этих вариантов является правильным для создания одномерного массива в MPI?
Какой аргумент требуется для функции MPI_Sendrecv?
Какой аргумент требуется для функции MPI_Sendrecv?
В какой функции используется 'recvcounts[]' как аргумент?
В какой функции используется 'recvcounts[]' как аргумент?
Что делает функция MPI_Reduce?
Что делает функция MPI_Reduce?
Какой аргумент необходим для функции MPI_Alltoallw?
Какой аргумент необходим для функции MPI_Alltoallw?
Какой из следующих аргументов не требуется для функции MPI_Alltoall?
Какой из следующих аргументов не требуется для функции MPI_Alltoall?
Что делает функция MPI_Igatherv?
Что делает функция MPI_Igatherv?
Какова основная цель функции MPI_Scatterv?
Какова основная цель функции MPI_Scatterv?
Какая из этих функций объединяет данные и передает результат всем процессам?
Какая из этих функций объединяет данные и передает результат всем процессам?
Какова роль аргумента 'root' в функциях MPI?
Какова роль аргумента 'root' в функциях MPI?
Что происходит, если использовать MPI_Reduce_scatter?
Что происходит, если использовать MPI_Reduce_scatter?
Какой аргумент необходим для функции MPI_Scan?
Какой аргумент необходим для функции MPI_Scan?
Что делает функция MPI_Allgather?
Что делает функция MPI_Allgather?
Какой аргумент нужен для указания типа сообщений в функции MPI_Iscatterv?
Какой аргумент нужен для указания типа сообщений в функции MPI_Iscatterv?
Какое значение может принимать аргумент 'reorder' в функции MPI_Cart_create?
Какое значение может принимать аргумент 'reorder' в функции MPI_Cart_create?
Какое значение возвращает функция MPI_Cart_rank?
Какое значение возвращает функция MPI_Cart_rank?
Какой оператор используется в функции MPI_Reduce_scatter для определения операции редукции?
Какой оператор используется в функции MPI_Reduce_scatter для определения операции редукции?
Flashcards
MPI_Alltoallw
MPI_Alltoallw
Функция MPI, которая отправляет и получает данные разного типа.
MPI_Reduce_scatter
MPI_Reduce_scatter
Функция MPI, которая выполняет параллельную операцию общего сокращения данных с рассеиванием результатов.
MPI_Iscatterv
MPI_Iscatterv
Функция MPI, которая выполняет асинхронную операцию рассеивания данных с заданным количеством элементов для каждого процесса.
MPI_Igatherv
MPI_Igatherv
Signup and view all the flashcards
MPI_Iallgatherv
MPI_Iallgatherv
Signup and view all the flashcards
MPI_Ialltoallv
MPI_Ialltoallv
Signup and view all the flashcards
MPI_Ialltoallw
MPI_Ialltoallw
Signup and view all the flashcards
MPI_Ireduce_scatter
MPI_Ireduce_scatter
Signup and view all the flashcards
MPI_Reduce
MPI_Reduce
Signup and view all the flashcards
MPI_Scan
MPI_Scan
Signup and view all the flashcards
MPI_Cart_sub (comm, remain_dims[], comm_new)
MPI_Cart_sub (comm, remain_dims[], comm_new)
Signup and view all the flashcards
MPI_Topo_test(comm, topo_type)
MPI_Topo_test(comm, topo_type)
Signup and view all the flashcards
MPI_Dims_create(nnodes, ndims, dims[])
MPI_Dims_create(nnodes, ndims, dims[])
Signup and view all the flashcards
MPI_Cart_get(comm, maxdims, dims[], periods[], coords[])
MPI_Cart_get(comm, maxdims, dims[], periods[], coords[])
Signup and view all the flashcards
MPI_Cartdim_get(comm, ndims)
MPI_Cartdim_get(comm, ndims)
Signup and view all the flashcards
MPI_Graph_create(comm_old, nnodes, index[], edges[], reorder, comm_graph)
MPI_Graph_create(comm_old, nnodes, index[], edges[], reorder, comm_graph)
Signup and view all the flashcards
MPI_Graph_get(comm, maxindex, maxedges, index[], edges[])
MPI_Graph_get(comm, maxindex, maxedges, index[], edges[])
Signup and view all the flashcards
MPI_Graph_neighbors_count(comm, rank, nneighbors)
MPI_Graph_neighbors_count(comm, rank, nneighbors)
Signup and view all the flashcards
Study Notes
Lecture 3
- MPI_Send function syntax:
int MPI_Send(void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm)
- MPI_Recv function syntax:
int MPI_Recv(void *buf, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm comm, MPI_Status *status)
- Status variable contains information about received messages (excluding COUNT)
status.MPI_SOURCE
,status.MPI_TAG
,status.MPI_ERROR
- COUNT is obtained using
int MPI_Get_count(MPI_Status *status, MPI_Datatype datatype, int *count)
MPI_Probe
checks if a message is available for receiving:int MPI_Probe (int source, int tag, MPI_Comm comm, MPI_Status *status)
Lecture 4
- Non-blocking communication functions use
MPI_Request *request
as the last argument MPI_Issend
function syntax:int MPI_Issend(void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request *request)
MPI_Wait
function waits for a request to complete:int MPI_Wait(MPI_Request *request, MPI_Status *status)
MPI_Waitany
waits for any request to complete:int MPI_Waitany(int count, MPI_Request array_of_requests [], int *index, MPI_Status *status)
MPI_Waitsome
waits for some requests to complete:int MPI_Waitsome (int incount, MPI_Request array_of_requests [], int *outcount, int array_of_indices(), MPI_Status array_of_statuses[])
MPI_Waitall
waits for all requests to complete:int MPI_Waitall(int count, MPI_Request array_of_requests [], MPI_Status array_of_statuses[])
MPI_Test
tests if a request is complete without blocking:int MPI_Test(MPI_Request *request, int *flag, MPI_Status *status)
Lecture 5
MPI_Barrier
synchronizes all processes in a communicator:int MPI_Barrier (MPI_Comm comm)
MPI_Wtime
returns the time elapsed since the MPI process started:double MPI_Wtime()
MPI_Abort
terminates the MPI process:int MPI_Abort(MPI_Comm comm, int errorcode)
MPI_Bcast
broadcasts data from one process to all other processes in a communicator:int MPI_Bcast(void *buf, int count, MPI_Datatype datatype, int root, MPI_Comm comm)
MPI_Scatter
scatters data from one process to multiple processes:int MPI_Scatter (void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm)
MPI_Gather
gathers data from multiple processes to one process:int MPI_Gather(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm)
Lecture 6
MPI_Sendrecv
combines send and receive operations:int MPI_Sendrecv(const void *sendbuf, int sendcount, MPI_Datatype sendtype, int dest, int sendtag, void *recvbuf, int recvcount, MPI_Datatype recvtype, int source, int recvtag, MPI_Comm comm, MPI_Status *status)
MPI_Sendrecv_replace
exchanges data and replaces it with received data:int MPI_Sendrecv_replace(void *buf, int count, MPI_Datatype datatype, int dest, int sendtag, int source, int recvtag, MPI_Comm comm, MPI_Status *status)
MPI_Allgather
gathers data from all processes to all processes:int MPI_Allgather(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, MPI_Comm comm)
MPI_Reduce
reduces data from all processes to one process:int MPI_Reduce(void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, int root, MPI_Comm comm)
MPI_Op_create
creates a user-defined operation:int MPI_Op_create(MPI_User_function *func, int commute, MPI_Op *op)
MPI_Allreduce
reduces data from all processes to all processes:int MPI_Allreduce(void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm)
Lecture 7
MPI_Scatterv
scatters data with varying element counts to different processes:int MPI_Scatterv (const void *sendbuf, const int sendcounts[], const int displs[], MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm)
MPI_Gatherv
gathers data with varying element counts from different processes to one process:int MPI_Gatherv (const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, const int recvcounts(), const int displs[], MPI_Datatype recvtype, int root, MPI_Comm comm)
MPI_Allgatherv
gathers data with varying element counts from all processes to all processes:int MPI_Allgatherv(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, const int recvcounts(), const int displs(), MPI_Datatype recvtype, MPI_Comm comm)
MPI_Alltoallv
performs all-to-all communication with potentially differing element counts:int MPI_Alltoallv (const void *sendbuf, const int sendcounts(), const int sdispls[], MPI_Datatype sendtype, void *recvbuf, const int recvcounts(), const int rdispls[], MPI_Datatype recvtype, MPI_Comm comm)
MPI_Reduce_scatter
reduces data collectively among processes:int MPI_Reduce_scatter (const void *sendbuf, void *recvbuf, const int recvcounts[], MPI_Datatype datatype, MPI_Op op, MPI_Comm comm)
Lecture 8
MPI_Iscatterv
,MPI_Igatherv
,MPI_Iallgatherv
,MPI_Ialltoallv
,MPI_Ialltoallw
,MPI_Ireduce_scatter
are non-blocking versions of the scatter, gather, all-gather, all-to-all functions
Lecture 9
MPI_Cart_create
creates a Cartesian topology:int MPI_Cart_create(MPI_Comm comm_old, int ndims, const int dims(), const int periods(), int reorder, MPI_Comm *comm_cart)
MPI_Cart_coords
,MPI_Cart_rank
,MPI_Cart_shift
functions related to Cartesian topologiesMPI_Cart_sub
creates a subcommunicator from a Cartesian communicator:int MPI_Cart_sub(MPI_Comm comm, const int remain_dims[], MPI_Comm *comm_new)
MPI_Topo_test
test for topology type:int MPI_Topo_test(MPI_Comm comm, int *topo_type)
Lecture 10
MPI_Graph_create
: creates graph topology:int MPI_Graph_create(MPI_Comm comm_old, int nnodes, const int index(), const int edges [], int reorder, MPI_Comm *comm_graph)
MPI_Graph_get
,MPI_Graphdims_get
,MPI_Graph_neighbors_count
,MPI_Graph_neighbors
functions related to graph topologies
Lecture 11
MPI_Type_contiguous
,MPI_Type_vector
,MPI_Type_create_struct
,MPI_Type_create_subarray
create derived datatypesMPI_Type_commit
,MPI_Type_free
manage derived datatypesMPI_Get_address
gets address of memory location:int MPI_Get_address(void *location, MPI_Aint *address)
MPI_Type_size
,MPI_Type_get_extent
,MPI_Type_create_resized
functions related to datatype manipulation
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.