Changeset 977 for codes


Ignore:
Timestamp:
09/26/19 18:49:01 (5 years ago)
Author:
dubos
Message:

devel/Python : now only dynamico.dev modules require link to DYNAMICO/XIOS shared objects

Location:
codes/icosagcm/devel
Files:
2 added
1 deleted
3 edited
5 copied
1 moved

Legend:

Unmodified
Added
Removed
  • codes/icosagcm/devel/Python/dev/unstructured.pyx

    r952 r977  
    8282                     ['dynamico_scalar_laplacian', c_void_p,2], 
    8383                     ['dynamico_curl_laplacian', c_void_p,2], 
    84                      ['dynamico_partition_graph', c_int,2, c_void_p,3, c_int, c_void_p], 
    8584                     ['dynamico_init_transfer', c_int, c_int,2,c_void_p,3, c_int,2,c_void_p,3], 
    86                      ['dynamico_update_halo', c_int,3,c_void_p], 
    87                      ['dynamico_morton_encode', c_int,c_void_p,4] 
    88                      ]) 
     85                     ['dynamico_update_halo', c_int,3,c_void_p] ]) 
    8986 
    9087# set/get global variables 
  • codes/icosagcm/devel/Python/dynamico/meshes.py

    r959 r977  
    11from __future__ import absolute_import      
    2  
    3 from dynamico.dev import unstructured as unst 
    42 
    53import time 
     
    1513from dynamico.util import list_stencil, BaseClass, inverse_list 
    1614from dynamico import getargs 
    17 # TODO from dynamico.parmetis import partition_mesh 
    18 from dynamico.dev.unstructured import partition_mesh 
     15from dynamico.partition import partition_mesh 
    1916 
    2017log_master, log_world = getargs.getLogger(__name__) 
     
    419416                    vertex_lat[cell, ivertex] = vlat 
    420417            return vertex_lon, vertex_lat 
    421         mesh.primal_bounds_lon, mesh.primal_bounds_lat = bounds(mesh.primal_deg, mesh.primal_vertex, mesh.lon_v, mesh.lat_v) 
     418        mesh.primal_bounds_lon, mesh.primal_bounds_lat = bounds(mesh.primal_own_deg, mesh.primal_vertex, mesh.lon_v, mesh.lat_v) 
    422419        mesh.dual_bounds_lon, mesh.dual_bounds_lat = bounds(mesh.dual_deg, mesh.dual_vertex, mesh.lon_i, mesh.lat_i) 
    423420 
     
    766763    nn, xx, yy, zz = x.size, toint(x), toint(y), toint(z) 
    767764    idx=np.zeros(nn, dtype=np.int64) 
    768     unst.ker.dynamico_morton_encode(nn, xx,yy,zz, idx) 
     765    partition.dynamico_morton_encode(nn, xx,yy,zz, idx) 
    769766    return idx 
    770767 
  • codes/icosagcm/devel/Python/dynamico/partition.h

    r952 r977  
    33#include <parmetis.h> 
    44 
    5 void dynamico_partition_graph(int mpi_rank, int mpi_size,  
     5static inline void dynamico_partition_graph(int mpi_rank, int mpi_size,  
    66                     idx_t vtxdist[], idx_t xadj_loc[], idx_t adjncy_loc[], 
    77                     idx_t nparts, idx_t part[]) 
     
    4949} 
    5050 
    51 void dynamico_morton_encode(int n, const int *x, const int *y, const int *z, uint64_t *m) 
     51static inline void dynamico_morton_encode(int n, const int *x, const int *y, const int *z, uint64_t *m) 
    5252{ 
    5353  for(int i=0; i<n; i++) 
  • codes/icosagcm/devel/Python/test/py/partition.py

    r825 r977  
    33from dynamico import meshes 
    44from dynamico import parallel 
    5 from dynamico.dev import unstructured as unst 
    65from dynamico import maps 
    7 from dynamico.parmetis import partition_graph 
     6from dynamico import partition 
    87 
    98from mpi4py import MPI 
     
    1110mpi_rank, mpi_size = comm.Get_rank(), comm.Get_size() 
    1211print '%d/%d starting'%(mpi_rank,mpi_size) 
    13  
    14 #from dynamico import partition 
    1512 
    1613import math as math 
     
    5047    part = 0*xadj_loc[0:-1]; 
    5148 
    52 #    unst.ker.dynamico_partition_graph(mpi_rank, mpi_size, vtxdist, xadj_loc, adjncy_loc, 4, part) 
    53     partition_graph(comm, vtxdist, xadj_loc, adjncy_loc, part, nparts=4) 
     49    partition.partition_graph(comm, vtxdist, xadj_loc, adjncy_loc, part, nparts=4) 
    5450 
    5551    for i in range(len(part)): 
     
    6662    mydegree, mybounds = [get_mycells(x) for x in primal_deg, primal_vertex] 
    6763    print '%d : len(mydegree)=%d'%(mpi_rank, len(mydegree)) 
    68     vertex_list = sorted(set(unst.list_stencil(mydegree,mybounds)))  
     64    vertex_list = sorted(set(partition.list_stencil(mydegree,mybounds)))  
    6965    print '%d : len(vertex_list))=%d'%(mpi_rank, len(vertex_list)) 
    7066    get_myvertices = parallel.Get_Indices(dim_vertex, vertex_list) 
     
    116112plt.xlim(-190.,190.) 
    117113plt.ylim(-90.,90.) 
    118 plt.savefig('fig_partition/A%03d.pdf'%mpi_rank, dpi=1600) 
     114plt.savefig('fig_partition/A%03d.png'%mpi_rank, dpi=160) 
    119115 
    120116fig, ax = plt.subplots() 
     
    124120plt.xlim(-190.,190.) 
    125121plt.ylim(-90.,90.) 
    126 plt.savefig('fig_partition/B%03d.pdf'%mpi_rank, dpi=1600) 
     122plt.savefig('fig_partition/B%03d.png'%mpi_rank, dpi=160) 
  • codes/icosagcm/devel/make_python

    r941 r977  
    1313    rm -rf *.o *.so build/ 
    1414} 
    15  
    16 #------------------ Default action , invoked by : './make_python' -------------------- 
    1715 
    1816function make_so() 
     
    3331} 
    3432 
    35  
    36 function cmd_() 
     33function check_python_modules() 
    3734{ 
    38     echo "XIOS_ROOTDIR : $XIOS_ROOTDIR" 
    3935    MISSING="" 
    40     for module in netCDF4 jinja2 mpi4py; do 
     36    for module in $*; do 
    4137        echo "import $module" 
    4238        python -c "import $module" || MISSING="$MISSING $module" 
     
    4945        exit 
    5046    fi 
     47} 
    5148 
    52     log mpicc -c -std=c99 -fPIC $PARMETIS_CFLAGS Python/src/partition.c -o obj/partition.o 
    53     make_so $XIOS_ROOTDIR/lib/libxios.a $LIBDIR/libxios.so "$NETCDF_LDFLAGS -lstdc++" 
    54     make_so $LIBDIR/libicosa.a $LIBDIR/libicosa.so "-L$LIBDIR -lxios $KERNELS_LDFLAGS" "physics_external_mod.o physics_mod.o timeloop_gcm_mod.o icosa_init_mod.o" obj/partition.o 
    55  
    56     # Cythonize Python modules 
    57     cd $DYNAMICO_ROOT/Python/src 
    58     NUMPY=$(python -c 'import numpy as np ; print np.get_include()') 
    59     CYTHONFLAGS="$SOFLAGS $LDFLAGS -L$LIBDIR -licosa $KERNELS_LDFLAGS" 
    60     LDSHARED="$LINK" CFLAGS="-fno-strict-aliasing -O2 -I$NUMPY" LDFLAGS="$CYTHONFLAGS" log python setup.py build_ext --inplace || exit 
    61  
    62     cp -fpr $DYNAMICO_ROOT/Python/dynamico $DYNAMICO_ROOT/lib 
    63     cp -fp *.so $DYNAMICO_ROOT/lib/dynamico/dev/ 
     49function check_dynamico_modules() 
     50{ 
    6451    cd $DYNAMICO_ROOT 
    65  
    66     for module in dev.cxios dev.unstructured meshes dyn time_step DCMIP; do 
     52    for module in $*; do 
    6753        echo "import dynamico.$module" 
    6854        LD_PRELOAD=$PYTHON_PRELOAD python -c "import dynamico.$module" 
    6955    done 
    7056} 
     57 
     58function cythonize() 
     59{ 
     60    EXTRA=$1 
     61    NUMPY=$(python -c 'import numpy as np ; print np.get_include()') 
     62    CYTHONFLAGS="$SOFLAGS $LDFLAGS -L$LIBDIR $KERNELS_LDFLAGS $EXTRA" 
     63    CC=mpicc LDSHARED="$LINK" CFLAGS="-fno-strict-aliasing -O2 -I$NUMPY $PARMETIS_CFLAGS" LDFLAGS="$CYTHONFLAGS" log python setup.py build_ext --inplace || exit 
     64    rm -rf build *.c # temp files 
     65} 
     66 
     67#------------------ Default action , invoked by : './make_python' -------------------- 
     68 
     69function make_user() 
     70{ 
     71    check_python_modules netCDF4 mpi4py 
     72    # Cythonize Python modules 
     73    cd $DYNAMICO_ROOT/Python/dynamico 
     74    cythonize 
     75    rm -rf build *.c # temp files 
     76    cp -fpr $DYNAMICO_ROOT/Python/dynamico $DYNAMICO_ROOT/lib 
     77    check_dynamico_modules partition meshes dyn time_step DCMIP 
     78} 
     79 
     80function make_dev() 
     81{ 
     82    check_python_modules jinja2 
     83    echo "XIOS_ROOTDIR : $XIOS_ROOTDIR" 
     84 
     85    make_so $XIOS_ROOTDIR/lib/libxios.a $LIBDIR/libxios.so "$NETCDF_LDFLAGS -lstdc++" 
     86    make_so $LIBDIR/libicosa.a $LIBDIR/libicosa.so "-L$LIBDIR -lxios $KERNELS_LDFLAGS" "physics_external_mod.o physics_mod.o timeloop_gcm_mod.o icosa_init_mod.o" 
     87 
     88    cd $DYNAMICO_ROOT/Python/dev 
     89    cythonize "-licosa" 
     90    cp -fpr $DYNAMICO_ROOT/Python/dev $DYNAMICO_ROOT/lib/dynamico/ 
     91    check_dynamico_modules dev.cxios dev.unstructured 
     92} 
     93 
     94function cmd_() 
     95{ 
     96    make_user 
     97} 
     98 
     99function cmd_dev() 
     100{ 
     101    make_user 
     102    make_dev 
     103} 
     104 
    71105 
    72106#------------------------- script starts here ------------------------ 
Note: See TracChangeset for help on using the changeset viewer.