summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMohamad Chaarawi <chaarawi@hdfgroup.org>2014-03-12 21:38:58 (GMT)
committerMohamad Chaarawi <chaarawi@hdfgroup.org>2014-03-12 21:38:58 (GMT)
commit9f23fb291d2a21d676d0d17823b5290654f2a4f2 (patch)
tree57a07a71403ca842db39f098b37b8a9d6ced6442
parente35427c3715748408384e8cad5af88f3671e3976 (diff)
downloadhdf5-9f23fb291d2a21d676d0d17823b5290654f2a4f2.zip
hdf5-9f23fb291d2a21d676d0d17823b5290654f2a4f2.tar.gz
hdf5-9f23fb291d2a21d676d0d17823b5290654f2a4f2.tar.bz2
[svn-r24788] update prefetch/evict examples.
-rw-r--r--examples/h5ff_client_evict_deltas.c50
-rw-r--r--examples/h5ff_client_prefetch.c45
2 files changed, 74 insertions, 21 deletions
diff --git a/examples/h5ff_client_evict_deltas.c b/examples/h5ff_client_evict_deltas.c
index f47a39b..65347a4 100644
--- a/examples/h5ff_client_evict_deltas.c
+++ b/examples/h5ff_client_evict_deltas.c
@@ -30,6 +30,8 @@ int main(int argc, char **argv) {
int provided;
MPI_Request mpi_req;
+ int32_t *wdata1 = NULL, *rdata1 = NULL;
+ int key, value, i;
H5ES_status_t status;
size_t num_events = 0;
herr_t ret;
@@ -51,6 +53,13 @@ int main(int argc, char **argv) {
MPI_Comm_size(MPI_COMM_WORLD, &my_size);
fprintf(stderr, "APP processes = %d, my rank is %d\n", my_size, my_rank);
+ wdata1 = malloc (sizeof(int32_t)*nelem);
+ rdata1 = malloc (sizeof(int32_t)*nelem);
+ for(i=0;i<nelem;++i) {
+ wdata1[i] = i;
+ rdata1[i] = 0;
+ }
+
fprintf(stderr, "Create the FAPL to set the IOD VOL plugin and create the file\n");
/* Choose the IOD VOL plugin to use with this file.
First we create a file access property list. Then we call a new routine to set
@@ -109,6 +118,9 @@ int main(int argc, char **argv) {
H5P_DEFAULT, tid1, e_stack);
assert(did >= 0);
+ ret = H5Dwrite_ff(did, dtid, H5S_ALL, H5S_ALL, H5P_DEFAULT, wdata1, tid1, e_stack);
+ assert(ret == 0);
+
ret = H5Tcommit_ff(file_id, "DT1", dtid, H5P_DEFAULT, H5P_DEFAULT,
H5P_DEFAULT, tid1, e_stack);
assert(ret == 0);
@@ -117,6 +129,16 @@ int main(int argc, char **argv) {
H5P_DEFAULT,H5P_DEFAULT,H5P_DEFAULT, tid1, e_stack);
assert(map >= 0);
+ /* write some KV pairs to each map object. */
+ {
+ key = 1;
+ value = 1000;
+ ret = H5Mset_ff(map, H5T_STD_I32LE, &key, H5T_STD_I32LE, &value,
+ H5P_DEFAULT, tid1, e_stack);
+ assert(ret == 0);
+
+ }
+
ret = H5TRfinish(tid1, H5P_DEFAULT, &rid_temp, e_stack);
assert(0 == ret);
@@ -194,8 +216,6 @@ int main(int argc, char **argv) {
map = H5Oopen_ff(file_id,"MAP1", H5P_DEFAULT, rid2);
assert(did);
- MPI_Barrier(MPI_COMM_WORLD);
-
if(0 == my_rank) {
ret = H5RCpersist(rid2, H5_EVENT_STACK_NULL);
assert(ret == 0);
@@ -203,12 +223,6 @@ int main(int argc, char **argv) {
MPI_Barrier(MPI_COMM_WORLD);
- if(my_rank == 0) {
- /* release container version 2. This is async. */
- ret = H5RCrelease(rid2, e_stack);
- assert(0 == ret);
- }
-
MPI_Barrier(MPI_COMM_WORLD);
if((my_size > 1 && 1 == my_rank) ||
@@ -221,10 +235,30 @@ int main(int argc, char **argv) {
ret = H5Mevict_ff(map, 2, H5P_DEFAULT, H5_EVENT_STACK_NULL);
assert(0 == ret);
+
+ /* see if we can read after evicting */
+ ret = H5Dread_ff(did, dtid, H5S_ALL, H5S_ALL, H5P_DEFAULT, rdata1, rid2, H5_EVENT_STACK_NULL);
+ assert(ret == 0);
+ printf("Read Data1: ");
+ for(i=0;i<nelem;++i)
+ printf("%d ",rdata1[i]);
+ printf("\n");
+
+ key = 1;
+ value = -1;
+ ret = H5Mget_ff(map, H5T_STD_I32LE, &key, H5T_STD_I32LE, &value,
+ H5P_DEFAULT, rid2, H5_EVENT_STACK_NULL);
+ printf("Value recieved = %d\n", value);
}
MPI_Barrier(MPI_COMM_WORLD);
+ if(my_rank == 0) {
+ /* release container version 2. This is async. */
+ ret = H5RCrelease(rid2, e_stack);
+ assert(0 == ret);
+ }
+
assert(H5Oclose_ff(gid, e_stack) == 0);
assert(H5Oclose_ff(did, e_stack) == 0);
assert(H5Oclose_ff(dtid, e_stack) == 0);
diff --git a/examples/h5ff_client_prefetch.c b/examples/h5ff_client_prefetch.c
index d3c119a..50a627b 100644
--- a/examples/h5ff_client_prefetch.c
+++ b/examples/h5ff_client_prefetch.c
@@ -10,7 +10,7 @@
#include "hdf5.h"
int main(int argc, char **argv) {
- const char file_name[]="eff_file_prefetch.h5";
+ const char file_name[]="eff_file_prefetch2.h5";
hid_t file_id;
hid_t gid;
hid_t did, map;
@@ -118,7 +118,7 @@ int main(int argc, char **argv) {
H5P_DEFAULT, tid1, e_stack);
assert(did >= 0);
- ret = H5Dwrite_ff(did, dtid, H5S_ALL, H5S_ALL, dxpl_id, wdata1, tid1, e_stack);
+ ret = H5Dwrite_ff(did, dtid, H5S_ALL, H5S_ALL, H5P_DEFAULT, wdata1, tid1, e_stack);
assert(ret == 0);
ret = H5Tcommit_ff(file_id, "DT1", dtid, H5P_DEFAULT, H5P_DEFAULT,
@@ -169,7 +169,7 @@ int main(int argc, char **argv) {
assert(H5Tclose_ff(dtid, e_stack) == 0);
assert(H5Dclose_ff(did, e_stack) == 0);
- /* release container version 2. This is async. */
+ /* release container version 1. This is async. */
ret = H5RCrelease(rid_temp, e_stack);
assert(0 == ret);
ret = H5RCclose(rid_temp);
@@ -188,14 +188,6 @@ int main(int argc, char **argv) {
H5ESclear(e_stack);
printf("%d events in event stack. Completion status = %d\n", num_events, status);
- if(0 == my_rank) {
- /* Close transaction object. Local op */
- ret = H5TRclose(tid2);
- assert(0 == ret);
- }
-
- MPI_Barrier(MPI_COMM_WORLD);
-
/* Process 0 tells other procs that container version 2 is acquired */
MPI_Bcast(&version, 1, MPI_UINT64_T, 0, MPI_COMM_WORLD);
assert(2 == version);
@@ -208,10 +200,16 @@ int main(int argc, char **argv) {
}
if(0 == my_rank) {
+ /* Close transaction object. Local op */
+ ret = H5TRclose(tid2);
+ assert(0 == ret);
+
ret = H5RCpersist(rid2, H5_EVENT_STACK_NULL);
assert(ret == 0);
}
+ MPI_Barrier(MPI_COMM_WORLD);
+
gid = H5Oopen_ff(file_id, "G1", H5P_DEFAULT, rid2);
assert(gid);
dtid = H5Oopen_ff(file_id, "DT1", H5P_DEFAULT, rid2);
@@ -225,9 +223,24 @@ int main(int argc, char **argv) {
if((my_size > 1 && 1 == my_rank) ||
(my_size == 1 && 0 == my_rank)) {
+ ret = H5Tevict_ff(dtid, 2, H5P_DEFAULT, H5_EVENT_STACK_NULL);
+ assert(0 == ret);
+
+ ret = H5Devict_ff(did, 2, H5P_DEFAULT, H5_EVENT_STACK_NULL);
+ assert(0 == ret);
+
+ ret = H5Mevict_ff(map, 2, H5P_DEFAULT, H5_EVENT_STACK_NULL);
+ assert(0 == ret);
+ }
+
+ MPI_Barrier(MPI_COMM_WORLD);
+
+ if((my_size > 1 && 1 == my_rank) ||
+ (my_size == 1 && 0 == my_rank)) {
hid_t mapl_id, tapl_id, dapl_id;
hrpl_t map_replica, dt_replica, dset_replica;
+ /* prefetch objects */
ret = H5Mprefetch_ff(map, rid2, &map_replica, H5P_DEFAULT, H5_EVENT_STACK_NULL);
assert(0 == ret);
printf("prefetched map with replica id %"PRIx64"\n", map_replica);
@@ -238,6 +251,7 @@ int main(int argc, char **argv) {
assert(0 == ret);
printf("prefetched dataset with replica id %"PRIx64"\n", dset_replica);
+ /* Read from prefetched Replicas */
/* set dxpl to read from replica in BB */
dxpl_id = H5Pcreate (H5P_DATASET_XFER);
ret = H5Pset_read_replica(dxpl_id, dset_replica);
@@ -250,6 +264,10 @@ int main(int argc, char **argv) {
printf("%d ",rdata1[i]);
printf("\n");
+ dxpl_id = H5Pcreate (H5P_DATASET_XFER);
+ ret = H5Pset_read_replica(dxpl_id, map_replica);
+ assert(0 == ret);
+
key = 1;
value = -1;
ret = H5Mget_ff(map, H5T_STD_I32LE, &key, H5T_STD_I32LE, &value,
@@ -258,6 +276,7 @@ int main(int argc, char **argv) {
H5Pclose(dxpl_id);
+ /* evict Replicas */
tapl_id = H5Pcreate (H5P_DATATYPE_ACCESS);
ret = H5Pset_evict_replica(tapl_id, dt_replica);
assert(0 == ret);
@@ -283,8 +302,8 @@ int main(int argc, char **argv) {
MPI_Barrier(MPI_COMM_WORLD);
if(my_rank == 0) {
- /* release container version 2. This is async. */
- ret = H5RCrelease(rid2, e_stack);
+ /* release container version 2. */
+ ret = H5RCrelease(rid2, H5_EVENT_STACK_NULL);
assert(0 == ret);
}