1/* This is part of the netCDF package.
2   Copyright 2005 University Corporation for Atmospheric Research/Unidata
3   See COPYRIGHT file for conditions of use.
4
5   This program does some benchmarking of netCDF files for the AR-5
6   data.
7*/
8
9#include <nc_tests.h>
10#include "err_macros.h"
11#include "netcdf.h"
12#include <unistd.h>
13#include <time.h>
14#include <sys/time.h> /* Extra high precision time info. */
15#include <../ncdump/nciter.h>
16
17#define MILLION 1000000
18#define MAX_LEN 30
19#define TMP_FILE_NAME "tst_files2_tmp.out"
20
21/* This function uses the ps command to find the amount of memory in
22use by the process. From the ps man page:
23
24size SZ approximate amount of swap space that would be required if
25        the process were to dirty all writable pages and then be
26        swapped out. This number is very rough!
27*/
28void
29get_mem_used1(int *mem_used)
30{
31   char cmd[NC_MAX_NAME + 1];
32   char blob[MAX_LEN + 1] = "";
33   FILE *fp;
34   int num_char;
35
36   /* Run the ps command for this process, putting output (one number)
37    * into file TMP_FILE_NAME. */
38   sprintf(cmd, "ps -o size= %d > %s", getpid(), TMP_FILE_NAME);
39   system(cmd);
40
41   /* Read the results and delete temp file. */
42   if (!(fp = fopen(TMP_FILE_NAME, "r"))) exit;
43   num_char = fread(blobMAX_LEN, 1, fp);
44   sscanf(blob, "%d", mem_used);
45   fclose(fp);
46   unlink(TMP_FILE_NAME);
47}
48
49int
50main(int argc, char **argv)
51{
52
53#define BUFSIZE 1000000 /* access data in megabyte sized pieces */
54#define THETAU_FILE "/machine/downloads/AR5_sample_data/thetao_O1.SRESA1B_2.CCSM.ocnm.2000-01_cat_2099-12.nc"
55#define NDIMS_DATA 4
56   printf("\n*** Running some AR-5 benchmarks.\n");
57   printf("*** testing various chunksizes for thetau file...\n");
58   {
59      int ncidncid_out;
60      /*char var_buf[BUFSIZE];*/  /* buffer for variable data */
61/*      nciter_t iter; */     /* opaque structure for iteration status */
62/*      size_t start[NDIMS_DATA];
63 size_t count[NDIMS_DATA];*/
64      /*float *data = (float *)var_buf; */
65      char file_out[NC_MAX_NAME + 1];
66      /*int ndims, nvars, natts, unlimdimid;*/
67      size_t cs[NDIMS_DATA] = {120, 4, 40, 32};
68
69/*       /\* Open input. *\/ */
70/*       if (nc_open(THETAU_FILE, NC_NOWRITE, &ncid)) ERR; */
71
72/*       /\* Create output file. *\/ */
73/*       sprintf(file_out, "thetau_%d_%d_%d_%d.nc", (int)cs[0],  */
74/*        (int)cs[1], (int)cs[2], (int)cs[3]); */
75/*       if (nc_create(file_out, NC_NOWRITE, &ncid_out)) ERR; */
76
77/*       /\* Copy the easy ones. *\/ */
78/* /\*      if (nc_inq(ncid, &ndims, &nvars, &natts, &unlimdimid)) ERR; */
79/*  if (ndims != 5 || nvars != 9 || natts != 8 || unlimdimid != 0) ERR;*\/ */
80
81/* /\*       /\\* Copy the main data payload with Russ's new nciters. *\\/ *\/ */
82/* /\*       varid = 8; *\/ */
83/* /\*       if (nc_get_iter(ncid, varid, BUFSIZE, &iter)) ERR; *\/ */
84/* /\*       while((nvals = nc_next_iter(&iter, start, count)) > 0)  *\/ */
85/* /\*       { *\/ */
86/* /\*   /\\* read in a block of data *\\/ *\/ */
87/* /\*   if (nc_get_vara_double(ncid, varid, start, count, data)) ERR; *\/ */
88
89/* /\*   /\\* now write the changed data back out *\\/ *\/ */
90/* /\*   if (nc_out_vara_double(ncid, varid, start, count, data)) ERR; *\/ */
91/* /\*       } *\/ */
92/* /\*       if (nvals < 0) ERR; *\/ */
93
94/*       if (nc_close(ncid)) ERR; */
95/*       if (nc_close(ncid_out)) ERR; */
96   }
97   SUMMARIZE_ERR;
98   FINAL_RESULTS;
99}


HyperKWIC - Version 7.20DA executed at 11:37 on 27 Oct 2017 | Polyhedron Solutions - INTERNAL USE | COMMERCIAL (Any O/S) SN 4AKIed