71 .enable_mdtest =
false,
88 char *pmemaddr =
NULL;
94 fprintf(stdout,
"\nPMDK functionality can only be used with filePerProc functionality\n");
95 MPI_CHECK(MPI_Abort(MPI_COMM_WORLD, -1),
"MPI_Abort() error");
100 if((pmemaddr = pmem_map_file(testFileName, open_length,
101 PMEM_FILE_CREATE|PMEM_FILE_EXCL,
102 0666, &mapped_len, &is_pmem)) ==
NULL) {
103 fprintf(stdout,
"\nFailed to pmem_map_file for filename: %s in IOR_Create_PMDK\n", testFileName);
104 perror(
"pmem_map_file");
105 MPI_CHECK(MPI_Abort(MPI_COMM_WORLD, -1),
"MPI_Abort() error");
109 fprintf(stdout,
"\n is_pmem is %d\n",is_pmem);
110 fprintf(stdout,
"\npmem_map_file thinks the hardware being used is not pmem\n");
111 MPI_CHECK(MPI_Abort(MPI_COMM_WORLD, -1),
"MPI_Abort() error");
116 return((
void *)pmemaddr);
126 char *pmemaddr =
NULL;
132 fprintf(stdout,
"\nPMDK functionality can only be used with filePerProc functionality\n");
133 MPI_CHECK(MPI_Abort(MPI_COMM_WORLD, -1),
"MPI_Abort() error");
138 if((pmemaddr = pmem_map_file(testFileName, 0,
140 0666, &mapped_len, &is_pmem)) ==
NULL) {
141 fprintf(stdout,
"\nFailed to pmem_map_file for filename: %s\n in IOR_Open_PMDK", testFileName);
142 perror(
"pmem_map_file");
143 fprintf(stdout,
"\n %ld %ld\n",open_length, mapped_len);
144 MPI_CHECK(MPI_Abort(MPI_COMM_WORLD, -1),
"MPI_Abort() error");
148 fprintf(stdout,
"pmem_map_file thinks the hardware being used is not pmem\n");
149 MPI_CHECK(MPI_Abort(MPI_COMM_WORLD, -1),
"MPI_Abort() error");
152 return((
void *)pmemaddr);
164 long long remaining = (
long long)length;
165 char * ptr = (
char *)buffer;
168 long long offset_size;
174 pmem_memcpy_nodrain(&file[offset_size], ptr, length);
176 pmem_memcpy_persist(&file[offset_size], ptr, length);
179 memcpy(ptr, &file[offset_size], length);
205 pmem_unmap(fd, open_length);
217 sprintf(errmsg,
"[RANK %03d]:cannot delete file %s\n",
rank,testFileName);
218 if (unlink(testFileName) != 0)
WARN(errmsg);
229 struct stat stat_buf;
231 tmpMin, tmpMax, tmpSum;
233 fprintf(stdout,
"\nPMDK functionality can only be used with filePerProc functionality\n");
234 MPI_CHECK(MPI_Abort(MPI_COMM_WORLD, -1),
"MPI_Abort() error");
237 if (stat(testFileName, &stat_buf) != 0) {
238 ERR(
"cannot get status of written file");
240 aggFileSizeFromStat = stat_buf.st_size;
242 return(aggFileSizeFromStat);
IOR_offset_t segmentCount
static option_help options[]
#define MPI_CHECK(MPI_STATUS, MSG)
int aiori_posix_stat(const char *path, struct stat *buf, aiori_mod_opt_t *module_options)
char * aiori_get_version()
static void PMDK_xfer_hints(aiori_xfer_hint_t *params)
static IOR_offset_t PMDK_Xfer(int, aiori_fd_t *, IOR_size_t *, IOR_offset_t, IOR_offset_t, aiori_mod_opt_t *)
static void PMDK_Fsync(aiori_fd_t *, aiori_mod_opt_t *)
static aiori_fd_t * PMDK_Create(char *, int iorflags, aiori_mod_opt_t *)
IOR_offset_t transferSize
int aiori_posix_access(const char *path, int mode, aiori_mod_opt_t *module_options)
static aiori_xfer_hint_t * hints
int aiori_posix_rmdir(const char *path, aiori_mod_opt_t *module_options)
static void PMDK_Close(aiori_fd_t *, aiori_mod_opt_t *)
int aiori_posix_mkdir(const char *path, mode_t mode, aiori_mod_opt_t *module_options)
static aiori_fd_t * PMDK_Open(char *, int iorflags, aiori_mod_opt_t *)
int aiori_posix_statfs(const char *path, ior_aiori_statfs_t *stat_buf, aiori_mod_opt_t *module_options)
static void PMDK_Delete(char *, aiori_mod_opt_t *)
long long int IOR_offset_t
static option_help * PMDK_options()
static IOR_offset_t PMDK_GetFileSize(aiori_mod_opt_t *, char *)