Skip to content

Commit 8932387

Browse files
committed
Merge pull request #4 from jsquyres/edgargabriel-pr/sharedfp-sm-logic3
Commits on top of #745
2 parents 4f85e0d + 3e6694f commit 8932387

10 files changed

+188
-202
lines changed

ompi/mca/sharedfp/sm/sharedfp_sm.c

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -83,14 +83,14 @@ struct mca_sharedfp_base_module_1_0_0_t * mca_sharedfp_sm_component_file_query(m
8383
ompi_group_t *group = comm->c_local_group;
8484

8585
for (i = 0; i < size; ++i) {
86-
proc = ompi_group_peer_lookup(group,i);
87-
if (!OPAL_PROC_ON_LOCAL_NODE(proc->super.proc_flags)){
88-
opal_output(ompi_sharedfp_base_framework.framework_output,
89-
"mca_sharedfp_sm_component_file_query: Disqualifying myself: (%d/%s) "
90-
"not all processes are on the same node.",
91-
comm->c_contextid, comm->c_name);
92-
return NULL;
93-
}
86+
proc = ompi_group_peer_lookup(group,i);
87+
if (!OPAL_PROC_ON_LOCAL_NODE(proc->super.proc_flags)){
88+
opal_output(ompi_sharedfp_base_framework.framework_output,
89+
"mca_sharedfp_sm_component_file_query: Disqualifying myself: (%d/%s) "
90+
"not all processes are on the same node.",
91+
comm->c_contextid, comm->c_name);
92+
return NULL;
93+
}
9494
}
9595
/* This module can run */
9696
*priority = mca_sharedfp_sm_priority;

ompi/mca/sharedfp/sm/sharedfp_sm.h

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
* Copyright (c) 2004-2005 The Regents of the University of California.
1111
* All rights reserved.
1212
* Copyright (c) 2008-2015 University of Houston. All rights reserved.
13+
* Copyright (c) 2015 Cisco Systems, Inc. All rights reserved.
1314
* $COPYRIGHT$
1415
*
1516
* Additional copyrights may follow
@@ -101,7 +102,7 @@ int mca_sharedfp_sm_iwrite (mca_io_ompio_file_t *fh,
101102
*Structures and definitions only for this component
102103
*--------------------------------------------------------------*/
103104
struct mca_sharedfp_sm_offset{
104-
sem_t mutex; /* the mutex: a Posix memory-based unnamed semaphore */
105+
sem_t mutex; /* the mutex: a POSIX memory-based unnamed semaphore */
105106
long long offset; /* and the shared file pointer offset */
106107
};
107108

@@ -113,7 +114,10 @@ struct mca_sharedfp_sm_data
113114
struct mca_sharedfp_sm_offset * sm_offset_ptr;
114115
/*save filename so that we can remove the file on close*/
115116
char * sm_filename;
116-
sem_t *mutex; /* the mutex: a Posix memory-based named semaphore */
117+
/* The mutex: it will either point to a POSIX memory-based named
118+
semaphore, or it will point to the a POSIX memory-based unnamed
119+
semaphore located in sm_offset_ptr->mutex. */
120+
sem_t *mutex;
117121
char *sem_name; /* Name of the semaphore */
118122
};
119123

ompi/mca/sharedfp/sm/sharedfp_sm_file_open.c

Lines changed: 42 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
* Copyright (c) 2013 Intel, Inc. All rights reserved.
1414
* Copyright (c) 2015 Research Organization for Information Science
1515
* and Technology (RIST). All rights reserved.
16+
* Copyright (c) 2015 Cisco Systems, Inc. All rights reserved.
1617
* $COPYRIGHT$
1718
*
1819
* Additional copyrights may follow
@@ -71,27 +72,27 @@ int mca_sharedfp_sm_file_open (struct ompi_communicator_t *comm,
7172

7273
/*Memory is allocated here for the sh structure*/
7374
if ( mca_sharedfp_sm_verbose ) {
74-
printf( "mca_sharedfp_sm_file_open: malloc f_sharedfp_ptr struct\n");
75+
printf( "mca_sharedfp_sm_file_open: malloc f_sharedfp_ptr struct\n");
7576
}
7677

7778
sh = (struct mca_sharedfp_base_data_t*)malloc(sizeof(struct mca_sharedfp_base_data_t));
7879
if ( NULL == sh ) {
79-
opal_output(0, "mca_sharedfp_sm_file_open: Error, unable to malloc f_sharedfp_ptr struct\n");
80-
free(shfileHandle);
81-
return OMPI_ERR_OUT_OF_RESOURCE;
80+
opal_output(0, "mca_sharedfp_sm_file_open: Error, unable to malloc f_sharedfp_ptr struct\n");
81+
free(shfileHandle);
82+
return OMPI_ERR_OUT_OF_RESOURCE;
8283
}
8384

8485
/*Populate the sh file structure based on the implementation*/
85-
sh->sharedfh = shfileHandle; /* Shared file pointer*/
86-
sh->global_offset = 0; /* Global Offset*/
87-
sh->comm = comm; /* Communicator*/
86+
sh->sharedfh = shfileHandle; /* Shared file pointer*/
87+
sh->global_offset = 0; /* Global Offset*/
88+
sh->comm = comm; /* Communicator*/
8889
sh->selected_module_data = NULL;
8990

9091
rank = ompi_comm_rank ( sh->comm );
9192

9293
/*Open a shared memory segment which will hold the shared file pointer*/
9394
if ( mca_sharedfp_sm_verbose ) {
94-
printf( "mca_sharedfp_sm_file_open: allocatge shared memory segment.\n");
95+
printf( "mca_sharedfp_sm_file_open: allocatge shared memory segment.\n");
9596
}
9697

9798

@@ -139,21 +140,21 @@ int mca_sharedfp_sm_file_open (struct ompi_communicator_t *comm,
139140

140141
/*TODO: is it necessary to write to the file first?*/
141142
if( 0 == rank ){
142-
memset ( &sm_offset, 0, sizeof (struct mca_sharedfp_sm_offset ));
143-
write ( sm_fd, &sm_offset, sizeof(struct mca_sharedfp_sm_offset));
143+
memset ( &sm_offset, 0, sizeof (struct mca_sharedfp_sm_offset ));
144+
write ( sm_fd, &sm_offset, sizeof(struct mca_sharedfp_sm_offset));
144145
}
145146
comm->c_coll.coll_barrier (comm, comm->c_coll.coll_barrier_module );
146147

147148
/*the file has been written to, now we can map*/
148149
sm_offset_ptr = mmap(NULL, sizeof(struct mca_sharedfp_sm_offset), PROT_READ | PROT_WRITE,
149-
MAP_SHARED, sm_fd, 0);
150+
MAP_SHARED, sm_fd, 0);
150151

151152
close(sm_fd);
152153

153154
if ( sm_offset_ptr==MAP_FAILED){
154-
err = OMPI_ERROR;
155-
printf("mca_sharedfp_sm_file_open: Error, unable to mmap file: %s\n",sm_filename);
156-
printf("%s\n", strerror(errno));
155+
err = OMPI_ERROR;
156+
printf("mca_sharedfp_sm_file_open: Error, unable to mmap file: %s\n",sm_filename);
157+
printf("%s\n", strerror(errno));
157158
free(sm_filename);
158159
free(sm_data);
159160
free(sh);
@@ -170,37 +171,32 @@ int mca_sharedfp_sm_file_open (struct ompi_communicator_t *comm,
170171

171172
if( (sm_data->mutex = sem_open(sm_data->sem_name, O_CREAT, 0644, 1)) != SEM_FAILED ) {
172173
#elif defined(HAVE_SEM_INIT)
174+
sm_data->mutex = &sm_offset_ptr->mutex;
173175
if(sem_init(&sm_offset_ptr->mutex, 1, 1) != -1){
174176
#endif
175-
/*If opening was successful*/
176-
/*Store the new file handle*/
177-
sm_data->sm_offset_ptr = sm_offset_ptr;
178-
/* Assign the sm_data to sh->selected_module_data*/
179-
sh->selected_module_data = sm_data;
180-
/*remember the shared file handle*/
181-
fh->f_sharedfp_data = sh;
182-
183-
/*write initial zero*/
184-
if(rank==0){
185-
MPI_Offset position=0;
186-
187-
#if defined(HAVE_SEM_OPEN)
188-
sem_wait(sm_data->mutex);
189-
sm_offset_ptr->offset=position;
190-
sem_post(sm_data->mutex);
191-
#elif defined(HAVE_SEM_INIT)
192-
sem_wait(&sm_offset_ptr->mutex);
193-
sm_offset_ptr->offset=position;
194-
sem_post(&sm_offset_ptr->mutex);
195-
#endif
196-
}
177+
/*If opening was successful*/
178+
/*Store the new file handle*/
179+
sm_data->sm_offset_ptr = sm_offset_ptr;
180+
/* Assign the sm_data to sh->selected_module_data*/
181+
sh->selected_module_data = sm_data;
182+
/*remember the shared file handle*/
183+
fh->f_sharedfp_data = sh;
184+
185+
/*write initial zero*/
186+
if(rank==0){
187+
MPI_Offset position=0;
188+
189+
sem_wait(sm_data->mutex);
190+
sm_offset_ptr->offset=position;
191+
sem_post(sm_data->mutex);
192+
}
197193
}else{
198194
free(sm_filename);
199-
free(sm_data);
200-
free(sh);
201-
free(shfileHandle);
195+
free(sm_data);
196+
free(sh);
197+
free(shfileHandle);
202198
munmap(sm_offset_ptr, sizeof(struct mca_sharedfp_sm_offset));
203-
err = OMPI_ERROR;
199+
err = OMPI_ERROR;
204200
}
205201

206202
comm->c_coll.coll_barrier (comm, comm->c_coll.coll_barrier_module );
@@ -217,9 +213,9 @@ int mca_sharedfp_sm_file_close (mca_io_ompio_file_t *fh)
217213
struct mca_sharedfp_sm_data * file_data=NULL;
218214

219215
if( NULL == fh->f_sharedfp_data ){
220-
if ( mca_sharedfp_sm_verbose ) {
221-
printf("sharedfp_sm_file_close: shared file pointer structure not initialized\n");
222-
}
216+
if ( mca_sharedfp_sm_verbose ) {
217+
printf("sharedfp_sm_file_close: shared file pointer structure not initialized\n");
218+
}
223219
return OMPI_SUCCESS;
224220
}
225221
sh = fh->f_sharedfp_data;
@@ -236,10 +232,10 @@ int mca_sharedfp_sm_file_close (mca_io_ompio_file_t *fh)
236232
if (file_data->sm_offset_ptr) {
237233
/* destroy semaphore */
238234
#if defined(HAVE_SEM_OPEN)
239-
sem_unlink (file_data->sem_name);
240-
free (file_data->sem_name);
235+
sem_unlink (file_data->sem_name);
236+
free (file_data->sem_name);
241237
#elif defined(HAVE_SEM_INIT)
242-
sem_destroy(&file_data->sm_offset_ptr->mutex);
238+
sem_destroy(&file_data->sm_offset_ptr->mutex);
243239
#endif
244240
/*Release the shared memory segment.*/
245241
munmap(file_data->sm_offset_ptr,sizeof(struct mca_sharedfp_sm_offset));

ompi/mca/sharedfp/sm/sharedfp_sm_get_position.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ mca_sharedfp_sm_get_position(mca_io_ompio_file_t *fh,
3737

3838
if(fh->f_sharedfp_data==NULL){
3939
opal_output(ompi_sharedfp_base_framework.framework_output,
40-
"sharedfp_sm_write - opening the shared file pointer\n");
40+
"sharedfp_sm_write - opening the shared file pointer\n");
4141
shared_fp_base_module = fh->f_sharedfp;
4242

4343
ret = shared_fp_base_module->sharedfp_file_open(fh->f_comm,

ompi/mca/sharedfp/sm/sharedfp_sm_iread.c

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,10 @@
2626
#include "ompi/mca/sharedfp/sharedfp.h"
2727

2828
int mca_sharedfp_sm_iread(mca_io_ompio_file_t *fh,
29-
void *buf,
30-
int count,
31-
ompi_datatype_t *datatype,
32-
MPI_Request * request)
29+
void *buf,
30+
int count,
31+
ompi_datatype_t *datatype,
32+
MPI_Request * request)
3333
{
3434
int ret = OMPI_SUCCESS;
3535
OMPI_MPI_OFFSET_TYPE offset = 0;
@@ -39,9 +39,9 @@ int mca_sharedfp_sm_iread(mca_io_ompio_file_t *fh,
3939
mca_sharedfp_base_module_t * shared_fp_base_module = NULL;
4040

4141
if( NULL == fh->f_sharedfp_data){
42-
if ( mca_sharedfp_sm_verbose ) {
43-
printf("sharedfp_sm_iread: opening the shared file pointer\n");
44-
}
42+
if ( mca_sharedfp_sm_verbose ) {
43+
printf("sharedfp_sm_iread: opening the shared file pointer\n");
44+
}
4545
shared_fp_base_module = fh->f_sharedfp;
4646

4747
ret = shared_fp_base_module->sharedfp_file_open(fh->f_comm,
@@ -63,15 +63,15 @@ int mca_sharedfp_sm_iread(mca_io_ompio_file_t *fh,
6363
sh = fh->f_sharedfp_data;
6464

6565
if ( mca_sharedfp_sm_verbose ) {
66-
printf("sharedfp_sm_iread: Bytes Requested is %ld\n",bytesRequested);
66+
printf("sharedfp_sm_iread: Bytes Requested is %ld\n",bytesRequested);
6767
}
6868
/*Request the offset to write bytesRequested bytes*/
6969
ret = mca_sharedfp_sm_request_position(sh,bytesRequested,&offset);
7070

7171
if ( -1 != ret ) {
72-
if ( mca_sharedfp_sm_verbose ) {
73-
printf("sharedfp_sm_iread: Offset received is %lld\n",offset);
74-
}
72+
if ( mca_sharedfp_sm_verbose ) {
73+
printf("sharedfp_sm_iread: Offset received is %lld\n",offset);
74+
}
7575
/* Read the file */
7676
ret = ompio_io_ompio_file_iread_at(sh->sharedfh,offset,buf,count,datatype,request);
7777
}
@@ -90,8 +90,8 @@ int mca_sharedfp_sm_read_ordered_begin(mca_io_ompio_file_t *fh,
9090

9191

9292
int mca_sharedfp_sm_read_ordered_end(mca_io_ompio_file_t *fh,
93-
void *buf,
94-
ompi_status_public_t *status)
93+
void *buf,
94+
ompi_status_public_t *status)
9595
{
9696
opal_output(0,"mca_sharedfp_sm_read_ordered_end: NOT IMPLEMENTED\n");
9797
return OMPI_ERROR;

ompi/mca/sharedfp/sm/sharedfp_sm_iwrite.c

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -39,20 +39,20 @@ int mca_sharedfp_sm_iwrite(mca_io_ompio_file_t *fh,
3939
mca_sharedfp_base_module_t * shared_fp_base_module = NULL;
4040

4141
if( NULL == fh->f_sharedfp_data){
42-
if ( mca_sharedfp_sm_verbose ) {
43-
printf("sharedfp_sm_iwrite - opening the shared file pointer\n");
44-
}
45-
shared_fp_base_module = fh->f_sharedfp;
42+
if ( mca_sharedfp_sm_verbose ) {
43+
printf("sharedfp_sm_iwrite - opening the shared file pointer\n");
44+
}
45+
shared_fp_base_module = fh->f_sharedfp;
4646

47-
ret = shared_fp_base_module->sharedfp_file_open(fh->f_comm,
48-
fh->f_filename,
49-
fh->f_amode,
50-
fh->f_info,
51-
fh);
52-
if ( OMPI_SUCCESS != ret ) {
53-
opal_output(0,"sharedfp_sm_iwrite - error opening the shared file pointer\n");
54-
return ret;
55-
}
47+
ret = shared_fp_base_module->sharedfp_file_open(fh->f_comm,
48+
fh->f_filename,
49+
fh->f_amode,
50+
fh->f_info,
51+
fh);
52+
if ( OMPI_SUCCESS != ret ) {
53+
opal_output(0,"sharedfp_sm_iwrite - error opening the shared file pointer\n");
54+
return ret;
55+
}
5656
}
5757

5858
/* Calculate the number of bytes to write */
@@ -63,15 +63,15 @@ int mca_sharedfp_sm_iwrite(mca_io_ompio_file_t *fh,
6363
sh = fh->f_sharedfp_data;
6464

6565
if ( mca_sharedfp_sm_verbose ) {
66-
printf("sharedfp_sm_iwrite: Bytes Requested is %ld\n",bytesRequested);
66+
printf("sharedfp_sm_iwrite: Bytes Requested is %ld\n",bytesRequested);
6767
}
6868
/* Request the offset to write bytesRequested bytes */
6969
ret = mca_sharedfp_sm_request_position(sh,bytesRequested,&offset);
7070

7171
if ( -1 != ret ) {
72-
if ( mca_sharedfp_sm_verbose ) {
73-
printf("sharedfp_sm_iwrite: Offset received is %lld\n",offset);
74-
}
72+
if ( mca_sharedfp_sm_verbose ) {
73+
printf("sharedfp_sm_iwrite: Offset received is %lld\n",offset);
74+
}
7575
/* Write to the file */
7676
ret = ompio_io_ompio_file_iwrite_at(sh->sharedfh,offset,buf,count,datatype,request);
7777
}

0 commit comments

Comments
 (0)