- Timestamp:
- 06/29/18 17:16:31 (6 years ago)
- Location:
- XIOS/dev/branch_openmp
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/branch_openmp/bld.cfg
r1544 r1555 34 34 bld::target libxios.a 35 35 #bld::target generate_fortran_interface.exe 36 #bld::target xios_server.exe36 bld::target xios_server.exe 37 37 #bld::target test_regular.exe 38 38 #bld::target test_expand_domain.exe 39 39 #bld::target test_new_features.exe 40 40 #bld::target test_unstruct_complete.exe 41 bld::target test_omp.exe42 bld::target test_complete_omp.exe41 #bld::target test_omp.exe 42 #bld::target test_complete_omp.exe 43 43 #bld::target test_remap.exe 44 44 #bld::target test_remap_ref.exe 45 bld::target test_remap_omp.exe45 #bld::target test_remap_omp.exe 46 46 #bld::target test_unstruct_omp.exe 47 47 #bld::target test_netcdf_omp.exe … … 52 52 #bld::target test_connectivity_expand.exe 53 53 #bld::target toy_cmip6.exe 54 bld::target toy_cmip6_omp.exe54 #bld::target toy_cmip6_omp.exe 55 55 bld::exe_dep 56 56 -
XIOS/dev/branch_openmp/src/io/netCdfInterface.cpp
r1520 r1555 22 22 int CNetCdfInterface::create(const StdString& fileName, int cMode, int& ncId) 23 23 { 24 int status = nc_create(fileName.c_str(), cMode, &ncId); 24 int status; 25 #pragma omp critical (_netcdf) 26 { 27 info(100)<<"start nc_create"<<std::endl; 28 status = nc_create(fileName.c_str(), cMode, &ncId); 29 info(100)<<"end nc_create"<<std::endl; 30 } 25 31 if (NC_NOERR != status) 26 32 { … … 50 56 { 51 57 int status = xios::nc_create_par(fileName.c_str(), cMode, comm, to_mpi_info(MPI_INFO_NULL), &ncId); 58 52 59 if (NC_NOERR != status) 53 60 { … … 74 81 int CNetCdfInterface::open(const StdString& fileName, int oMode, int& ncId) 75 82 { 76 int status = nc_open(fileName.c_str(), oMode, &ncId); 83 int status; 84 #pragma omp critical (_netcdf) 85 { 86 info(100)<<"start nc_open"<<std::endl; 87 status = nc_open(fileName.c_str(), oMode, &ncId); 88 info(100)<<"end nc_open"<<std::endl; 89 } 77 90 if (NC_NOERR != status) 78 91 { … … 102 115 int CNetCdfInterface::openPar(const StdString& fileName, int oMode, MPI_Comm comm, MPI_Info info, int& ncId) 103 116 { 104 int status; 105 #pragma omp critical (_netcdf) 106 status = xios::nc_open_par(fileName.c_str(), oMode, comm, to_mpi_info(MPI_INFO_NULL), &ncId); 117 int status = xios::nc_open_par(fileName.c_str(), oMode, comm, to_mpi_info(MPI_INFO_NULL), &ncId); 107 118 108 119 if (NC_NOERR != status) … … 129 140 { 130 141 int status = NC_NOERR; 131 #pragma omp master 132 { 142 #pragma omp critical (_netcdf) 143 { 144 info(100)<<"start nc_close"<<std::endl; 133 145 status = nc_close(ncId); 134 if (NC_NOERR != status) 135 { 136 StdString errormsg(nc_strerror(status)); 137 StdStringStream sstr; 138 sstr << "Error when calling function nc_close(ncId)" << std::endl 139 << errormsg << std::endl 140 << "Unable to close file, given its id: " << ncId << std::endl; 141 StdString e = sstr.str(); 142 throw CNetCdfException(e); 143 } 146 info(100)<<"end nc_close"<<std::endl; 147 } 148 149 if (NC_NOERR != status) 150 { 151 StdString errormsg(nc_strerror(status)); 152 StdStringStream sstr; 153 sstr << "Error when calling function nc_close(ncId)" << std::endl 154 << errormsg << std::endl 155 << "Unable to close file, given its id: " << ncId << std::endl; 156 StdString e = sstr.str(); 157 throw CNetCdfException(e); 144 158 } 145 159 … … 154 168 int CNetCdfInterface::reDef(int ncId) 155 169 { 156 int status = nc_redef(ncId); 170 int status; 171 #pragma omp critical (_netcdf) 172 { 173 info(100)<<"start nc_reDef"<<std::endl; 174 status = nc_redef(ncId); 175 info(100)<<"end nc_reDef"<<std::endl; 176 } 177 157 178 if (NC_NOERR != status) 158 179 { … … 176 197 int CNetCdfInterface::endDef(int ncId) 177 198 { 178 int status = nc_enddef(ncId); 199 int status; 200 #pragma omp critical (_netcdf) 201 { 202 info(100)<<"start nc_enddef"<<std::endl; 203 status = nc_enddef(ncId); 204 info(100)<<"end nc_enddef"<<std::endl; 205 } 179 206 if (NC_NOERR != status) 180 207 { … … 201 228 int CNetCdfInterface::inqNcId(int ncid, const StdString& grpName, int& grpId) 202 229 { 203 int status = nc_inq_ncid(ncid, grpName.c_str(), &grpId); 230 int status; 231 #pragma omp critical (_netcdf) 232 { 233 info(100)<<"start nc_inq_ncid"<<std::endl; 234 status = nc_inq_ncid(ncid, grpName.c_str(), &grpId); 235 info(100)<<"end nc_inq_ncid"<<std::endl; 236 } 237 204 238 if (NC_NOERR != status) 205 239 { … … 227 261 int CNetCdfInterface::inqVarId(int ncid, const StdString& varName, int& varId) 228 262 { 229 int status = nc_inq_varid(ncid, varName.c_str(), &varId); 263 int status; 264 #pragma omp critical (_netcdf) 265 { 266 info(100)<<"start nc_inq_varid"<<std::endl; 267 status = nc_inq_varid(ncid, varName.c_str(), &varId); 268 info(100)<<"end nc_inq_varid"<<std::endl; 269 } 230 270 if (NC_NOERR != status) 231 271 { … … 252 292 int CNetCdfInterface::inqDimId(int ncid, const StdString& dimName, int& dimId) 253 293 { 254 int status = nc_inq_dimid(ncid, dimName.c_str(), &dimId); 294 int status; 295 #pragma omp critical (_netcdf) 296 { 297 info(100)<<"start nc_inq_dimid"<<std::endl; 298 status = nc_inq_dimid(ncid, dimName.c_str(), &dimId); 299 info(100)<<"end nc_inq_dimid"<<std::endl; 300 } 301 255 302 if (NC_NOERR != status) 256 303 { … … 278 325 { 279 326 char varNameBuff[NC_MAX_NAME + 1]; 280 int status = nc_inq_varname(ncid, varId, varNameBuff); 327 int status; 328 #pragma omp critical (_netcdf) 329 { 330 info(100)<<"start nc_inq_varname"<<std::endl; 331 status = nc_inq_varname(ncid, varId, varNameBuff); 332 info(100)<<"end nc_inq_varname"<<std::endl; 333 } 281 334 if (NC_NOERR != status) 282 335 { … … 302 355 int CNetCdfInterface::inqUnLimDim(int ncid, int& dimId) 303 356 { 304 int status = nc_inq_unlimdim(ncid, &dimId); 357 int status; 358 #pragma omp critical (_netcdf) 359 { 360 info(100)<<"start nc_inq_unlimdim"<<std::endl; 361 status = nc_inq_unlimdim(ncid, &dimId); 362 info(100)<<"end nc_inq_unlimdim"<<std::endl; 363 } 305 364 if (NC_NOERR != status) 306 365 { … … 328 387 { 329 388 char fullNameIn[NC_MAX_NAME + 1]; 330 int status = nc_inq_dimname(ncid, dimId, fullNameIn); 389 int status; 390 #pragma omp critical (_netcdf) 391 { 392 info(100)<<"start nc_inq_dimname"<<std::endl; 393 status = nc_inq_dimname(ncid, dimId, fullNameIn); 394 info(100)<<"end nc_inq_dimname"<<std::endl; 395 } 331 396 if (NC_NOERR != status) 332 397 { … … 353 418 int CNetCdfInterface::inqDimLen(int ncid, int dimId, StdSize& dimLen) 354 419 { 355 int status = nc_inq_dimlen(ncid, dimId, &dimLen); 420 int status; 421 #pragma omp critical (_netcdf) 422 { 423 info(100)<<"start nc_inq_dimlen"<<std::endl; 424 status = nc_inq_dimlen(ncid, dimId, &dimLen); 425 info(100)<<"end nc_inq_dimlen"<<std::endl; 426 } 356 427 if (NC_NOERR != status) 357 428 { … … 378 449 int CNetCdfInterface::inqVarNDims(int ncid, int varId, int& nDims) 379 450 { 380 int status = nc_inq_varndims(ncid, varId, &nDims); 451 int status; 452 #pragma omp critical (_netcdf) 453 { 454 info(100)<<"start nc_inq_varndims"<<std::endl; 455 status = nc_inq_varndims(ncid, varId, &nDims); 456 info(100)<<"end nc_inq_varndims"<<std::endl; 457 } 381 458 if (NC_NOERR != status) 382 459 { … … 403 480 int CNetCdfInterface::inqVarDimId(int ncid, int varId, int* dimIds) 404 481 { 405 int status = nc_inq_vardimid(ncid, varId, dimIds); 482 int status; 483 #pragma omp critical (_netcdf) 484 { 485 info(100)<<"start nc_inq_vardimid"<<std::endl; 486 status = nc_inq_vardimid(ncid, varId, dimIds); 487 info(100)<<"end nc_inq_vardimid"<<std::endl; 488 } 406 489 if (NC_NOERR != status) 407 490 { … … 429 512 int CNetCdfInterface::inqDimIds(int ncid, int& nDims, int* dimIds, int includeParents) 430 513 { 431 int status = nc_inq_dimids(ncid, &nDims, dimIds, includeParents); 514 int status; 515 #pragma omp critical (_netcdf) 516 { 517 info(100)<<"start nc_inq_dimids"<<std::endl; 518 status = nc_inq_dimids(ncid, &nDims, dimIds, includeParents); 519 info(100)<<"end nc_inq_dimids"<<std::endl; 520 } 432 521 if (NC_NOERR != status) 433 522 { … … 456 545 StdSize strlen = 0; 457 546 std::vector<char> buff; 458 int status = nc_inq_grpname_full(ncid, &strlen, NULL); 459 if (NC_NOERR == status) 460 { 461 buff.resize(strlen + 1); 462 status = nc_inq_grpname_full(ncid, NULL, &buff[0]); 463 } 464 547 int status; 548 #pragma omp critical (_netcdf) 549 { 550 info(100)<<"start nc_inq_grpname_full"<<std::endl; 551 status = nc_inq_grpname_full(ncid, &strlen, NULL); 552 info(100)<<"end nc_inq_grpname_full"<<std::endl; 553 554 if (NC_NOERR == status) 555 { 556 buff.resize(strlen + 1); 557 status = nc_inq_grpname_full(ncid, NULL, &buff[0]); 558 } 559 info(100)<<"start nc_inq_grpname_full"<<std::endl; 560 } 465 561 if (NC_NOERR != status) 466 562 { … … 489 585 int CNetCdfInterface::inqGrpIds(int ncid, int& numgrps, int* ncids) 490 586 { 491 int status = nc_inq_grps(ncid, &numgrps, ncids); 587 int status; 588 #pragma omp critical (_netcdf) 589 { 590 info(100)<<"start nc_inq_grps"<<std::endl; 591 status = nc_inq_grps(ncid, &numgrps, ncids); 592 info(100)<<"end nc_inq_grps"<<std::endl; 593 } 492 594 if (NC_NOERR != status) 493 595 { … … 514 616 int CNetCdfInterface::inqVarIds(int ncid, int& nvars, int* varids) 515 617 { 516 int status = nc_inq_varids(ncid, &nvars, varids); 618 int status; 619 #pragma omp critical (_netcdf) 620 { 621 info(100)<<"start nc_inq_varids"<<std::endl; 622 status = nc_inq_varids(ncid, &nvars, varids); 623 info(100)<<"end nc_inq_varids"<<std::endl; 624 } 517 625 if (NC_NOERR != status) 518 626 { … … 541 649 int CNetCdfInterface::inqAtt(int ncid, int varid, const StdString& name, nc_type& type, size_t& len) 542 650 { 543 int status = nc_inq_att(ncid, varid, name.c_str(), &type, &len); 651 int status; 652 #pragma omp critical (_netcdf) 653 { 654 info(100)<<"start nc_inq_att"<<std::endl; 655 status = nc_inq_att(ncid, varid, name.c_str(), &type, &len); 656 info(100)<<"end nc_inq_att"<<std::endl; 657 } 658 544 659 if (NC_NOERR != status) 545 660 { … … 565 680 int CNetCdfInterface::inqNAtts(int ncid, int& ngatts) 566 681 { 567 int status = nc_inq_natts(ncid, &ngatts); 682 int status; 683 #pragma omp critical (_netcdf) 684 { 685 info(100)<<"start nc_inq_natts"<<std::endl; 686 status = nc_inq_natts(ncid, &ngatts); 687 info(100)<<"end nc_inq_natts"<<std::endl; 688 } 568 689 if (NC_NOERR != status) 569 690 { … … 590 711 int CNetCdfInterface::inqVarNAtts(int ncid, int varid, int& natts) 591 712 { 592 int status = nc_inq_varnatts(ncid, varid, &natts); 713 int status; 714 #pragma omp critical (_netcdf) 715 { 716 info(100)<<"start nc_inq_varnatts"<<std::endl; 717 status = nc_inq_varnatts(ncid, varid, &natts); 718 info(100)<<"end nc_inq_varnatts"<<std::endl; 719 } 593 720 if (NC_NOERR != status) 594 721 { … … 611 738 { 612 739 std::vector<char> attName(NC_MAX_NAME + 1,' '); 613 int status = nc_inq_attname(ncid, varid, attnum, &attName[0]); 740 int status; 741 #pragma omp critical (_netcdf) 742 { 743 info(100)<<"start nc_inq_attname"<<std::endl; 744 status = nc_inq_attname(ncid, varid, attnum, &attName[0]); 745 info(100)<<"end nc_inq_attname"<<std::endl; 746 } 614 747 if (NC_NOERR != status) 615 748 { … … 642 775 int CNetCdfInterface::defGrp(int parentNcid, const StdString& grpName, int& grpId) 643 776 { 644 int status = nc_def_grp(parentNcid, grpName.c_str(), &grpId); 777 int status; 778 #pragma omp critical (_netcdf) 779 { 780 info(100)<<"start nc_def_grp"<<std::endl; 781 status = nc_def_grp(parentNcid, grpName.c_str(), &grpId); 782 info(100)<<"end nc_def_grp"<<std::endl; 783 } 645 784 if (NC_NOERR != status) 646 785 { … … 667 806 int CNetCdfInterface::defDim(int ncid, const StdString& dimName, StdSize dimLen, int& dimId) 668 807 { 669 int status = nc_def_dim(ncid, dimName.c_str(), dimLen, &dimId); 808 int status; 809 #pragma omp critical (_netcdf) 810 { 811 info(100)<<"start nc_def_dim"<<std::endl; 812 status = nc_def_dim(ncid, dimName.c_str(), dimLen, &dimId); 813 info(100)<<"end nc_def_dim"<<std::endl; 814 } 670 815 if (NC_NOERR != status) 671 816 { … … 698 843 int nDims, const int dimIds[], int& varId) 699 844 { 700 int status = nc_def_var(ncid, varName.c_str(), xtype, nDims, dimIds, &varId); 845 int status; 846 #pragma omp critical (_netcdf) 847 { 848 info(100)<<"start nc_def_var"<<std::endl; 849 status = nc_def_var(ncid, varName.c_str(), xtype, nDims, dimIds, &varId); 850 info(100)<<"end nc_def_var"<<std::endl; 851 } 701 852 if (NC_NOERR != status) 702 853 { … … 727 878 int CNetCdfInterface::defVarChunking(int ncid, int varId, int storage, StdSize chunkSize[]) 728 879 { 729 int status = nc_def_var_chunking(ncid, varId, storage, chunkSize); 880 int status; 881 #pragma omp critical (_netcdf) 882 { 883 info(100)<<"start nc_def_var_chunking"<<std::endl; 884 status = nc_def_var_chunking(ncid, varId, storage, chunkSize); 885 info(100)<<"end nc_def_var_chunking"<<std::endl; 886 } 730 887 if (NC_NOERR != status) 731 888 { … … 755 912 756 913 if (compressionLevel == 0) return NC_NOERR ; 757 int status = nc_def_var_deflate(ncid, varId, (compressionLevel > 0), (compressionLevel > 0), compressionLevel); 914 int status; 915 #pragma omp critical (_netcdf) 916 { 917 info(100)<<"start nc_def_var_deflate"<<std::endl; 918 status = nc_def_var_deflate(ncid, varId, (compressionLevel > 0), (compressionLevel > 0), compressionLevel); 919 info(100)<<"end nc_def_var_deflate"<<std::endl; 920 } 758 921 if (NC_NOERR != status) 759 922 { … … 781 944 { 782 945 int old_fill_mode; 783 int status = nc_set_fill(ncid, fill ? NC_FILL: NC_NOFILL, &old_fill_mode); 946 int status; 947 #pragma omp critical (_netcdf) 948 { 949 info(100)<<"start nc_set_fill"<<std::endl; 950 status = nc_set_fill(ncid, fill ? NC_FILL: NC_NOFILL, &old_fill_mode); 951 info(100)<<"end nc_set_fill"<<std::endl; 952 } 784 953 if (NC_NOERR != status) 785 954 { … … 808 977 int CNetCdfInterface::defVarFill(int ncid, int varId, int noFill, void* fillValue) 809 978 { 810 int status = nc_def_var_fill(ncid, varId, noFill, fillValue); 979 int status; 980 #pragma omp critical (_netcdf) 981 { 982 info(100)<<"start nc_def_var_fill"<<std::endl; 983 status = nc_def_var_fill(ncid, varId, noFill, fillValue); 984 info(100)<<"end nc_def_var_fill"<<std::endl; 985 } 811 986 if (NC_NOERR != status) 812 987 { … … 836 1011 int CNetCdfInterface::varParAccess(int ncid, int varId, int access) 837 1012 { 838 int status = nc_var_par_access(ncid, varId, access); 1013 int status; 1014 #pragma omp critical (_netcdf) 1015 { 1016 info(100)<<"start nc_var_par_access"<<std::endl; 1017 status = nc_var_par_access(ncid, varId, access); 1018 info(100)<<"end nc_var_par_access"<<std::endl; 1019 } 839 1020 if (NC_NOERR != status) 840 1021 { … … 859 1040 int CNetCdfInterface::sync(int ncid) 860 1041 { 861 int status = nc_sync(ncid); 1042 int status; 1043 #pragma omp critical (_netcdf) 1044 { 1045 info(100)<<"start nc_sync"<<std::endl; 1046 status = nc_sync(ncid); 1047 info(100)<<"end nc_sync"<<std::endl; 1048 } 862 1049 if (NC_NOERR != status) 863 1050 { … … 879 1066 int CNetCdfInterface::ncGetAttType(int ncid, int varid, const char* attrName, double* data) 880 1067 { 881 return nc_get_att_double(ncid, varid, attrName, data); 1068 int status; 1069 #pragma omp critical (_netcdf) 1070 { 1071 info(100)<<"start nc_get_att_double"<<std::endl; 1072 status = nc_get_att_double(ncid, varid, attrName, data); 1073 info(100)<<"end nc_get_att_double"<<std::endl; 1074 } 1075 return status; 882 1076 } 883 1077 … … 885 1079 int CNetCdfInterface::ncGetAttType(int ncid, int varid, const char* attrName, float* data) 886 1080 { 887 return nc_get_att_float(ncid, varid, attrName, data); 1081 int status; 1082 #pragma omp critical (_netcdf) 1083 { 1084 info(100)<<"start nc_get_att_float"<<std::endl; 1085 status = nc_get_att_float(ncid, varid, attrName, data); 1086 info(100)<<"end nc_get_att_float"<<std::endl; 1087 } 1088 return status; 888 1089 } 889 1090 … … 891 1092 int CNetCdfInterface::ncGetAttType(int ncid, int varid, const char* attrName, int* data) 892 1093 { 893 return nc_get_att_int(ncid, varid, attrName, data); 1094 int status; 1095 #pragma omp critical (_netcdf) 1096 { 1097 info(100)<<"start nc_get_att_int"<<std::endl; 1098 status = nc_get_att_int(ncid, varid, attrName, data); 1099 info(100)<<"end nc_get_att_int"<<std::endl; 1100 } 1101 return status; 894 1102 } 895 1103 … … 897 1105 int CNetCdfInterface::ncGetAttType(int ncid, int varid, const char* attrName, long* data) 898 1106 { 899 return nc_get_att_long(ncid, varid, attrName, data); 1107 int status; 1108 #pragma omp critical (_netcdf) 1109 { 1110 info(100)<<"start nc_get_att_long"<<std::endl; 1111 status = nc_get_att_long(ncid, varid, attrName, data); 1112 info(100)<<"end nc_get_att_long"<<std::endl; 1113 } 1114 return status; 900 1115 } 901 1116 … … 903 1118 int CNetCdfInterface::ncGetAttType(int ncid, int varid, const char* attrName, short* data) 904 1119 { 905 return nc_get_att_short(ncid, varid, attrName, data); 1120 int status; 1121 #pragma omp critical (_netcdf) 1122 { 1123 info(100)<<"start nc_get_att_short"<<std::endl; 1124 status = nc_get_att_short(ncid, varid, attrName, data); 1125 info(100)<<"end nc_get_att_short"<<std::endl; 1126 } 1127 return status; 906 1128 } 907 1129 … … 909 1131 int CNetCdfInterface::ncGetAttType(int ncid, int varid, const char* attrName, char* data) 910 1132 { 911 return nc_get_att_text(ncid, varid, attrName, data); 1133 int status; 1134 #pragma omp critical (_netcdf) 1135 { 1136 info(100)<<"start nc_get_att_text"<<std::endl; 1137 status = nc_get_att_text(ncid, varid, attrName, data); 1138 info(100)<<"end nc_get_att_text"<<std::endl; 1139 } 1140 return status; 912 1141 } 913 1142 … … 917 1146 StdSize numVal, const double* data) 918 1147 { 919 return nc_put_att_double(ncid, varid, attrName, NC_DOUBLE, numVal, data); 1148 int status; 1149 #pragma omp critical (_netcdf) 1150 { 1151 info(100)<<"start nc_put_att_double"<<std::endl; 1152 status = nc_put_att_double(ncid, varid, attrName, NC_DOUBLE, numVal, data); 1153 info(100)<<"end nc_put_att_double"<<std::endl; 1154 } 1155 return status; 920 1156 } 921 1157 … … 924 1160 StdSize numVal, const float* data) 925 1161 { 926 return nc_put_att_float(ncid, varid, attrName, NC_FLOAT, numVal, data); 1162 int status; 1163 #pragma omp critical (_netcdf) 1164 { 1165 info(100)<<"start nc_put_att_float"<<std::endl; 1166 status = nc_put_att_float(ncid, varid, attrName, NC_FLOAT, numVal, data); 1167 info(100)<<"end nc_put_att_float"<<std::endl; 1168 } 1169 return status; 927 1170 } 928 1171 … … 931 1174 StdSize numVal, const int* data) 932 1175 { 933 return nc_put_att_int(ncid, varid, attrName, NC_INT, numVal, data); 1176 int status; 1177 #pragma omp critical (_netcdf) 1178 { 1179 info(100)<<"start nc_put_att_int"<<std::endl; 1180 status = nc_put_att_int(ncid, varid, attrName, NC_INT, numVal, data); 1181 info(100)<<"end nc_put_att_int"<<std::endl; 1182 } 1183 return status; 934 1184 } 935 1185 … … 938 1188 StdSize numVal, const long* data) 939 1189 { 940 return nc_put_att_long(ncid, varid, attrName, NC_LONG, numVal, data); 1190 int status; 1191 #pragma omp critical (_netcdf) 1192 { 1193 info(100)<<"start nc_put_att_long"<<std::endl; 1194 status = nc_put_att_long(ncid, varid, attrName, NC_LONG, numVal, data); 1195 info(100)<<"end nc_put_att_long"<<std::endl; 1196 } 1197 return status; 941 1198 } 942 1199 … … 945 1202 StdSize numVal, const short* data) 946 1203 { 947 return nc_put_att_short(ncid, varid, attrName, NC_SHORT, numVal, data); 1204 int status; 1205 #pragma omp critical (_netcdf) 1206 { 1207 info(100)<<"start nc_put_att_short"<<std::endl; 1208 status = nc_put_att_short(ncid, varid, attrName, NC_SHORT, numVal, data); 1209 info(100)<<"end nc_put_att_short"<<std::endl; 1210 } 1211 return status; 948 1212 } 949 1213 … … 952 1216 StdSize numVal, const char* data) 953 1217 { 954 return nc_put_att_text(ncid, varid, attrName, numVal, data); 1218 int status; 1219 #pragma omp critical (_netcdf) 1220 { 1221 info(100)<<"start nc_put_att_text"<<std::endl; 1222 status = nc_put_att_text(ncid, varid, attrName, numVal, data); 1223 info(100)<<"end nc_put_att_text"<<std::endl; 1224 } 1225 return status; 955 1226 } 956 1227 … … 959 1230 int CNetCdfInterface::ncGetVaraType(int ncid, int varid, const StdSize* start, const StdSize* count, double* data) 960 1231 { 961 return nc_get_vara_double(ncid, varid, start, count, data); 1232 int status; 1233 #pragma omp critical (_netcdf) 1234 { 1235 info(100)<<"start nc_get_vara_double"<<std::endl; 1236 status = nc_get_vara_double(ncid, varid, start, count, data); 1237 info(100)<<"end nc_get_vara_double"<<std::endl; 1238 } 1239 return status; 962 1240 } 963 1241 … … 965 1243 int CNetCdfInterface::ncGetVaraType(int ncid, int varid, const StdSize* start, const StdSize* count, float* data) 966 1244 { 967 return nc_get_vara_float(ncid, varid, start, count, data); 1245 int status; 1246 #pragma omp critical (_netcdf) 1247 { 1248 info(100)<<"start nc_get_vara_float"<<std::endl; 1249 status = nc_get_vara_float(ncid, varid, start, count, data); 1250 info(100)<<"end nc_get_vara_float"<<std::endl; 1251 } 1252 return status; 968 1253 } 969 1254 … … 971 1256 int CNetCdfInterface::ncGetVaraType(int ncid, int varid, const StdSize* start, const StdSize* count, int* data) 972 1257 { 973 return nc_get_vara_int(ncid, varid, start, count, data); 1258 int status; 1259 #pragma omp critical (_netcdf) 1260 { 1261 info(100)<<"start nc_get_vara_int"<<std::endl; 1262 status = nc_get_vara_int(ncid, varid, start, count, data); 1263 info(100)<<"end nc_get_vara_int"<<std::endl; 1264 } 1265 return status; 974 1266 } 975 1267 … … 977 1269 int CNetCdfInterface::ncGetVaraType(int ncid, int varid, const StdSize* start, const StdSize* count, char* data) 978 1270 { 979 return nc_get_vara_text(ncid, varid, start, count, data); 1271 int status; 1272 #pragma omp critical (_netcdf) 1273 { 1274 info(100)<<"start nc_get_vara_text"<<std::endl; 1275 status = nc_get_vara_text(ncid, varid, start, count, data); 1276 info(100)<<"end nc_get_vara_text"<<std::endl; 1277 } 1278 return status; 980 1279 } 981 1280 … … 984 1283 int CNetCdfInterface::ncPutVaraType(int ncid, int varid, const StdSize* start, const StdSize* count, const double* data) 985 1284 { 986 return nc_put_vara_double(ncid, varid, start, count, data); 1285 int status; 1286 #pragma omp critical (_netcdf) 1287 { 1288 info(100)<<"start nc_put_vara_double"<<std::endl; 1289 status = nc_put_vara_double(ncid, varid, start, count, data); 1290 info(100)<<"end nc_put_vara_double"<<std::endl; 1291 } 1292 return status; 987 1293 } 988 1294 … … 990 1296 int CNetCdfInterface::ncPutVaraType(int ncid, int varid, const StdSize* start, const StdSize* count, const float* data) 991 1297 { 992 return nc_put_vara_float(ncid, varid, start, count, data); 1298 int status; 1299 #pragma omp critical (_netcdf) 1300 { 1301 info(100)<<"start nc_put_vara_float"<<std::endl; 1302 status = nc_put_vara_float(ncid, varid, start, count, data); 1303 info(100)<<"end nc_put_vara_float"<<std::endl; 1304 } 1305 return status; 993 1306 } 994 1307 … … 996 1309 int CNetCdfInterface::ncPutVaraType(int ncid, int varid, const StdSize* start, const StdSize* count, const int* data) 997 1310 { 998 return nc_put_vara_int(ncid, varid, start, count, data); 1311 int status; 1312 #pragma omp critical (_netcdf) 1313 { 1314 info(100)<<"start nc_put_vara_int"<<std::endl; 1315 status = nc_put_vara_int(ncid, varid, start, count, data); 1316 info(100)<<"end nc_put_vara_int"<<std::endl; 1317 } 1318 return status; 999 1319 } 1000 1320 … … 1002 1322 int CNetCdfInterface::ncPutVaraType(int ncid, int varid, const StdSize* start, const StdSize* count, const char* data) 1003 1323 { 1004 return nc_put_vara_text(ncid, varid, start, count, data); 1324 int status; 1325 #pragma omp critical (_netcdf) 1326 { 1327 info(100)<<"start nc_put_vara_text"<<std::endl; 1328 status = nc_put_vara_text(ncid, varid, start, count, data); 1329 info(100)<<"end nc_put_vara_text"<<std::endl; 1330 } 1331 return status; 1005 1332 } 1006 1333 … … 1015 1342 { 1016 1343 int varId = 0; 1017 return (NC_NOERR == (nc_inq_varid(ncId, varName.c_str(), &varId))); 1344 int status; 1345 #pragma omp critical (_netcdf) 1346 { 1347 info(100)<<"start isVarExisted"<<std::endl; 1348 status = nc_inq_varid(ncId, varName.c_str(), &varId); 1349 info(100)<<"end isVarExisted"<<std::endl; 1350 } 1351 return (NC_NOERR == status); 1018 1352 } 1019 1353 … … 1021 1355 { 1022 1356 int dimId = 0; 1023 return (NC_NOERR == (nc_inq_dimid(ncId, dimName.c_str(), &dimId))); 1357 int status; 1358 #pragma omp critical (_netcdf) 1359 { 1360 info(100)<<"start isDimExisted"<<std::endl; 1361 status = nc_inq_dimid(ncId, dimName.c_str(), &dimId); 1362 info(100)<<"end isDimExisted"<<std::endl; 1363 } 1364 return (NC_NOERR == status); 1024 1365 } 1025 1366 -
XIOS/dev/branch_openmp/src/io/netcdf.hpp
r1328 r1555 33 33 { 34 34 #if defined(USING_NETCDF_PAR) 35 return ::nc_create_par(path, cmode, comm, info, ncidp) ; 35 int status; 36 #pragma omp critical (_netcdf) 37 { 38 status = ::nc_create_par(path, cmode, comm, info, ncidp) ; 39 } 40 return status; 36 41 #else 37 42 ERROR("int nc_create_par(const char *path, int cmode, MPI_Comm comm, MPI_Info info,int *ncidp)", … … 44 49 { 45 50 #if defined(USING_NETCDF_PAR) 46 return ::nc_open_par(path, mode, comm, info, ncidp) ; 51 int status; 52 #pragma omp critical (_netcdf) 53 { 54 status = ::nc_open_par(path, mode, comm, info, ncidp) ; 55 } 56 return status; 47 57 #else 48 58 ERROR("int nc_open_par(const char *path, int mode, MPI_Comm comm, MPI_Info info,int *ncidp)", … … 55 65 { 56 66 #if defined(USING_NETCDF_PAR) 57 return ::nc_var_par_access(ncid, varid, par_access) ; 67 int status = ::nc_var_par_access(ncid, varid, par_access) ; 68 69 return status; 58 70 #else 59 71 ERROR("int nc_var_par_access(int ncid, int varid, int par_access)", -
XIOS/dev/branch_openmp/src/transformation/domain_algorithm_interpolate.cpp
r1545 r1555 807 807 808 808 int my_rank_loc = client->intraComm->ep_comm_ptr->size_rank_info[1].first; 809 810 cout<<"begin write weight info"<< endl; 809 int my_rank = client->intraComm->ep_comm_ptr->size_rank_info[0].first; 810 811 811 812 812 813 WriteNetCdf *netCdfWriter; 813 814 814 815 815 MPI_Barrier_local(client->intraComm); 816 816 817 if(my_rank_loc==0) 817 818 { 818 819 info(100)<<"rank "<< my_rank <<" create weight info file"<< std::endl; 820 819 821 WriteNetCdf my_writer(filename, client->intraComm); 822 info(100)<<"rank "<< my_rank <<" file created"<< std::endl; 820 823 netCdfWriter = &my_writer; 821 824 … … 824 827 netCdfWriter->addDimensionWrite("n_dst", n_dst); 825 828 netCdfWriter->addDimensionWrite("n_weight", globalNbWeight); 829 info(100)<<"rank "<< my_rank <<" addDimensionWrite : n_src, n_dst, n_weight"<< std::endl; 826 830 827 831 std::vector<StdString> dims(1,"n_weight"); … … 831 835 netCdfWriter->addVariableWrite("dst_idx", NC_INT, dims); 832 836 netCdfWriter->addVariableWrite("weight", NC_DOUBLE, dims); 837 838 info(100)<<"rank "<< my_rank <<" addVariableWrite : src_idx, dst_idx, weight"<< std::endl; 833 839 834 840 // End of definition 835 841 netCdfWriter->endDefinition(); 842 info(100)<<"rank "<< my_rank <<" endDefinition"<< std::endl; 836 843 837 844 netCdfWriter->closeFile(); 838 }839 840 845 info(100)<<"rank "<< my_rank <<" file closed"<< std::endl; 846 } 847 841 848 MPI_Barrier_local(client->intraComm); 842 849 … … 844 851 { 845 852 // open file 853 info(100)<<"rank "<< my_rank <<" writing in weight info file"<< std::endl; 854 846 855 WriteNetCdf my_writer(filename, true, client->intraComm); 856 info(100)<<"rank "<< my_rank <<" file opened"<< std::endl; 847 857 netCdfWriter = &my_writer; 848 858 … … 853 863 netCdfWriter->writeDataIndex(dst_idx, "dst_idx", false, 0, &start, &count); 854 864 netCdfWriter->writeDataIndex(weights, "weight", false, 0, &start, &count); 855 } 865 866 info(100)<<"rank "<< my_rank <<" WriteDataIndex : src_idx, dst_idx, weight"<< std::endl; 867 } 868 869 netCdfWriter->closeFile(); 870 info(100)<<"rank "<< my_rank <<" file closed"<< std::endl; 871 856 872 } 857 873
Note: See TracChangeset
for help on using the changeset viewer.