X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/998dfc15cf89b4e8ebba31507b4e9dbd86784e1c..8886e06558103ffcb66db5039f010eaad20aa854:/include/smpi/smpi.h diff --git a/include/smpi/smpi.h b/include/smpi/smpi.h index a4a815a0f8..c6540cde10 100644 --- a/include/smpi/smpi.h +++ b/include/smpi/smpi.h @@ -1,3 +1,9 @@ +/* Copyright (c) 2007, 2008, 2009, 2010. The SimGrid Team. + * All rights reserved. */ + +/* This program is free software; you can redistribute it and/or modify it + * under the terms of the license (GNU LGPL) which comes with this package. */ + #ifndef SMPI_H #define SMPI_H @@ -23,6 +29,7 @@ SG_BEGIN_DECL() #define SMPI_RAND_SEED 5 #define MPI_ANY_SOURCE -1 +#define MPI_PROC_NULL -2 #define MPI_ANY_TAG -1 #define MPI_UNDEFINED -1 @@ -45,6 +52,8 @@ SG_BEGIN_DECL() #define MPI_UNEQUAL 2 #define MPI_CONGRUENT 3 +#define MPI_WTIME_IS_GLOBAL 1 + typedef ptrdiff_t MPI_Aint; typedef long long MPI_Offset; @@ -55,8 +64,7 @@ typedef struct { int MPI_SOURCE; int MPI_TAG; int MPI_ERROR; - int _count; - int _cancelled; + int count; } MPI_Status; #define MPI_STATUS_IGNORE NULL @@ -149,8 +157,12 @@ XBT_PUBLIC(int) MPI_Is_thread_main(int* flag); XBT_PUBLIC(int) MPI_Abort(MPI_Comm comm, int errorcode); XBT_PUBLIC(double) MPI_Wtime(void); -XBT_PUBLIC(int) MPI_Type_size(MPI_Datatype datatype, size_t* size); +XBT_PUBLIC(int) MPI_Address(void *location, MPI_Aint *address); + +XBT_PUBLIC(int) MPI_Type_free(MPI_Datatype* datatype); +XBT_PUBLIC(int) MPI_Type_size(MPI_Datatype datatype, int* size); XBT_PUBLIC(int) MPI_Type_get_extent(MPI_Datatype datatype, MPI_Aint* lb, MPI_Aint* extent); +XBT_PUBLIC(int) MPI_Type_extent(MPI_Datatype datatype, MPI_Aint* extent); XBT_PUBLIC(int) MPI_Type_lb(MPI_Datatype datatype, MPI_Aint* disp); XBT_PUBLIC(int) MPI_Type_ub(MPI_Datatype datatype, MPI_Aint* disp); @@ -173,6 +185,7 @@ XBT_PUBLIC(int) MPI_Group_range_excl(MPI_Group group, int n, int ranges[][3], MP XBT_PUBLIC(int) MPI_Comm_rank(MPI_Comm comm, int* rank); XBT_PUBLIC(int) MPI_Comm_size(MPI_Comm comm, int* size); XBT_PUBLIC(int) MPI_Get_processor_name(char *name, int *resultlen); +XBT_PUBLIC(int) MPI_Get_count(MPI_Status* status, MPI_Datatype datatype, int* count); XBT_PUBLIC(int) MPI_Comm_group(MPI_Comm comm, MPI_Group* group); XBT_PUBLIC(int) MPI_Comm_compare(MPI_Comm comm1, MPI_Comm comm2, int* result); @@ -180,6 +193,11 @@ XBT_PUBLIC(int) MPI_Comm_dup(MPI_Comm comm, MPI_Comm* newcomm); XBT_PUBLIC(int) MPI_Comm_create(MPI_Comm comm, MPI_Group group, MPI_Comm* newcomm); XBT_PUBLIC(int) MPI_Comm_free(MPI_Comm* comm); +XBT_PUBLIC(int) MPI_Send_init(void* buf, int count, MPI_Datatype datatype, int dst, int tag, MPI_Comm comm, MPI_Request* request); +XBT_PUBLIC(int) MPI_Recv_init(void* buf, int count, MPI_Datatype datatype, int src, int tag, MPI_Comm comm, MPI_Request* request); +XBT_PUBLIC(int) MPI_Start(MPI_Request* request); +XBT_PUBLIC(int) MPI_Startall(int count, MPI_Request* requests); +XBT_PUBLIC(int) MPI_Request_free(MPI_Request* request); XBT_PUBLIC(int) MPI_Irecv(void* buf, int count, MPI_Datatype datatype, int src, int tag, MPI_Comm comm, MPI_Request* request); XBT_PUBLIC(int) MPI_Isend(void* buf, int count, MPI_Datatype datatype, int dst, int tag, MPI_Comm comm, MPI_Request* request); XBT_PUBLIC(int) MPI_Recv(void* buf, int count, MPI_Datatype datatype, int src, int tag, MPI_Comm comm, MPI_Status* status); @@ -188,7 +206,6 @@ XBT_PUBLIC(int) MPI_Sendrecv(void* sendbuf, int sendcount, MPI_Datatype sendtype XBT_PUBLIC(int) MPI_Sendrecv_replace(void* buf, int count, MPI_Datatype datatype, int dst, int sendtag, int src, int recvtag, MPI_Comm comm, MPI_Status* status); -XBT_PUBLIC(int) MPI_Get_count(MPI_Status *status, MPI_Datatype datatype, int *count); XBT_PUBLIC(int) MPI_Test(MPI_Request* request, int* flag, MPI_Status* status); XBT_PUBLIC(int) MPI_Testany(int count, MPI_Request requests[], int* index, int* flag, MPI_Status* status); XBT_PUBLIC(int) MPI_Wait(MPI_Request* request, MPI_Status* status); @@ -206,6 +223,7 @@ XBT_PUBLIC(int) MPI_Scatter(void* sendbuf, int sendcount, MPI_Datatype sendtype, XBT_PUBLIC(int) MPI_Scatterv(void* sendbuf, int* sendcounts, int* displs, MPI_Datatype sendtype, void* recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm); XBT_PUBLIC(int) MPI_Reduce(void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype, MPI_Op op, int root, MPI_Comm comm); XBT_PUBLIC(int) MPI_Allreduce(void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm); +XBT_PUBLIC(int) MPI_Scan(void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm); XBT_PUBLIC(int) MPI_Reduce_scatter(void* sendbuf, void* recvbuf, int* recvcounts, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm); XBT_PUBLIC(int) MPI_Alltoall(void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount, MPI_Datatype recvtype, MPI_Comm comm); XBT_PUBLIC(int) MPI_Alltoallv(void* sendbuf, int* sendcounts, int* senddisps, MPI_Datatype sendtype, void* recvbuf, int *recvcounts, int* recvdisps, MPI_Datatype recvtype, MPI_Comm comm); @@ -219,19 +237,28 @@ XBT_PUBLIC(int) MPI_Comm_split(MPI_Comm comm, int color, int key, XBT_IMPORT_NO_EXPORT(int) smpi_simulated_main(int argc, char** argv); XBT_PUBLIC(MPI_Comm) smpi_process_comm_self(void); /* -XBT_PUBLIC(unsigned int) smpi_sleep(unsigned int); XBT_PUBLIC(void) smpi_exit(int); -XBT_PUBLIC(int) smpi_gettimeofday(struct timeval* tv, struct timezone* tz); */ -/* -TODO -XBT_PUBLIC(void) smpi_do_once_1(const char* file, int line); -XBT_PUBLIC(int) smpi_do_once_2(void); -XBT_PUBLIC(void) smpi_do_once_3(void); +XBT_PUBLIC(unsigned int) smpi_sleep(unsigned int secs); +XBT_PUBLIC(int) smpi_gettimeofday(struct timeval* tv, struct timezone* tz); +XBT_PUBLIC(void) smpi_sample_1(int global, const char* file, int line, int max); +XBT_PUBLIC(int) smpi_sample_2(int global, const char* file, int line); +XBT_PUBLIC(void) smpi_sample_3(int global, const char* file, int line); -#define SMPI_DO_ONCE for (smpi_do_once_1(__FILE__, __LINE__); smpi_do_once_2(); smpi_do_once_3()) -*/ +#define SMPI_SAMPLE_LOCAL(num) for(smpi_sample_1(0, __FILE__, __LINE__, num); \ + smpi_sample_2(0, __FILE__, __LINE__); \ + smpi_sample_3(0, __FILE__, __LINE__)) + +#define SMPI_SAMPLE_GLOBAL(num) for(smpi_sample_1(1, __FILE__, __LINE__, num); \ + smpi_sample_2(1, __FILE__, __LINE__); \ + smpi_sample_3(1, __FILE__, __LINE__)) + +XBT_PUBLIC(void*) smpi_shared_malloc(size_t size, const char* file, int line); +#define SMPI_SHARED_MALLOC(size) smpi_shared_malloc(size, __FILE__, __LINE__) + +XBT_PUBLIC(void) smpi_shared_free(void* data); +#define SMPI_SHARED_FREE(data) smpi_shared_free(data) SG_END_DECL() #endif